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