經常聽到一種講法,因為單個磁碟的速度是有限的,因此為了提升響應時間,一直有種技技術流派是說資料打散到儘可能多的磁碟裡面,這樣得到更好的效能。有很多產品一直沿著這個思路做。
 
1 一種思路是對於一些較為新興的產品,對於每個lun不再對於固定的磁碟,比如HP的eva,還有現在的3par和ibm的XIV,這些儲存是純粹的lun一層虛擬分散
 
2 另外也有一些歷史悠久的儲存廠商,由於底層RAID上面已經有了千錘百煉的微碼,因此在lun一層上面再做一些文章,比如EMC有個meta. lun技術,HDS在ldev一層上面推出了thin provision的HDP技術,其本質是把已經做好的lun再放到一個disk pool裡面再做打散,其目的也是為了得到更加好的效能。但是請注意,對於EMC、HDS這樣的頂級儲存廠商來說,不是說所有的應用都推薦採用底層資料打散的RAID機制的,要看應用特點而定。
 
3 當然還有一些其他的方法,比如LVM層面做stripe,或者鼎鼎大名又非常貴的storage foundation,或者現在oracle新推出來的ASM,個人認為ASM已經越練越強大,估計以後用sotrage foundation的會越來越少,所以現在storage foundatin也便宜好多了(賽盟鐵殼的兄弟不要扔我磚頭哈)
 
從一個古老的故事講起。說花果山有500只猴子要參加孫大聖晉升齊天大聖的大會,找了裁縫做了500件衣服,臨走的時候發現少了500件衣服只有499件是完整的,有一件差了一個袖子,怎麼辦呢。大家都著急的時候,有一個聰明的猴子(權且叫猴子B吧)就說了,不急不急,讓其他猴子的衣服借一個袖子給那個少袖子的猴子(權且叫猴子A吧),那猴子A就說你給我了袖子,那其他猴子的衣服怎麼辦了,聰明的猴子B說沒有關係,我們有那麼多衣服,可以那其他的衣服的袖子來補啊。大家覺得是個好主意,有那麼多袖子可以補啊,怕什麼呢。。。。可惜猴子高興沒有多久,最後發現不管怎麼補…最後還是差了一個袖子….
 
羅羅嗦嗦講了這個故事,想說明的是,其實在底層把資料打散是一個看上去很美的想法,往往卻不一定有效果。為什麼這麼說呢,因為對於一個應用來說,它的資料分散到更多磁碟,效能是好了,但是這個磁碟往往分佈了不止一個磁碟的資料,當有多個應用都要同一個磁碟的資料時時往往就會互相影響。因為畢竟磁碟數量是有限的,而且單個磁碟一個時隙是隻能響應一個IO再尋道響應其他IO,而且對於sequencial IO來說,打得太散反而不利於sequential IO的預讀操作(被其他應用的IO打擾了,去響應其他的IO需求去了)。就像猴子借袖子一樣,如果你整個磁碟數量不足以滿足應用需求,怎麼打散怎麼借,總是不夠的。
 
當然如果有人說我可以把整個儲存器只對應一個應用,不惜浪費空間,那是另外一個話題了,那傳統的RAID也可以這樣,每個磁碟只使用外圈最快的部分…效能也很好的。
 
結論:不要過於迷信所謂打得越散資料效能就一定很好。對於不同IO特點的資料塊,最好是分開。而且不同的關鍵性的應用最好分在不同的儲存池裡面。對於同一一個應用,不同資料段比如sequential IO操作的和隨機操作的段當然應該分開。混在一起只有互相影響的。當然在一個應用的同一型別的資料段,打散是有好處的。
 
另外而且從資料安全性來講,萬一發生了災難性故障(假設你背到家了,比如多塊磁碟同時壞了),完全虛擬化的儲存器往往就是滅頂之災(資料全丟了),而傳統的RAID至少可以確定到底是哪些資料丟了。
 
這就像前陣子流行過一個公司叫PPG,號稱全網路經營,除了創意和財務等核心部分外,其他所有部分(製造、原料)都外包,當時勢頭很猛,號稱要衝擊國內第一品牌雅戈爾幾十年的基業,可惜後來問題不斷,最後投資人都逃跑了。其實他的模式也是完全虛擬化打散化,完全的虛擬和打散往往就意味著無法控制,如果做大了,在質量控制等方面肯定無法做到和有專賣場、成衣廠的傳統廠商比美。商業上如此,儲存器設計上同樣。在多業務系統資料集中環境下完全底層打散虛擬,都不知道資料到底在那一塊磁碟去了是有危險的,至少我不推薦。
 
最後談到一個古老的產品。談到儲存底層lun級別虛擬化,見過不少的廠商的產品,HP EVA、IBM XIV, 3PAR等等,但是其實這些理念個人認為理念上都不算最先進,最先進的反而是2000年初HP生產的一款儲存裝置叫auto raid,第一個版本是scsi的,後來改成光纖介面更名叫VA,包括VA7100/7400/7110/7410,本來還有更多的比如7600等還沒有來得及釋出,就隨著HP收購compaq,採用原DEC的EVA系列後,把整個VA的產品線都停止了(很可惜哦)。
 
為什麼說他的概念是我最為推薦的呢,VA的思路即使是現在看起來(請注意老HP十多年前就有了成熟的上市產品哦)都是相當超前的(比EVA/XIV/3PAR領先不知道多少),原因如下:
 
1 VA底層也是完全虛擬的(這一點現在的產品也是一樣)
2 VA裡面的資料有兩種RAID方式,一種是VRAID 1+0,一種是VRAID 6,(請注意絕大多數VRAID廠商還沒有能夠推出成熟的VRAID 6的技術,即使有也是剛剛推出)
3 你的資料到底是存VRAID 1+0還是VRAID 6不是使用者自己能夠控制的,VA會自動根據讀寫的頻率來把你的資料做自動擺放(這點好象沒有產品這麼做)
4 當年pool裡面的空間使用率不到50%時,所有資料都是VRAID 1+0最高效能
5 這麼多牛x的思路(還有更多不做敘述了)請注意HP公司在2000年左右就能做出成品,並且還做了幾代,牛x把……要知道10年前我可是弄了好久才明白VA的偉大思路,當時給我的震撼那可是“相當的大”(模仿宋丹丹的口氣),所以俺看現在所有的所謂虛擬化產品都覺得不過爾爾了
估計有看官要說了,這麼牛x的產品為什麼HP不繼續堅持下去了,反而在收購compaq以後採用EVA呢(實話說EVA口碑、效能也都不見得特別的好),原因是…………………………
 
原因就是儘管設計理念出色,但是效能卻實在是不怎麼地,應該說是實在是太差(這款產品反正已經停產多年了,HP的fans請不要扔磚頭哈)。而且問題多多經常還是莫名其妙的問題,我還能回憶起經常有HP的技術人員很狼狽地在使用者那邊解釋道歉,賣的時候講得天花亂墜,哪能想到這麼多問題呢…那麼問題出在哪裡呢…
 
有幾個地方是VA的致命傷:
1 演算法實在過於複雜,虛擬得一塌糊塗,搞得磁碟陣列在應用忙和不忙的時候磁碟燈都在亂閃(在不停地打散啊,特別是新加了磁碟後繼續打散),我的乖乖
2 VA是一個雙控制器的儲存,就像現在的EVA/CX/DS4000的設計理念一樣是雙控制器,雙控制而不像HDS USP/EMC Symmetrix那樣是多處理器晶片,也就意味著控制器的處理能力是有限的,試想本身要響應主機IO就那麼忙了,還要底層RAID保護那麼多亂七八糟的活要幹,不累才怪呢…
 
因此再次向有偉大設計理念的VA致敬,你辛苦了,確實該好好休息了,或者說永遠地休息了…
 
借用股市一句話:底層RAID完全虛擬化有風險,使用請謹慎….