沒有後悔藥?探究固態硬碟的數據恢復問題
2010-03-11 09:43:00
作者:Rob Williams 編輯:紫竹[
爆料]
收藏文章譯者註:固態硬碟(SSD)憑藉超高速的讀寫速度在高端玩家中頗受歡迎,但是SSD硬碟也暴露出一些不成熟的表現,之前已有過固件門、性能下降等例子。Techgage網站最新的測試顯示SSD硬碟在數據恢復方面遇到了新的挑戰,這一問題在支持TRIM指令的固態硬碟上尤為嚴重。有鑑於此,編輯將這篇文章編譯過來希望能引起玩家的重視。目前這一問題還沒有別的評測加以佐證,筆者手頭也沒有固態硬碟可重複驗證,希望正在使用固態硬碟的玩家在評論中多多探討,並注意備份自己的重要數據。
你是否已將你的PC升級到了新一代配置(比如多核CPU、SSD固態硬碟),並為新電腦的高性能而沾沾自喜?的確,現在的PC機性能越來越強大,但是一個不小心,這個價值$2000美元的野獸也可能讓你一聲嘆息。如果你和筆者一樣喜歡在進入桌面之後加載一大堆應用程式,那麼你就需要小心了。
問題源於SSD固態硬碟,這個2.5寸的NAND硬碟可以大幅提升電腦性能,啟動速度更是飛快,用過SSD硬碟的用戶與普通機械硬碟一對比就會發覺兩者之間巨大的差別。不過本文的重點不是SSD硬碟的性能,而是關注固態硬碟可能帶來的問題,尤其是Win7系統中引入的TRIM指令可能會對數據恢復造成負面影響。這個問題目前尚有爭議,但是依然值得我們去關注和探討。
固態硬碟以前也出過問題,還記得Intel的磚頭門嗎?起初人們認為這還只是Intel一家的SSD硬碟的風險,但是後來的事實證明市面上的多款SSD硬碟都有著相同的固有問題。
幾乎絕大多數存儲設備在刪除文件時都有如下類似的步驟:一旦用戶刪除文件,指向數據在硬碟上的具體位置的索引就會被刪除(對於機械硬碟來說就是LBA邏輯塊尋址)。舉例來說,如果為了管理方便你把自己收藏的電影存放位置寫在一張紙上,某天你不慎把這張紙燒掉了,實際上你只損失了一張紙,實際的電影還在。通常我們的數據存儲就是這樣,刪除文件時只是刪除了文件的索引,具體的文件還存在硬碟上。
也正因為實際數據仍然保存在硬碟上,數據恢復才有了操作的可能,當然前提是用戶沒有在原位置覆蓋新的數據。一旦用戶誤刪除了重要文件,使用數據恢復軟體都有很高几率成功恢復文件,這種事對機械硬碟來說並不鮮見。隨著SSD硬碟的興起,恢復數據的方法雖然沒有改變,但是固態硬碟獨特的使用方法使得數據恢復面臨新的挑戰。
Kingston's SSDNow M Series - 1G & Non-TRIM (左), 2G & TRIM (右)
機械硬碟可以隨時覆寫數據而不會影響硬碟的讀寫性能,即使使用幾年後其讀寫速度也不會有較大變化。與之相比,固態硬碟由於NAND快閃記憶體不同的工作原理導致使用一段時間後就會遇到性能下降問題。
我們可以用磁碟碎片產生的過程來解釋這個問題,系統向磁碟的某個區塊寫入了一堆數據,在不需要的時候用戶就會刪除這些數據並在同位置保存別的文件,而作業系統是以固定大小的區塊來保存文件的(windows系統默認格式化的時候是以4KB為一個數據單元),新保存的文件不一定能恰好填滿原來佔用的區塊,假定一張圖片的大小是6KB,需要佔用一個4KB區塊和另一個區塊的2KB,而剩下的的2KB空間可能被另外的word文檔佔用,如果用戶刪除了圖像文件,但是word文檔不受影響,依然要佔據剩下的4KB,因此就會產生磁碟碎片。
隨著使用時間的增長,磁碟碎片就會越來越多,進而導致磁碟性能下降,所以我們需要定期整理磁碟碎片,將碎片佔用的空間整合轉移,但是對於固態硬碟來說磁碟碎片整理並沒有解決全部問題。
一旦需要在原位置寫入新的數據,傳統的機械硬碟執行新數據寫入只需要覆蓋寫入即可,而SSD硬碟必須要先清除原有的數據才能將新數據寫入硬碟,這也是SSD硬碟性能更受歡迎的一個原因,而執行清除―寫入的過程也正是TRIM指令最主要的作用所在。
微軟在Win7系統引入了新的基於ATA命令的TRIM指令,一旦有刪除文件、格式化或者忽略文件之類的磁碟讀寫,系統就會向SSD硬碟發出命令清空區塊中數據。這個過程很簡單,但是很有實用價值。無論用戶是刪除文件還是格式化SSD硬碟,TRIM指令都會清空數據及索引,某種意義上來說這時的SSD硬碟相當於全新狀態,不再有性能下降的問題。
TRIM指令的作用也正是本文的由來,多數人都忽略了TRIM指令的負面影響。用戶在享受TRIM帶來的好處時也不知不覺中使得數據恢復的可能性降至0。如前文提到的,在機械硬碟和不支持TRIM指令上的固態硬碟上進行數據恢復沒有什麼問題,只有原位置沒有寫入新的數據,用戶只需要選擇合適的軟體基本上就能恢復誤刪文件。
數據恢復在支持TRIM的SSD上就會成為一個難題,一旦你刪除了某個文件(隨後又清空了回收站),你的數據可能永遠也無法恢復了。因為TRIM指令的存在,用戶刪除數據後SSD硬碟就會徹底清空那個區塊,而不是像傳統的機械硬碟那樣只刪除索引而保留數據。
筆者無法確認TRIM指令是否會導致機械硬碟上的數據也不可恢復,如果必須有個結論的話那麼普通消費者也無法進行這樣的數據恢復,當然如果有適當的工具,數據恢復也並非不可能。某種意義上我們可以把NAND快閃記憶體看做電腦的內存(RAM),內存一旦斷電其中的數據就會消失無蹤(某些情況下可以啟動恢復很可能是使用特殊手段保證內存不斷電)。
[2.測試之前的準備]我們用大幅內容討論了TRIM以及數據恢復的背景知識,那麼我們如何證明受TRIM影響的SSD無法恢復數據?即便我很自信這是個事實,但是我們仍要找到實際的測試方法將這個設想付諸實踐,實踐才檢驗真理的唯一標準。
第一頁上配的圖中是兩款金士頓M系列80GB的SSD硬碟,1G和2G,他們其實都是基於Intel的方案,因此第一代1G不支持TRIM,而2G那款支持TRIM指令。
測試之前,我們HDDErase對1G硬碟進行一次徹底擦除(這個過程可以當成TRIM指令操作,他們的效果是一樣的,只是HDDErase擦除的是整個硬碟),2G那款只是正常安裝使用。測試使用了64位Win7旗艦版,因為64位的系統中TRIM是默認開啟的。
經歷以上步驟後,兩款硬碟可以看作都處於出廠狀態,使用系統自帶的磁碟管理程序將兩塊硬碟格式化為NTFS格式使用。
之後筆者使用自己的文件分別複製到兩塊硬碟中,保證兩塊硬碟中的文件是同樣內容同樣的大小。最終每個硬碟的字節數都為79,873,675,264 byte,大小74.3GB,剩餘空間只有3MB,總計40,002個文件和670各文件夾。之所以拷入這麼多文件主要是保證文件類型的多樣性,保證每種文件都有恢復的可能性。
測試之前還要檢查一下Win7系統中TRIM指令是否真正有效,用戶可以在命令行中輸入如下指令:
fsutil behavior query disabledeletenotify
如果返回的結果為0,那就意味著TRIM指令可用,如果返回結果是1則說明TRIM不可用,即便硬碟支持TRIM也沒有用。需要注意的是,Windows表示TRIM可用與否並不代表它的實際工作狀態,還有別的因素影響這個指令的工作,用戶必須檢測系統以確保TRIM指令可以正常工作。
準備工作完成之後我們就開始實際的測試,這一步沒有什麼特別的,就是ctrl+a全選文件然後確定刪除,那麼文件到底能否恢復?下一頁將會揭曉。
[3.實戰數據恢復]第一次的測試選擇是的R-Studio數據恢復軟體,結果如下:
左: Non-TRIM - 右: TRIM-Enabled
剛一看到支持TRIM指令的硬碟上也是大片粉紅色(意味著有文檔可恢復)筆者也很受打擊,以為自己的推論是錯誤的,不過仔細檢驗之後結果又很明確:不支持TRIM指令的硬碟找到了288,407個可恢復文件,支持TRIM指令的硬碟只找到了488個可恢復文件。這是否意味著TRIM固態硬碟也可以恢復數據?還不一定。
雖然TRIM硬碟也找到了一些文件,但是全都被破壞了,這依然沒有改變TRIM使得數據恢復不可能的結論,圖中粉紅色區塊表示的可恢復文件塊可能是文件系統的緣故,雖然這一點還不能確認,不過TRIM指令確實讓那些寄希望恢復誤刪文件的用戶備受打擊。
為了進一步證明我們的結論,我逐個檢查恢復報告發現兩塊硬碟上的文件實際上依然存在,非TRIM硬碟上只要不覆蓋就可以恢復所有文件(建議用戶忽略軟體提示的X號,大部分數據只要不被覆蓋都是可以恢復的)。同時還要注意的是,TRIM硬碟只找到了根目錄下的Games和Pictures兩個文件夾,原本則有七個文件夾。
左: Non-TRIM - 右: TRIM-Enabled
筆者找到的可恢復文件是我最喜歡的網遊《亞瑟王的召喚》內測時的截圖,有11年的歷史了,因此對個人來說相當有紀念意義。如果用戶重要的文件誤刪除並且無法恢復,想想看這會多麼令人沮喪。在TRIM硬碟上恢復數據不是問題,但在TRIM硬碟上即便提示數據可恢復,最終的結果也不一定很樂觀。
左: Non-TRIM - 右: TRIM-Enabled
筆者多次嘗試將數據恢復,甚至是把容量最小的txt文檔也恢復了,在非TRIM硬碟上恢復的文件沒有問題,而在TRIM硬碟上恢復出來的文件卻遇到了奇怪的問題,即便恢復的數據與源文件大小一模一樣,但是數據完全不對,內容甚至為0。例如恢復的txt文檔即便是大小與原文檔一樣,在用note程序打開時裡面的內容也是空的。(原文作者說打開的txt文檔涉及個人隱私,因此沒有上圖―編者注。)
為了進一步驗證,筆者又使用了Ontrack and O&O's的數據恢復軟體再次掃描硬碟,結果如下:
左: Non-TRIM - 右: TRIM-Enabled
左: Non-TRIM - 右: TRIM-Enabled
從上面的截圖中可以看出,TRIM硬碟在數據恢復方面再次悲劇,沒有找到實際可用的索引文件。它們在TRIM硬碟上找到的只是一些雜碎文件,即便是這些文件恢復之後也找不到擁有的數據。因此我們最終認定:在支持TRIM硬碟上恢復數據基本不可能。
[4.總結]從整個測試中可以看到,在TRIM固態硬碟上恢復數據基本是做無用功,一旦TRIM發出了清除數據的命令,用戶只能和誤刪文件吻別了。耐人尋味的是,(使用TRIM指令清空數據後)會留下一些特殊的數據,筆者也沒有弄明白具體是怎麼回事,它可能是與NTFS文件系統有關的數據,就好像Windows系統格式化硬碟後會留下一些索引文件一樣。測試得到的結果很明確:排除這些索引文件後,TRIM硬碟上的已刪數據永遠消失了。
本篇測試看起來可能很很簡單,而且也不是很詳盡,我去年12月中旬才著手這個項目的,花了很長時間才寫成這篇文章。這段時間我多次測試了非TRIM硬碟和TRIM固態硬碟,因此我對自己的發現非常自信。有意思的是,最近測試的SSD可以找到一些可恢復文件,而以前測試的硬碟刪除操作後一點文件也找不到。因此這個問題看起來有隨機性,但是最終的結論還是很明確的:(TRIM硬碟)一旦刪除數據就再也找不回來了。
在我測試的過程中,我給許多廠商都發郵件溝通過這個問題,不過並沒有收到任何有價值的回應。這些公司包括數據恢復廠商、SSD製造商甚至包括主導制定ATA標準的T13公司。
我詢問的廠商中有幾家SSD銷售商和數據恢復軟體商,SSD銷售商以及他們的工程師都不能回答我們的問題,數據恢復廠商則兩次掛斷我們的電話,似乎沒有廠商願意我們深究數據恢復和TRIM背後的故事,因此我們得到的結論都是基於我們自己的發現。
雖然本文的主要內容是提醒人們注意TRIM指令的負面影響,不過我們並不會一棍子將TRIM打死,畢竟TRIM指令是使SSD硬碟保持最佳性能的關鍵之一。TRIM可能有一點缺點,不過它仍然是保證SSD正常使用的必要技術。
在此我們提醒使用TRIM硬碟的用戶要注意備份重要數據,在非TRIM存儲設備上用戶還有機會恢復誤刪除文件,但在TRIM硬碟上並沒有這麼幸運,丟失的數據不可能找回來,雖然還不能確認專業恢復廠商能否找回數據,但是TRIM硬碟就像我們的內存,一旦數據被清除就再也找不回來了。
我們之所以多次強調備份數據的重要性,是因為很多人都和筆者一樣經歷過誤刪文件帶來的教訓。目前固態硬碟還沒有普及,本文測試發現的問題也只是影響一小部分人群,但是用戶依然有必要備份自己的重要數據,一旦出現以外可能後悔都來不及。
閱讀更多:默認
相關閱讀:
金士頓A2000 M.2 NVMe固態硬碟開啟電腦高
4款熱門旗艦NVMe SSD橫評:差距有多大?
SLC SSD果然才是王者!如此折磨5年都不死
4D 128層全球之最!快閃記憶體巨頭髮飆SSD
狼真的來了!SSD跌了兩年一天就漲回去了
崛起!國產主控+國產快閃記憶體SSD深度評測