每個人的無數個過去的瞬間定義了現在的自己。那些歡樂悲傷的瞬間也許對別人無關痛癢,對自己來說卻是彌足珍貴。硬盤裏的照片和文檔承載着過去美好的瞬間和知識的積累,對大家來說是十分寶貴的,遠遠不是硬盤的那幾百一千的價格所能衡量。

現在的個人電腦早就不是原來嬌貴的高科技產品,不可中斷電源也不復存在,誰沒有過在一次忽然斷電後,憂心硬盤損壞的的經歷。在重新開啓電源的瞬間,心中默唸,如果這次沒問題,下次我一定做好備份!可是當看見操作正常啓動,除了當時編輯的資料有很小部分丟失而其他完好無缺後,卻又忘記的自己的承諾,繼續裸奔,直到下一個循環。

我們知道操作系統爲了效率的考慮,在文件系統驅動中都有緩存。Word等軟件會創建臨時文件,不停地刷新該文件的緩存來儘可能避免數據的損失。而最新的NTFS等現代的日誌型文件系統也比傳統的FAT對意外掉電的魯棒性提高很多。

這是軟件的角度,而如果硬件上沒有保證的話,這些都是揚湯止沸之舉。那麼如果我們從硬件的角度來瞭解一下,硬件工程師們爲我們的數據安全都做了哪些努力。我們來分別看看硬盤的兩種典型的形態:機械硬盤和固態硬盤SSD,它們都是怎麼處理掉電(Power Failure/Loss)的。

機械硬盤

典型的溫切斯特硬盤結構如下:

硬盤忽然掉電會損壞硬盤和數據嗎?

一般操作情況下,盤片(2)在轉子(1)的帶動下,以每分鐘數千轉的速度飛速旋轉。轉臂(5)在程序指令下,帶着磁頭(4)來到指定位置開始讀取/寫入數據。

磁頭是依靠空氣動力的原理懸浮在磁盤表面,高度比頭髮絲還細。這樣它既可以迅速準確的讀取/寫入內容,又不會和盤面接觸(想象一下數千轉的速度旋轉的磁盤和磁頭接觸時會發生什麼)。這時如果沒有電了,磁盤不轉了,空氣浮力也不復存在,磁頭就會慢慢降落,進而碰到盤片,引發物理損傷。那怎麼避免這種情況呢?

正常斷電的時候,硬盤控制芯片會收到SATA控制器傳來的STANDBY IMMEDIATE命令;而SAS和SCSI硬盤會收到stop命令。這時控制器會把磁頭歸位到一個叫做Parking Zone的地方:

硬盤忽然掉電會損壞硬盤和數據嗎?

磁頭完美地停在停車區,避免了和磁盤接觸。而在停好之前,關機時序並不能夠結束,保證了整個過程的完整性。似乎很完美,但是意外斷電的時候,並不會收到各種命令,也沒有時間從容的停車,那該怎麼辦呢?

心細的同學也許注意到我在介紹硬盤構造的圖片中沒有介紹3的位置。其實這裏別有玄機,這裏叫做Landing Zone。這裏並沒有磁道,表面介質也不同:

硬盤忽然掉電會損壞硬盤和數據嗎?

在意外斷電的情況下,磁盤控制器會利用空氣動力和一些電容的餘電,將磁頭移到Landing Zone裏面降落,從而保證不會劃傷盤片。Landing Zone也是硬盤沒事幹時,磁頭的休息區。還有些硬盤廠商採用load/unload技術來做類似的事情,這裏就不詳細介紹了。

固態硬盤SSD

固態硬盤沒有機械旋轉,應該不會出問題吧。其實沒有那麼簡單,看過我們固態硬盤系列的讀者應該都知道FTL的存在(雜談閃存三:FTL)。FTL的邏輯塊和物理塊的轉換表必須存儲在NAND Flash上,否則會造成混亂;高端企業級硬盤上有大量的DRAM來加速,其中的內容也必須存儲下來。

在正常關電的時候,和機械硬盤類似,SATA的STANDBY IMMEDIATE命令和SCSI的Stop指令是合適的存儲這些信息的機會。SSD控制器可以從容的將這些信息寫在合適的地方。

在意外掉電的情況下,情況就複雜不少。不知道大家注意過沒有,現在M.2的SSD上面有很多很小的電容:

硬盤忽然掉電會損壞硬盤和數據嗎?

在Vcc沒電的時候,這些電容的gate就會打開,會爲主控爭取1ms左右的時間。主控會立刻放棄現在所有沒有存儲的數據,而立刻開始存儲FTL表,保證不會出大問題。

在企業級的SSD中,有的DRAM大小將近1GB,而企業SSD的數據完整性要求極高,不容有失,不但FTL表要存好,DRAM中沒有存儲過的,也必須全部存下來。這就需要很大的電容,來爭取更多的時間,如果我們拆開企業SSD,就會發現很多大黃快:

硬盤忽然掉電會損壞硬盤和數據嗎?

這個Micron的SSD有3塊,而Intel的部分SSD,因爲DRAM很大,大電容達到8塊!

有些低端SSD廠商,沒有電容,或者在長時間使用後電容能力下降。在掉電後,FTL表並沒有存下來。而是採取在下一次上電的時候重建FTL表,這是用戶就會發現SSD反應很慢,要一會纔會恢復正常。

結論

古老的機械硬盤沒有各種保護功能,掉電的確會造成物理上的損傷,帶來數據丟失。現在的無論機械硬盤和固態硬盤,一般來說忽然斷電都不會損壞硬盤,丟失的數據也僅限於Cache裏面沒有存下來的,風險不大。

那麼有同學提了個邪惡的知乎體問題,怎麼優雅的弄壞機械硬盤呢?其實也很簡單,在大量讀寫硬盤的時候猛烈搖動/震動硬盤,讓磁頭狠狠的劃傷表面,神仙也救不回來被物理劃傷的部分數據了。

硬盤忽然掉電會損壞硬盤和數據嗎?

後記

有很多同學留言問我某些情況下磁盤會不會損壞等等。我建議大家重要的數據一定要做好備份,畢竟數據是無價的,丟了再就找不回來了。現在硬盤損壞,數據恢復的價格是很貴的,動輒數千上萬,而且經常只能恢復部分數據。再加上我們的某些數據因爲敏感性,擔心數據恢復公司濫用(誰想當陳冠希?),也不想給他們恢復。也許大家還記得去年的病毒勒索事件,我的一個朋友的所有照片都被加密了,欲哭無淚啊。

我的建議是重要數據,如照片和文檔等都要保存兩份(熱備份),至少脫機備份兩份份(冷備份)。才能保證數據無虞。我後期可能會寫些磁盤數據恢復的文章,大家可以看看。

相關文章