8月19日消息,在通常的分布式存儲中,當(dāng)系統(tǒng)檢測到硬盤故障時,系統(tǒng)會采用EC(Erasure Coding)糾刪碼等冗余校驗手段,利用其余節(jié)點上的正常硬盤、正常數(shù)據(jù),在后臺跨節(jié)點地將整塊硬盤的故障數(shù)據(jù)重構(gòu)出來。
然而,隨著SSD容量逐步增大,大盤需要重構(gòu)的數(shù)據(jù)量翻了4~8倍、耗費時長也等比例上升。
在這個漫長的重構(gòu)周期里,不僅擠占25%存儲帶寬、影響業(yè)務(wù)性能,且更致命的是,系統(tǒng)將處于可靠性降級狀態(tài),數(shù)據(jù)將會面臨隨時丟失。
今天,華為介紹了全閃分布式存儲,對SSD的故障域?qū)嵤┚植扛綦x,盡可能避免原先的大范圍的整盤重構(gòu)。
針對盤內(nèi)DDR的失效,華為創(chuàng)新地采用TRR(Tiny Region Reconstruction,最小范圍重構(gòu))算法,通過盤控深度配合,精準(zhǔn)識別并上報失效區(qū)域所映射的邏輯地址,然后通知存儲系統(tǒng),對受影響的局部數(shù)據(jù)進行屏蔽。
這個過程,就像在硬盤上“精密鏤刻”一樣,然后在新的位置精準(zhǔn)重構(gòu)出這一小部分?jǐn)?shù)據(jù)。這,就避免了過去動輒整盤重構(gòu),讓其余正常數(shù)據(jù)“免遭牽連”,減少了數(shù)百倍的重構(gòu)數(shù)據(jù)量,整個過程幾分鐘就能搞定。
針對NAND Flash的失效,華為也采用自研的“盤內(nèi)RAID算法”,對盤上所有數(shù)據(jù)以Die為單位,建立RAID組冗余校驗。我們將故障范圍精準(zhǔn)縮小到Die級,利用其余正常的Die、通過盤內(nèi)計算引擎恢復(fù)出正確的數(shù)據(jù)。
這項技術(shù)的厲害之處在于,這個過程可以不斷重復(fù),允許Die一個接一個地失效,持續(xù)縮列、甚至縮容而不丟失任何數(shù)據(jù)。這個操作完全發(fā)生在SSD盤內(nèi),上層存儲系統(tǒng)那個“大佬”根本無需插手,完全不知道底下這么熱鬧。
假如遇上多個Die同時失效、或者整個顆粒失效的極端情況,那SSD單盤就兜不住了,但系統(tǒng)自然也有備而來。存儲系統(tǒng)會立刻啟動TRR算法,進行局部數(shù)據(jù)的“鏤刻”和“填坑”,做到精準(zhǔn)屏蔽、并進行計劃性預(yù)拷貝重構(gòu)。