工業級固態硬盤和軍工級固態硬盤必須擁有極高的可靠性。但是,現實中固態硬盤會遭受復雜、苛刻的環境和使用工況,供電偶爾遭遇故障或者失效。遺憾的是,SSD固態硬盤對于這種外部電源的異常掉電的抵抗能力先天不足,異常掉電會造成數據丟失,甚至整個固態硬盤失效。
電源的失效事件包括從瞬態欠壓到長時間完全斷電的情況。這些事件可以因為供電網絡、外置UPS的部件、系統電源(熔斷,線纜故障),或者是在振動、熱量、沖擊等條件下的PCB或者連接頭失效而引起。
睿達硬件級斷電保護功能的SSD
SSD固態硬盤層面的電源失效的風險,部分的決定于安全供電的措施是否完善。電源失效能夠導致系統延遲,甚至永久性的數據丟失。根據睿達研發部門進行的數十萬次主機異常掉電測試發現,目前市面上的各類SSD固態硬盤,根據產品的不同,大約有1/346~1/2000的概率導致SSD固態硬盤系統數據損壞導致無法識別。根據第三方的測試,大約有1/170~1/2000分之一的情況下,丟失系統數據。
對SSD固態硬盤而言,掉電保護比其他設備更加必要。這和SSD固態硬盤的存儲介質——閃存的有很大的關系。當SSD固態硬盤正在對一個Nand閃存的塊進行編程(寫入)時,編程的操作必須完整執行,以確保數據可靠地保存。當正在編程時,SSD固態硬盤的供電出現問題的話,對數據是一種極大的危險,尤其是對MLC介質的SSD固態硬盤。對MLC閃存而言,這種危險是雙重的。
原因有兩個:
一是Nand閃存讀取的最小單位是頁,而擦除的最小單位是塊。當一個新的頁的數據需要寫入時,SSD固態硬盤通常需要將寫入目標頁的"鄰居"讀取到緩存,合并成新的數據進行存儲或者轉存。如果在這個過程當中電源失效,就會有很大的風險。
原因二是因為MLC Nand Flash使用存儲單元的同一個物理頁,來存儲2個邏輯頁的數據。當在對高頁進行編程中電源失效,低頁所存儲的有效數據也會丟失或損壞。通常我們將其稱為"低頁數據損壞"。TLC也是同理。
用戶數據丟失,和主機操作系統—SSD固態硬盤的"通信"方式有關。當主機將數據寫入指令發送給SSD固態硬盤時,這些數據實際還存儲在緩存中。為了追求高性能,SSD將會通知主機操作系統數據已經完整寫入,實際上,數據仍然在處理中。如果此時電源失效,SSD固態硬盤的主控無法在斷電之前完成數據寫到閃存,那么數據將會丟失。之后,當主機請求這些數據時,SSD控制器可以報告這些數據已經"無法恢復"或者提供原有的舊數據給主機。后面這種情況下,主機甚至都不知道數據是不正確的。
02 丟失系統數據SSD固態硬盤為了提高性能,板載Flash之間組成了陣列/RAID的方式在運作,所有的數據都是分散到多片Flash存儲。同時,在每一片Flash中,數據的存儲位置都不是連續的。這些動作,都由SSD固態硬盤控制器中,FTL層操作。所有這些數據的存儲,都會形成一張映射表存儲,以便SSD控制器實現物理LBA地址和主機邏輯LBA地址之間的轉換或翻譯。映射表必須被創建并維護,否則就無法讀取所存儲的數據。而每當新數據寫入時,映射表必須被更新。映射表文件被存儲在SSD固態硬盤的某個區域,輔以比用戶數據更高水平的ECC保護。而映射表數據,在主機斷電時,也難逃厄運。如果斷電時映射表數據丟失,SSD固態硬盤將會表現為數據損壞,返回(損壞的)舊數據,或者徹底的無法識別。
Agrade睿達存儲的異常斷電保護有固件級和硬件級兩類:小容量SSD采用固件級斷電保護,大容量SSD在固件級斷電保護的基礎上增加了硬件級斷電保護功能。硬件級斷電保護需要有獨立的硬件電路,包括應急供電用的電容、用于發現斷電并觸發保護機制的電壓監視控制芯片等。
睿達所有的固態硬盤在設計時都會考慮掉電保護機制,而且要能覆蓋所有可能發生的極端條件,以及保護機制自身不會犯錯,這也是工業級固態硬盤和軍工級固態硬盤區別于其他一般消費類固態硬盤的關鍵因素。