快科技 6 月 29 日消息,如今的 SSD 容量越做越大,企業級 SSD 容量已達 30TB、60TB 的、甚至 120TB。但 SSD 壽命一直是 " 緻命傷 ",越大容量的盤,出現故障後,丢失的數據就越多。
近日, 華爲數據存儲發文,揭開華爲全閃分布式存儲讓 SSD 大盤更 " 長壽 " 的秘訣。
首先,爲什麽 SSD 會有壽命問題?
SSD 閃存實際是由半導體元件、NAND Flash 顆粒組成。通過對盤上顆粒不斷的擦和寫,來完成對數據的增、删、改、查。
這個過程中,顆粒捕獲電子的能力會逐漸減弱,當減弱到一定程度後、也就是超過顆粒最大擦寫次數,便可能出現 " 電子逃逸 " 現象,也就是硬盤寫穿、數據錯誤、壽命耗盡。
盤上全部顆粒可支持的總擦寫次數 和 使用期間用戶寫入的數據量。隻要後者小于前者,那麽就能保證壽命無憂!
因此,下面這個公式就能一目了然:
所以,想延長 SSD 壽命,就要減少 " 寫放大 "。
爲了降低分母,就要減少罪魁禍首—— " 寫放大 "。寫放大的意思是,比如,在寫入 16KB 的業務數據時,呈現到盤上卻變成寫入 64KB 物理數據量,被放大了,消耗了數倍的擦寫次數,加速顆粒老化。" 寫放大 " 的源頭來自于以下三點:
後台垃圾回收
SSD 是無法覆蓋寫的,要想修改數據必須擦除顆粒、重新寫入,Block 就是擦除的最小單元。當少量數據修改時, SSD 就會将原 Block 上的全部有效數據讀取後,寫入新的 Block 位置,再擦除原 Block。
這個過程,就像整理房間一樣,要先把老房間的東西全部搬出來,再放到新房間裏重新布置。換句話說,少量的數據更新,會引發更大面積顆粒的擦寫。
小 I/O 補齊
SSD 可讀寫的最小單元是 Page(一般是 512 個 byte)。在用戶層面寫入數據時,當用戶寫入的 I/O 大小不足一個 Page 容量,爲了能管理它,就需要額外尋找另一份數據,來和原數據拼湊成一整個 Page 的大小,再寫入到顆粒中。" 這個不夠、别的來湊 ",這用來湊齊的無效數據,就會造成寫放大。
元數據變化
在 SSD 上,元數據是描述數據的索引,一般緊密地存放在一些 Block 區域。當用戶在頻繁修改數據時,對應的每份元數據也必須跟着被修改、重定向,造成多次讀寫、擦寫,牽一發而動全身。
華爲 OceanStor Pacific 分布式存儲采用了一個創新的機制——小 I/O 聚合,将小 I/O 在寫盤前聚合在保電内存中,隻有達到一定粒度後才會寫入 SSD,消除了小 I/O 補齊導緻的寫放大。
這對元數據變化也非常友好。聚合後的小 I/O 更容易被集中修改,極大減少元數據被頻繁擦寫的概率。
同時,華爲還采用了業界獨創的多流技術,即智能識别數據的冷熱程度并優化數據布局,減少不必要的重複擦寫和數據搬移。
除了分母,也要增大分子。華爲是采用額外的編碼糾錯技術,在達到顆粒的标稱擦寫次數後,對數據持續校驗或修正,徹底避免數據錯誤、業務出錯,變相地增大了顆粒的總擦寫次數。
華爲開發了一套更加強大的組合拳—— LDPC(Low Density Parity Check)算法與 SmartFSP 3.0 算法,一方面對 Flash 介質進行監測,尋找更精确的讀取電位,另一方面保證高性能的校驗糾錯性能,提供更加精準的盤内冗餘糾錯精度。
一個糾得正,一個查得準,二者配合,華爲就将 SSD 數據的誤碼率從 10-17 降低至 10-18,整整降低一個數量級,延長 30~50% 的 SSD 壽命。