西瓜哥 發(fā)表于:13年08月27日 14:24 [原創(chuàng)] DOIT.com.cn
通過上述大家應該基本掌握了RAID 2.0的原理。今天我們就來聊聊RAID 2.0的可靠性問題。
可靠性是一個非常復雜的問題,我不是這方面的專家,我只是從我收集的資料整理一下分享給大家。
可靠性和性能也經(jīng)常是矛盾的,作為用戶,有時需要平衡,這個是一個藝術(shù)問題,哈,你別不信,看完我今天的分析,估計你也有同感。
我們先從理論上分析一下RAID 2.0的可靠性。
大家知道,系統(tǒng)的可靠性=MTBF / ( MTBF + MTTR ) * 100%
RAID 2.0(3PAR叫FAST RAID),通過把數(shù)據(jù)分散到更多的磁盤,重構(gòu)時間縮短,MTTR應該大大縮小了。但有一個問題,就是針對某一個LUN來說,由于數(shù)據(jù)分散到更多的盤,因此數(shù)據(jù)丟失的風險大大提高,即MTBF變大了。比如我采用傳統(tǒng)的RAID 5(3+1),4個盤同時壞兩個的概率是很小的,但如果用RAID 2.0, 假設這些數(shù)據(jù)分散到100個盤上,100個盤同時壞2個盤的概率大多了。雖然重構(gòu)速度很快,但雙盤失效的概率也提高了。那么到底重構(gòu)減低的風險是否能夠平衡掉雙盤失效帶來的風險呢?(什么,你一直想問這個問題,說明你入道了,很多童鞋是問不出這個問題來的。對RAID不了解的可以找度娘補習一下。老實說,我剛學習RAID 2.0的時候第一個問題就是這個,問了很多人,今天還未能完全解決)。
Markov模型是經(jīng)典的可靠性預計模型,采用Markov模型可以根據(jù)系統(tǒng)當前狀態(tài)及轉(zhuǎn)移條件,來預計系統(tǒng)的可靠性指標。
馬爾科夫是俄羅斯著名的數(shù)學家,計算公式復雜(我很佩服數(shù)學家,這么復雜的計算怎么算出來的),我想大家和我一樣都是俗人,不會自己去算了,對吧。好,我從非官方渠道拿到一份可靠性技術(shù)的白皮書,在這里第一時間分享給大家計算結(jié)果:
我來解讀一下這個結(jié)果。這個結(jié)果說明,從理論上來說,RAID 2.0系統(tǒng)比RAID 1.0系統(tǒng)丟失數(shù)據(jù)的風險要小很多。但是別急,這個是對整個系統(tǒng)來說的。也就是說,針對這個高端陣列的管理員,他覺得不錯,整個系統(tǒng)的可靠性提高了。但針對這個高端陣列的某個最終用戶(比如ERP系統(tǒng)這個應用的IT人員帥鍋小L)來說,好像不是這么回事。小L只關(guān)心ERP的數(shù)據(jù),原來采用RAID 1.0,數(shù)據(jù)存放在5塊盤上,同時壞兩塊盤的概率比地震都小,現(xiàn)在你把小L的數(shù)據(jù)均衡分布到100塊盤上了,小L他晚上能睡著嗎?
我也在尋求這個答案,谷歌和度娘都找不到答案。有可靠性專家和我說,其實,這種情況下RAID 2.0的可靠性并不比RAID 1.0有優(yōu)勢,對于傳統(tǒng)RAID和RAID2.0,發(fā)生數(shù)據(jù)丟失的概率和丟失的數(shù)據(jù)量均近似有“隨著系統(tǒng)盤數(shù)和硬盤容量的增加而成比例增大”(因此,性能夠用就好,西瓜池也不要搞太大了)。雖然出現(xiàn)故障丟失的數(shù)據(jù)量要比RAID 1.0少,這對文件系統(tǒng)和歸檔來說問題不大,但對于數(shù)據(jù)庫來說,丟一點都不行。因此,重構(gòu)速度雖然快了,半小時搞定,但萬一半小時內(nèi)再壞第二塊盤怎么辦?用RAID 10或者RAID 6,或者做容災。對頭,可靠性要匹配你的需求,這個世界上沒有完全可靠的東西,包括愛情,哈。
注意:上面的分析沒有考慮RAID 1.0重構(gòu)負載重可能導致的加快硬盤過勞死的風險,因為這個沒法算。
RAID 10和RAID 6哪個更可靠?
大家知道,RAID 6最多可以壞任意兩塊盤數(shù)據(jù)不丟失,RAID 10可能壞一半的盤數(shù)據(jù)也可能不會丟失。那個的可靠性高?我估計80%以上的人認為是RAID 10可靠,如果你也是這么認為的,請馬上回復微信告訴我,我看看我的判斷對不對。其實我也和你們一樣,我一直認為RAID 10更可靠,直到某天一個可靠性專家給我一份材料,IBM的紅皮書,圣經(jīng)啊。在IBM的一本DS5000的紅皮書里,IBM經(jīng)過計算,結(jié)論就是RAID 6的可靠性最高,其次才是RAID 10,最差是RAID 5。
但你知道為什么現(xiàn)在無數(shù)的數(shù)據(jù)庫都推薦用RAID 10了嗎?因為性能。RAID 10的讀寫性能好很多。我說性能和可靠性的平衡是一個藝術(shù),這回你相信了吧?
網(wǎng)上一直有傳說說IBM XIV容易丟數(shù)據(jù),我一直不信,現(xiàn)在想想,信了。為什么呢?它全部用SATA盤(現(xiàn)在它也叫SAS盤,其實是假的,是NL-SAS,也就是SAS接口,SATA的盤體),采用偽隨機算法把數(shù)據(jù)以1M大小的CHUNK平均分布到所有的磁盤上。SATA盤的可靠性本來就比較差,你分布到180塊盤,就算你重構(gòu)速度塊,同時壞2塊盤必然會造成數(shù)據(jù)丟失(因為肯定有某1個CHUNK就在這兩塊盤上)。
對于RAID 2.0來說,已經(jīng)好多了,RAID可以選擇RAID 6。對于傳統(tǒng)的高端陣列廠商IBM DS8000/EMC/HDS,他們由于歷史原因,底層代碼不能變,還是用傳統(tǒng)的RAID,但為了實現(xiàn)自動分層和性能不變,必須要直接切第二刀Extend,對不對? 但在這種RAID 1.5的改良對可靠性更加是個噩夢,我們來欣賞一下IBM DS8000的紅皮書里面的描述:
看到?jīng)]有,由于DS8000的第二到必須在存儲池里面切,而這個存儲池底層是由多個傳統(tǒng)的RAID組(RANK)組成,因此,如果一個RAID組失效,一個池的數(shù)據(jù)都丟失了。因此,你害怕丟失,請容災。為了控制這個,我記得DS8000一個pool下最多放4個RAID組,而HDS直接建議用RAID 6。你看看,RAID 1.5限制是否很多,RAID 2.0真正從底層解決這些問題就好多了。再一次說明,可靠性和性能功能的平衡,真是一個藝術(shù)活。
最后,我們再談一下重構(gòu)時間。
先說一下我收集到的各個廠商宣傳的數(shù)據(jù):
HW:1TB重構(gòu)時間30分鐘,比傳統(tǒng)RAID需要10個小時快20倍;
IBM XIV:1TB重構(gòu)時間30分鐘;
3PAR:在老的膠片上寫的是重構(gòu)速度快2倍;
我喜歡刨根問底,我們來分析一下:大家知道,7200RPM的SATA盤寫的帶寬大約115MB/s,因此,如果采用RAID 1.0,理論上需要2.5小時寫1TB的數(shù)據(jù)。因為重構(gòu)的時候只能寫一個熱備盤,這是瓶頸。但一般的系統(tǒng)都是有負載的,重構(gòu)的優(yōu)先級一般都是最低的,因為用戶要保證業(yè)務的運行,因此,一般的重構(gòu)時間基本都是理論時間的2-5倍。因此,如果RAID 2.0參與的盤很多,那個30分鐘是可以達到的。而如果傳統(tǒng)的RAID 1.0有較高的負載,重構(gòu)需要10個小時也是正常的。因此,HW的宣傳雖然稍微有點夸大,但基本屬實。最關(guān)鍵就是RAID 2.0重構(gòu)的時候?qū)I(yè)務基本沒有影響,因為沒有熱點盤。而RAID 1.0重構(gòu),對業(yè)務的影響是巨大的,反過來也影響到重構(gòu)的速度。
為了驗證我的想法,我再從互聯(lián)網(wǎng)上找一下3PAR的用戶發(fā)布的重構(gòu)數(shù)據(jù)。
https://storagemojo.com/2010/02/27/does-raid-6-stops-working-in-2019/
這個用戶分享了采用3PAR的fast RAID,SATA盤重構(gòu)時間只化了4分鐘(這個發(fā)揮了RAID 2.0的最大好處,只重構(gòu)用過的CHUNK,而不用整盤重構(gòu),估計數(shù)據(jù)量比較。瓉聿捎美系年嚵,重構(gòu)時間是24小時(SATA盤)和4-6小時(FC盤)。我也看到另外一個用戶說說他采用3PAR的陣列,重構(gòu)750GB的數(shù)據(jù)用了3個小時(業(yè)務負載特別重),不過對業(yè)務性能沒有任何影響(怪不到3PAR宣稱它是唯一一個可以在業(yè)務期間換盤的高端存儲廠商,不過現(xiàn)在HW HVS把它的唯一去掉了,呵呵)。這說明重構(gòu)時間也是一個藝術(shù)活,和數(shù)據(jù)量和業(yè)務負載,硬件特性等等都有關(guān)系。
最后分享一個我想了很長時間才想明白的事情,為什么RAID 2.0的重構(gòu)的總數(shù)據(jù)量少?RAID 1.0也不是全盤重構(gòu)的?(我估計你們肯定也想不明白)。后來在我上周苦練切西瓜刀法后恍然大悟,RAID 1.0能夠感知的是LUN,也就是說,從一個RAID組里劃分出LUN后,雖然主機還沒有寫任何東西,但是系統(tǒng)不知道,因此重構(gòu)的時候都重構(gòu)了,一般陣列初始化的時候,肯定把LUN都劃了,因此相當于整盤重構(gòu)了。但RAID 2.0劃分為CHUNK,每個CHUNK上都有標簽,沒有分配的CHUNK,或者分配了沒有被寫過的CHUNK系統(tǒng)都清楚,當然只會重構(gòu)有數(shù)據(jù)的CHUNK了,而不是整個LUN。
最后問大家一個問題,采用哪種RAID級別,RAID 2.0相比RAID 1.0重構(gòu)時間提升最大?哈哈,RAID 10。假設不考慮做奇偶校驗的時間,所有的RAID 1.0的重構(gòu)時間是一樣的,因為只能同時寫1塊熱備盤,瓶頸在熱備盤上。但采用RAID 2.0后,瓶頸不在寫盤上了,RAID 5和RAID 6多了很多讀數(shù)據(jù)的動作,而RAID 10就不用了,因此重構(gòu)的速度提升是最明顯的。
通過這些分析,大家估計得出的結(jié)論和我一樣,RAID 2.0確實是一個顛覆性的技術(shù),優(yōu)點很多,而且有出色的性能和不遜于傳統(tǒng)RAID的可靠性(帶來業(yè)務的靈活性我們后面還會談到),并且業(yè)界采用了十幾年(3PAR 1999年就用了),應該是一個經(jīng)過市場檢驗的RAID方法,應該也是高端存儲以后的發(fā)展方向。
希望大家積極反饋你的意見和建議,微信掃描如下二維碼,關(guān)注微信公眾號“高端存儲知識”,與作者微信互動。