提到冗余保護,最容易想到的就是RAID(Redundant Arrays of Independent Disks)。它是一種把多塊獨立的物理硬盤按不同方式組合形成一個硬盤組,以此提供比單個硬盤更高的存儲性能和數(shù)據(jù)冗余的技術。該技術在服務器和存儲陣列產(chǎn)品中廣泛應用。
近年來,隨著固態(tài)硬盤的使用率上升,提升固態(tài)硬盤的性能和可靠性(包括壽命)一直是行業(yè)攻關的重點。RAID技術在固態(tài)硬盤內(nèi)已經(jīng)得到了廣泛應用。關鍵數(shù)據(jù)多副本,可以看作是RAID1保護,用戶數(shù)據(jù)更常見的則是使用性價比較高的RAID5。具體使用什么RAID級別,一般是根據(jù)實際情況進行選擇。DapuStor的HaiShen系列產(chǎn)品就使用RAID5技術為用戶數(shù)據(jù)提供冗余保護,提升可靠性。這里,我們就將盤內(nèi)RAID5技術做一個簡單介紹。
RAID5原理
數(shù)據(jù)按條帶分布在不同位置,比如圖中A1~Ap是一個條帶,B1~Bp是另一個條帶,每個條帶中的一份數(shù)據(jù)(比如A1)叫做條帶單元。每個條帶有一份校驗數(shù)據(jù)(比如Ap),所以我們一般也稱它為N+1的RAID組。RAID5校驗計算通常采用異或(XOR)算法。現(xiàn)在很多主控也提供RAID5計算的硬件加速功能。
盤內(nèi)RAID5條帶布局
為了保證任意時候,一個Block或者DIE損壞,不會導致數(shù)據(jù)丟失。一個RAID5條帶中的每個條帶單元最好是來自不同的Block和不同的DIE。這種我們一般稱為DIE級別的RAID冗余。跟上圖對應,比如A1數(shù)據(jù)在DIE 1的某個Block,A2數(shù)據(jù)在DIE2的某個Block。最直觀的組條帶方式就是每個DIE各選一個Block,然后每個Block的相同Page組成一個條帶。各個Block的Page組成RAID5條帶有下面幾種常見布局:
1)固定DIE的布局
在組成一個RAID組的Block中,使用一個固定DIE的Block存儲校驗(類似傳統(tǒng)的RAID3),但是組成不同RAID組的Block可以不同。
2)旋轉(zhuǎn)布局
組成一個RAID組的Block中,校驗不固定在某個Block上,而是有規(guī)律的旋轉(zhuǎn)變化(RAID5的旋轉(zhuǎn)布局有多種方式,此處只列舉了一種)。
不同的數(shù)據(jù)布局,會產(chǎn)生不同的盤內(nèi)數(shù)據(jù)布局。最直觀的,順序?qū)懞螅樞蜃x,各個DIE或者Block上的壓力模型,在前面提到兩種布局下是不同的。
RAID5數(shù)據(jù)恢復
如果Host 讀某個Nand Page發(fā)生UNC(UNCorrectable)錯誤,這時RAID5恢復的原理是讀這個條帶內(nèi)其他數(shù)據(jù)和校驗數(shù)據(jù),進行計算,得到期望的數(shù)據(jù)。
盤內(nèi)RAID的異常處理
RAID5的數(shù)據(jù)恢復依賴分條的完整性,因為故障可能發(fā)生在任何階段,所以數(shù)據(jù)恢復前必須判斷出校驗的有效性,避免恢復出錯誤數(shù)據(jù)。
典型場景1:某個Nand Block故障時,這個Block已經(jīng)在一個寫完成的條帶上,此時RAID其實處于降級狀態(tài),較優(yōu)的想法是把相關條帶的數(shù)據(jù)重新放到一個健康的條帶或者重建出故障Block的數(shù)據(jù)來替換它。
典型場景2:某個Nand Block 故障時,此時還沒有數(shù)據(jù)寫入,盡量把它從RAID組的Block中剔除,選一個健康的Block替換或者讓當前RAID組從N+1保護轉(zhuǎn)換成(N-1)+1。
典型場景3:一個條帶單元的數(shù)據(jù)寫入Nand 過程中發(fā)生了Program fail,同時另一個位置的讀又遇到UNC,這些場景在DapuStor的HaiShen系列產(chǎn)品中都有專門處理,保障可以恢復出正確數(shù)據(jù)。
因為錯誤可能發(fā)生在任何時刻,所以其他場景這里就不一一列舉。
RAID帶來的影響
1.OP(Over Provisioning)空間降低
引入RAID后,有的Nand空間用于存儲校驗數(shù)據(jù),間接導致用戶數(shù)據(jù)的可用OP空間降低,
因為每個條帶額外寫入了一份校驗數(shù)據(jù),所以整個生命周期的WA會增大。
3.性能影響
前面兩點提到的OP變小,寫放大變大,其實最終也都會表現(xiàn)成對性能的影響。另外,一個直觀感受是順序?qū)懞妥x的過程,因為每個條帶都有一個DIE沒有提供給Host IO服務,所以性能也必定會有影響。
盤內(nèi)冗余技術發(fā)展
RAID5為用戶數(shù)據(jù)提供了N+1級別的冗余保護。隨著盤內(nèi)功能增強,業(yè)務對盤內(nèi)可靠性要求的提高,不同成本和可靠性定位的用戶可能會需要不同冗余保護的級別。技術上還有一些更高級別的冗余保護:
1.RAID6
相比RAID5的N+1,它提供了N+2的保護。對應在SSD產(chǎn)品中,它當然也會帶來更大的OP損耗。
2.EC(Erasure Coding)
現(xiàn)在分布式存儲時代,多備份和EC相比傳統(tǒng)RAID是更廣泛的應用。EC算法提供了N+M的保護級別,可以有更廣闊的選擇空間。
原文標題:盤內(nèi)數(shù)據(jù)冗余保護
文章出處:【微信公眾號:大普微】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
固態(tài)硬盤
+關注
關注
12文章
1442瀏覽量
57220
原文標題:盤內(nèi)數(shù)據(jù)冗余保護
文章出處:【微信號:dputech,微信公眾號:DapuStor】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論