固態硬碟掉電保護的原理及測試方法

storlead發表於2021-03-25

前言

固態硬碟由於必須使用 FTL 做邏輯地址和實體地址之間的轉換,如果在 SSD 讀、寫、刪除等正常工作的情況下出現異常掉電,有可能會導致 mapping table 的因為來不及更新而丟失,從而出現 SSD 無法被系統識別的故障。

 

同時,為了提升讀寫效能,通常使用 SDRAM 做快取,如果在讀寫過程中遭遇異常掉電, SDRAM 中的資料可能來不及寫進 Nand Flash 導致資料丟失,或者更新的對映表來不及寫進 Nand Flash 導致對映表丟失。


異常掉電導致的故障現象

 

SSD 異常掉電通常會出現三種故障現象:

 

1 SSD 無法重現被系統識別,需要重新構建對映表或者透過簡單粗暴的方式重新量產方可使用;

2 、多次掉電後, SSD 出現大量的 新增壞塊

出現新增壞塊的背後機理是:當 SSD 對某些 Block 進行讀取、寫入或者擦除不成功時,會被標識為壞塊,當然,這些塊並非真正的壞塊,僅僅是因為異常掉電導致的錯誤判斷。

3 SDRAM 中資料丟失;

 

常見掉電保護機制

 

每家對掉電保護的機制理解不同,面向的使用者不同,保護機制也完全不同,一般會有下面兩種做法:

 

1 、儲存 SDRAM 中所有資料

 

異常掉電後, SDRAM 中所有資料必須完全寫入 Nand Flash ,一般而言, SDRAM 的容量設定為 SSD 裸容量的千分之一,對於小容量 SSD 來說, SDRAM 中需要寫入 Nand Flash 的資料比較少,透過超級電容或者鉭電容可以實現資料繼續寫入。但是,如果 SSD 容量足夠大的時候,例如 :8TB, 那麼, SDRAM 中需要寫入 Nand Flash 的資料將會非常大,如果依然靠超級電容或者鉭電容來做供電,必然會面臨下面三個棘手的問題:

 

a 、需要更多的鉭電容顆粒來做防護,在實際的工程實踐中,這是一項非常嚴峻的考驗,工程師面對的是厚度、標準尺寸的限制, PCB 的面積並不足夠使用;

b 、即使有足夠的電容來做防護,當執行 重新啟動 時, SSD 將無法正常啟動,必須先關機一段時間後才能重新啟動,原因是: SSD 需要將鉭電容中所有電放完後才能被識別;

c 、當使用幾年後,鉭電容或者超級電容出現老化後,當鉭電容供電無法達到初始設計目標值時,使用者仍然存在掉電後資料丟失或者 SSD 無法識別的潛在隱患,如果在初始設計時即做冗餘電容,那麼,將會回到問題 “b” 的死迴圈。

 

值得欣慰的是, b c 的問題都是可以完美解決的,解決這些棘手問題只是需要工程師足夠的頭腦和經驗而已。

 

2 、只儲存 SDRAM 中的使用者資料,而不儲存對映表

 

這樣的做法將會減少 SDRAM 的使用和鉭電容的使用, 不儲存對映表 並不意味著對映表的丟失,僅僅是不儲存最後資料寫入時更新的對映表,當 SSD 重新上電後,尋找上次對映表儲存後寫入的新資料,重新構建對映表,這樣做法的弊端是機制設定不足夠合理的話,重新構建對映表的時間會比較久, SSD 需要一些時間才能正常進入正常狀態。

 

對於無 SDRAM 設計的控制器來說,所有資料直接寫入 Nand Flash ,當異常掉電時,沒有寫入 Nand Flash 的資料會被返回主機寫入不成功,沒有額外資料需要儲存,因此,對於真正高可靠要求的應用而言,無 SDRAM 設計才是王道,其代表是德國某老牌工業品牌主控,其唯一的弊端就是效能不足夠良好,實際上,很多應用場景並是需要最高的效能,而是 夠用 的效能。

 

測試方法和原理

 

具體測試時, SSD 需要作為系統盤以及作為從盤兩種情形進行測試,做主盤和做從盤的測試方法唯一區別是,做主盤需要對測試電腦整機進行通斷電,而做從盤僅僅對 SSD 進行通斷電即可。

 

a 、對 SSD 分別作為空盤時、寫入資料 25% 時、寫入資料 50% 時、寫入資料 85% 以及寫入資料 100% 時分別進行 3000 次的異常掉電測試,每次掉電和通電時間間隔為 3 秒;

對盤寫入不同容量資料進行測試的原理是:當 SSD 寫入一定資料量後,後臺開始進行垃圾回收,垃圾回收就意味著資料的搬遷,資料搬遷就意味著對映表的更新,此時進行異常掉電通常會出現問題。

 

b 、當正常寫入資料時,對 SSD 進行異常掉電

 

windows 下,寫入資料檔案系統需要執行如下八個動作:

 

所以,寫入資料的過程也是對映表更新的過程,此時的掉電仍然會影響到對映表是否完整更新。

 

c 、當刪除資料時進行異常掉電

 

windows 下,刪除資料同樣需要執行八個動作,與建立檔案道理相同,對映表同樣需要更新。

 

d 、當 SSD 讀取檔案是異常掉電,測試 3000 次,通斷電時間間隔 3 秒;

 

e 、當正常關機過程中異常掉電,測試 3000 次;

 

f 、當正常啟動作業系統時異常掉電,測試 3000 次;

 

對於工業級 SSD ,需要在高低溫的環境下進行上述的各項測試。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997038/viewspace-2764881/,如需轉載,請註明出處,否則將追究法律責任。

相關文章