我的答案是:不盡然,要看具體的需求。如果你對速度的要求兩者都可以滿足,而又希望安全準時的長途運送貨物,那么既便馬車跑得更快些,也不是好的選擇。畢竟打劫馬車比打劫火車要容易得多嘛!
  
    也許打劫的例子實在離題太遠,我們還是回到存儲產(chǎn)品的討論上,走進那些五花八門的指數(shù)背后,去看看性能的真實面目。
  
    帶寬與I/O
  
    這是兩個衡量存儲設(shè)備性能最基本的概念,明確的區(qū)分兩者也是對存儲產(chǎn)品性能了解的第一步。如果我們把存儲設(shè)備比做一間會議室,被存取的數(shù)據(jù)就是前來參加會議或從會議中離開的人,那么帶寬性能就是指這間會議室大門的寬度,大門越寬,可以同時進出的人也就越多,而I/O性能是指房門開合的頻繁程度,迎來一批前來參加會議的人,就需要打開一次大門,送走一批人也是一樣,哪怕這“一批人”其實只是一個人。由此可見,當我們考察會議室的門設(shè)計得是否合理時,必須結(jié)合會議本身的性質(zhì)。
  
    對紀律嚴明的會議來說,與會者輕易不會凌亂的進出會場,人們在會議開始時統(tǒng)一進入,結(jié)束時再統(tǒng)一離開。對這種情況,門的寬度就十分重要,而是否易于開合則顯得不那么關(guān)鍵,反正這扇門在整個會議中只需要開合兩次而已。相反的,對于聯(lián)歡性質(zhì)的聚會而言,門設(shè)計得太寬除了顯得氣派之外,并沒有什么實際的意義,但是門開合的頻率卻很重要,因為會有客人頻繁的進進出出。
  
    對應(yīng)到存儲設(shè)備上,道理也是一樣。大文件持續(xù)傳輸型的應(yīng)用需要的是充分的帶寬性能,而小文件隨即讀寫的應(yīng)用則要求足夠的I/O能力。那么多大的文件算“大文件”呢?一般而言,超過1MB大小的文件就可以算做“大文件”了。如果您的應(yīng)用系統(tǒng)處理的資料中,最小的文件也有4~5MB甚至幾十MB,就需要重點考察存儲系統(tǒng)的帶寬性能了。如果您的應(yīng)用是數(shù)據(jù)庫形式,或是電子郵件系統(tǒng),系統(tǒng)中有大量KB級大小的文件,那么就可以忽略掉產(chǎn)品介紹中xxx MB/s的字樣,重點關(guān)心xxx IOPS就可以了。
  
    影響性能的因素
  
    當然,僅看產(chǎn)品彩頁中的簡單數(shù)字還是遠遠不夠的。存儲設(shè)備的標稱指數(shù)只是其最最理想情況下的表現(xiàn),而實際應(yīng)用中,存儲設(shè)備表現(xiàn)出的處理能力往往與其標稱指數(shù)相去甚遠。為了反映更多的細節(jié),會議室的比喻不足以說明問題。所以我們前面的例子再改進一下,把存儲設(shè)備看作一棟有很多房間的大廈。人們從門口進入大廈,先來到大堂,經(jīng)過走廊,最后到達房間。人們進大廈的方式也分為兩種:一種是所有人按房間號碼順序排好隊,一起進入大廈,我們稱之為“順序進入”;另一種是他們無規(guī)律的自由進入,我們稱為“隨即進入”。
  
    顯而易見,“順序進入”的效率要大大高于“隨即進入”。這就說明,一般情況下,順序讀寫的性能要遠高于隨即讀寫的性能。還有一個結(jié)論也不難得出,一個寬敞的大堂更有利于偶然性較大的“隨機進入”,而對“順序進入”的人群而言,經(jīng)過大堂基本屬于浪費時間。存儲設(shè)備中的“大堂”就是高速緩存。也就是說,大容量高速緩存可以提高隨機讀寫性能,而對順序讀寫的性能改進則不明顯。
  
    還記得前面討論的帶寬和I/O的差別嗎?帶寬考察的是單位時間進入大廈的人數(shù),而I/O關(guān)心的是單位時間進出大廈的批次。從次可見,如果走廊沒有任何變化,那么大堂只要不是太小,就不會影響帶寬性能。相對的,對I/O性能而言,大堂顯然是越大越好??傊?,影響帶寬的因素主要是前端控制器(大門)和后端磁盤通道(走廊)的帶寬;而影響I/O的因素主要是控制器(大門)處理能力和高速緩存(大堂)容量。
  
    當然,前面的討論都基于一個假設(shè)前提:磁盤(房間)足夠多。如若只配置寥寥幾個磁盤,它們就會成為整個系統(tǒng)的性能瓶頸。任憑其他配置如何奢華,也于事無補。那么,“足夠多”又是多少呢?對光纖通道存儲設(shè)備來說,每個光纖通道上的磁盤數(shù)量達到50~60個的時候性能達到最佳。所以一般中高端存儲設(shè)備都把每通道50~60個磁盤設(shè)計為擴展極限,而不是光纖通道技術(shù)規(guī)定的126個。



圖1. 磁盤數(shù)量影響光纖環(huán)路性能


    這樣設(shè)計存儲產(chǎn)品,可以讓系統(tǒng)的性能隨著容量的增加而增長。但是同時,用戶必須明白,在容量沒有配置到最大值的時候,性能就無法達到廠商所宣稱的指標。一些廠商還聲明其產(chǎn)品的性能可以隨著容量的增長而線性增長,按這樣講,當你的存儲設(shè)備只配置了最大容量的一半時,你得到的性能也只有系統(tǒng)最佳性能的一半。
  
    性能曲線
  
    這里所說的“最佳性能”就是廠商所宣稱的指數(shù)嗎?很遺憾,答案是不一定,一般都不是,而且可能會相差很遠!我已經(jīng)聽到有人在叫“天啊!那廠商公布的數(shù)字到底有什么意義啊?!眲e急,看到下面兩個圖示就清楚了。



圖2. IOPS性能曲線示例



圖3. 帶寬性能示例


    這兩個圖示是典型的存儲設(shè)備性能實測曲線,所有曲線來自同一個存儲設(shè)備的同一個配置。不同產(chǎn)品在縱向指標上表現(xiàn)各異,但曲線的形狀都大體相同。從圖上可以看出,用戶環(huán)境中存儲設(shè)備的性能表現(xiàn)嚴重依賴數(shù)據(jù)塊的大小。以順序讀取操作為例,如果應(yīng)用產(chǎn)生的數(shù)據(jù)塊大小在8KB左右,那么帶寬性能和I/O性能最多也只能達到峰值性能的一半左右。如果希望得到更好的I/O性能,就需要盡量將數(shù)據(jù)塊調(diào)整得更小。但不幸的是,如果希望帶寬性能更好,就需要想辦法把數(shù)據(jù)塊設(shè)置得更大。看來,帶寬與I/O性能是魚與熊掌,難以兼得啦。


    不過沒關(guān)系,如我們前面提到的,幸好大多數(shù)用戶其實只需要其中一種性能。要么是大文件類型的應(yīng)用,需要帶寬性能;抑或是小文件類型應(yīng)用,需要I/O能力。需要帶寬的用戶相對容易得到滿足。從圖3可以看出,只要數(shù)據(jù)塊大于128KB,順序讀的性能就基本可以達到系統(tǒng)飽和值。對順序?qū)?,飽和?shù)據(jù)塊略大一些,但256KB也不算難以達到的尺寸。


    得到最佳的I/O性能似乎就沒那么容易了。從圖2的曲線來看,I/O性能并沒有一個飽和狀態(tài),這就要求數(shù)據(jù)塊無窮盡的盡量小。然而所有應(yīng)用都不可能支持無窮小的數(shù)據(jù)塊。實際上,大多數(shù)的數(shù)據(jù)庫應(yīng)用產(chǎn)生的數(shù)據(jù)塊都在2KB或4KB左右。在這個尺度上,應(yīng)用得到的性能距離最高性能還有至少20~30%的空間呢。
  
    持續(xù)和突發(fā)
  
    回到我們那個關(guān)于大廈的例子。如果大廈臨時發(fā)生緊急情況,比如火災(zāi),人們爭先恐后的蜂擁在門口,景象一定是一片混亂。在實際應(yīng)用中,存儲系統(tǒng)也可能遭遇類似的情況,一時間大量數(shù)據(jù)同時被訪問,造成系統(tǒng)嚴重堵塞。這就像存儲系統(tǒng)內(nèi)的交通高峰,往往需要類似交通管制的手段才能提高系統(tǒng)效率。一些廠商會宣稱他們的產(chǎn)品在這種情況下的“交通管制”能力有多強,以致可以從容應(yīng)付大規(guī)模的突發(fā)訪問。諸如“全交換結(jié)構(gòu)”、“直接矩陣結(jié)構(gòu)”等技術(shù)均屬此類。究其本質(zhì),這些“交通管制”都是在大堂(高速緩存)的設(shè)計上做文章,將原本一個公共大堂的結(jié)構(gòu)變成若干獨立大堂的結(jié)構(gòu)。以此來避免火災(zāi)發(fā)生時,所有人都擁擠到一個大堂里。
  
    這樣設(shè)計的確可在訪問突然爆發(fā)時緩解系統(tǒng)壓力,但是需要注意,這樣設(shè)計的大廈內(nèi)部一定布滿了各種指示牌和路標,對任何一個進入大廈的人而言,進入房間的過程都將變得更復(fù)雜。其結(jié)果就是,非突發(fā)狀態(tài)下,系統(tǒng)的持續(xù)讀寫能力往往還不如同等計算能力的簡單結(jié)構(gòu)存儲。
  
    其他影響
  
    除了前面所談到諸多方面外,還有很多因素都會影響到存儲設(shè)備在實際運行中的性能。例如RAID級別的設(shè)置、磁盤類型甚至型號批次的匹配、緩存的鏡像、SCSI指令隊列深度的設(shè)置,這些方面都與性能結(jié)果直接相關(guān)。而且,為了能夠得到最好的性能指數(shù),幾乎所有的廠商在測試自己產(chǎn)品性能的時候都會采用無冗余的RAID0、選用15k rpm的高速磁盤、將寫緩存鏡像保護關(guān)閉或者干脆關(guān)閉寫緩存、將指令隊列深度設(shè)置為最大。如此配置方式相信不是每個用戶都可以接受的。
  
    另外,所有存儲設(shè)備在運行快照或遠程鏡像等附加功能之后,性能都會明顯下降,有些情況甚至?xí)陆?0%之多。如果用戶的應(yīng)用恰巧需要這些附加功能,就需要在選用存儲設(shè)備之前認真的實地測量一下真實性能。免得滿懷希望的買回家,使用起來卻失望至極。
  
    這樣的例子其實并不少見,記得我國某大型鐵路局的某重要系統(tǒng)就曾經(jīng)有過這樣的失望經(jīng)歷。那時某國外知名廠商的一款中端存儲設(shè)備剛剛下線,號稱是全球第一款可以支持遠程容災(zāi)的中端存儲產(chǎn)品。正值鐵路系統(tǒng)整體調(diào)整,該單位認為這款產(chǎn)品即可以實現(xiàn)遠程容災(zāi)的功能,又只有中端產(chǎn)品的價格,是個性能價格比很高的產(chǎn)品。但是采購之后才發(fā)現(xiàn),這款產(chǎn)品作為普通存儲設(shè)備時,性能還可以應(yīng)付系統(tǒng)壓力,但是啟動遠程數(shù)據(jù)鏡像之后,性能下降到原來的三分之一,完全無法滿足系統(tǒng)需求。幾經(jīng)努力都失敗之后,用戶只好放棄了這個雞肋,而為此付出的軟硬件投資也付之東流。
  
    結(jié)論和建議
  
    想要知道梨子的滋味,最好的辦法就是親自嘗一嘗。對存儲設(shè)備,這個道理尤其重要。只有在用戶需要的配置方式下,在實際的應(yīng)用系統(tǒng)中,實實在在的運行之后,用戶才能真正清楚的感知存儲設(shè)備的真實性能表現(xiàn)。紙上談兵只怕會使用戶在各種數(shù)據(jù)中迷失方向,難以做出正確結(jié)論。


    本文版權(quán)歸作者及DoSTOR所有,如需轉(zhuǎn)載請聯(lián)系:editor@dostor.com

分享到

多易

相關(guān)推薦