固態硬碟掉電保護測試原理及要點
前言
固態硬碟由於必須使用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,需要在高低溫的環境下進行上述的各項測試。