SSD断电保护机制
??????????由于意外停電、藍屏死機等原因導致電腦沒有正常完成關機就屬于斷電。異常斷電會增大固態硬盤發生故障的幾率,不僅僅是丟失尚未保存的文件,還有系統緩存內尚未實際寫入到硬盤的數據,以及短暫儲存在固態硬盤DRAM緩存當中等待最終寫入NAND閃存的少量數據都可能會丟失。極端情況下固態硬盤上以前寫入的數據也會出錯,甚至整個固態硬盤會因此“變磚”——無法識別、無法使用、數據全毀。
?????????? 在SSD內置電容中提供應急保護電源設計,確保在突然斷電的情況下數據也不會丟失。
固態硬盤異常斷電可能變磚是因為固態硬盤在內部DRAM緩存中存儲了FTL表等等維系固態硬盤正常工作所必須的元數據,這些數據與用戶存儲讀寫的數據無關,但卻是固態硬盤維護自身正常運作所必需的。異常斷電會導致這些元數據丟失損壞。
FTL是由固態硬盤主控維護、存儲在固態硬盤DRAM緩存當中一張虛擬關系對照表,其中記錄了邏輯LBA地址與實際閃存PBA地址的一一對應關系。由于固態硬盤的工作機制與傳統機械硬盤截然不同,對于機械硬盤來說LBA地址會有一個固定的位置指向,而到了固態硬盤當中,數據寫入之后實際存儲在閃存的哪個位置是由固態硬盤主控決定的。最“原始”的斷電保護機制就是在恢復通電后爭取修復受損的FTL表,修復過程可能需要一定時間,所以才會有變磚后“通電三十分鐘閑置”的救急方法。
通電閑置的救濟方法并非總能成功,所以減少變磚的最佳方法還是避免異常斷電對固態硬盤造成傷害,于是就有了各種固態硬盤斷電保護機制的出現。
斷電保護機制Power Failure Management(PFM):
異常斷電保護有硬件級和固件級兩類。當前所有的固態硬盤在設計時其實都會有掉電保護機制,重點在于能否覆蓋所有可能發生的極端條件,以及保護機制自身是否會犯錯。
硬件級斷電保護需要有獨立的硬件電路,包括應急供電用的電容、用于發現斷電并觸發保護機制的電壓監視芯片等。下圖是OCZ Vector 180的拆解,圖中紅色聚合物電容就是斷電保護電容,此外還會有相應的升降壓電路。
除了使用聚合物電容之外還有一些固態硬盤會使用電解電容,比如Intel 730:
硬件級斷電保護機制通過電源穩定偵測到斷電發生后改用備用電容供電并立刻著手固態硬盤緩存內重要FTL數據的刷新寫入。
可以看到,整個硬件級斷電保護機制當中,電容至關重要。
不管是聚合物電容還是電解電容,都是有使用壽命限制的,而且會隨著工作溫度的提升而加快失效,所以帶有硬件斷電保護電路的固態硬盤都會有一個安全使用年限,一旦電容失效,不但不能保護固態硬盤,反而會因為斷電時保護邏輯無法生效而導致數據丟失風險。
使用電容來實現掉電保護待考慮的問題:
(1)電容容量的大小
容量太小:電量不夠用于數據的保存,照樣會有異常掉電隱患。容量太大:一是,SSD需要電容充分放電后才能被識別,如果只是短暫突然的掉電,重新上電后電容仍然沒有放電完畢,SSD將不會被識別;二是,容量大的電容需要充電的時間長,充電時間若不夠,沒有足夠的電量保存數據。
(2)電容得老化問題
電容也是有使用期限的,很長時間之后電容得老化可能導致電容電量只能有原來的30%。
(3)數據保護對象
不同的廠家對數據保護對象有不同,常見的保護對象分為以下三種:
- 保護SDRAM中所有數據(映射表+用戶數據);再次上電后,相當于斷電前的操作被中斷,重新上電后就可立馬進入待命狀態。
- 只保護映射表;再次上電后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,再將保存的用戶數據提取出來,兩者結合更新映射信息,更新完之后才進入待命狀態。
- 只保護用戶數據;再次上電后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,只是丟掉了用戶斷電前正在操作的數據,無法更新。
除了硬件級斷電保護之外,其實現在各家固態硬盤廠商也都開發了各自的固件級斷電保護策略,比如下圖中的東芝Q300Pro,PCB上并沒有碩大的聚合物電容或是電解電容,但一樣具備斷電保護能力。
斷電過程是瞬間的,但電壓并不會直接變零,而是有一個急劇的下降過程。在不添加保護電容的情況下,固態硬盤也可以通過定制版主控或獨立的電壓監控芯片時刻監視供電情況,一旦發生電壓下降會在毫秒級時間內觸發斷電保護應急機制:馬上停止用戶數據的接受和寫入,立刻將FTL映射表等對固態硬盤正常工作至關重要的元數據寫入到NAND閃存當中。這樣在下次再通電的時候,固態硬盤就無需面對FTL損壞、Page寫入錯亂等一團糟的局面。
東芝Q300Pro使用無外置緩存設計,所有FTL數據都是存儲在主控內部小容量SRAM當中,由于數據量小,所以在斷電發生時需要寫回閃存的壓力要小一些,同時Q300Pro還應用了SLC Cache,寫入速度相比MLC或TLC閃存要快的多,所以在斷電瞬間也能完成硬件級斷電保護機制完成的工作。此外,東芝Q300Pro的FTL映射表在閃存當中有一個完整的備份,更新映射表的操作采取兩張表交替進行,異常掉電導致一張FTL映射表損壞時可以用備份表恢復之前的狀態。
而另外一些有DRAM外置緩存的固態硬盤,同樣宣稱支持固件級的斷電保護機制,他們是如何做到的呢?還是以東芝的固態硬盤為例,Q300使用了以PHISON PS3110為基礎定制的主控。PS3110的斷電保護機制包括SmartFlush與GuaranteedFlush兩部分。SmartFlush主要是被動防御,盡可能縮短數據在固態硬盤DRAM緩存當中停留的時間,加快將他們寫入到閃存中安全的保存起來;GuaranteedFlush則是主動保護FTL表等元數據的安全,定期保留多份FTL表的備份存儲到閃存當中,以便在供電恢復后修復使用。
雖然Q300/Q300Pro這類固態硬盤沒有大顆電容那么養眼,但固件層面上做好了FTL防護,保障異常斷電不變磚,一般普通消費者并沒有必要去追求一些所謂的企業級字眼,畢竟實惠好用才是真理。
總結
- 上一篇: 002柿饼派GUI模组学习之Animat
- 下一篇: 简单理解sticky定位与fixed定位