硬盤數據丟失,到底該如何修復?
文章轉自:https://forum.mianbaoban.cn/t/topic/60744。
數據丟失分兩種情況:
數據丟失情況1:誤刪除和誤格式化數據丟失情況2:硬盤損壞 數據丟失情況1:誤刪除和誤格式化
機械硬盤數據恢復的原理是:人們平常所做的刪除,只是讓系統修改了文件分配表中的前兩個代碼(相當於作了“已刪除”標記),同時將文件所占簇號在文件分配表中的記錄清零,以釋放該文件所占空間。因此,文件被刪除後硬盤剩余空間就增加了;而文件的真實內容仍保存在數據區,它須等寫入新數據時才被新內容覆蓋,在覆蓋之前原數據是不會消失的。
對於FAT格式的文件結構,文件刪除僅僅是把文件的首字節改為E5H,其余的內容並不沒有被修改,因此可以比較容易恢復。我們可以使用後面介紹的數據恢復軟件輕松的把我們誤刪除或意外丟失的文件找回來。不過特別註意的是,我們在發現文件丟失後,準備使用恢復軟件時,千萬不要在本機安裝這些恢復工具,因為軟件的安裝可能恰恰把剛才丟失的文件覆蓋掉。最好使用能夠從光盤直接運行的數據恢復軟件,或者把硬盤掛在別的機器上進行恢復。
硬盤上的數據即使刪除了,也只是在數據存儲的前端打上標記,標識為已刪除。但是實際並沒有刪除,只是操作系統認為刪除了而已。讀取到這個文件頭的時候,會識別為已刪除,不繼續讀取。那些數據恢復得軟件也就是借由這個原理,讀取到文件頭後指示繼續讀取,並把文件頭的標識剝離。最後拼湊出完整的文件,數據就恢復出來了。
由於機械盤因為尋道和調速的問題,會導致冗長的延遲從而影響系統整體響應性能。所以機械盤只有在寫滿或需要只用刪除數據的這個扇區和磁道,才會擦除原來的數據並且寫入。
固態盤的特點卻有很多不同。固態盤擁有自己的處理器和緩存,這運算能力數倍於機械盤。也就是說,固態盤是能自己管理存儲空間的。固態盤數據難恢復是源於一個叫做“垃圾回收”的機制。
眾所周知,固態盤所使用的NAND FLASH顆粒存在覆寫次數少使用壽命低的特點。所以設計者設計出覆寫機制來平衡這NAND FLASH芯片的磨損。“垃圾回收機制”就是其中之一。在系統空閑的時候,回收原來刪除的數據所占用的存儲區域,以方便將來再使用。
無論機械盤還是固態盤,在覆寫模式下,工作速度都會受到很大的制約。機械盤會耗費冗長的尋道及調速時間。固態盤會擦除整個簇的數據並重寫。所以,設計了“垃圾回收機制”來保證寫入操作的時候盡量只需要寫入空白區塊,以保證速度。
也正是有了“垃圾回收機制”,固態盤的數據一旦刪除,隨時都有可能被主控真正刪除掉,以騰出空白區塊。所以,那些數據恢復軟件就無法從實際上已經不存在的數據區塊恢復出數據來。
因為NAND 閃存不能直接對一個已經寫入了數據的 Page 馬上進行重寫,它必須等待到這個 Page 所在的 Block 被擦除後才能進行,而且每次擦除都是一整個 Block 而不只是單獨的某個 Page。
為了對閃存中的數據重新放置、刪除掉陳舊數據並騰出空白 Block 來存放新數據,NAND 閃存需要執行被稱作 Garbage Collection(或者 Merges,合並)的操作,而 SSD 的損耗平衡操作也主要在這個時候執行。
另外,還有一個更高層次的原因。
由於機械盤是磁存儲介質,無論用什麽方法刪除的數據,都會因為磁介質的記憶效應有一定強度的磁殘留。通過特殊手段依舊可以復原出一部分數據。另外通過特定的算法,那些復原出來的殘破數據依然有希望復原成原來的數據。
而固態盤的記錄是改變晶體管極性來進行數據存儲以及做到掉電非易失性的。所以,被主控回收的區域就相當於沒有使用過,數據本身不會再硬件層面上產生記憶效應。所以,想要恢復固態盤的數據,其實手段並不多。
數據丟失情況2:硬盤損壞;機械硬盤構造原理是硬盤裏面是由1張或幾張可讀寫數據的儲存盤體,盤體上有只讀寫槍,有點象老式光碟機,硬盤裏面還有一保馬達帶動儲存盤轉動,從而能讀取到不同部分的數據。
一塊新的機械硬盤在使用前,必須首先分區,再用Format對相應的分區實行格式化,這樣以後我們才能在這個硬盤存儲數據。硬盤的分區就象是對一塊地方建倉庫,每個倉庫就好比是一個分區。格式化就好比是為了在倉庫內存放東西,必須有貨架來規定相應的位置。我們有時接觸到的引導分區就是倉庫大門號,上面要記載這個分區的容量的性質及相關的引導啟動信息。FAT表就好比是倉庫的貨架號,目錄表就好比是倉庫的帳簿。如果我們需要找某一物品時,就需要先查找帳目,再到某一貨架上取東西。正常的文件讀取也是這個原理,先讀取某一分區的BPB參數至內存,當需要讀取某一文件時,就先讀取文件的目錄表,找到相對應文件的首扇區和FAT表的入口後,再從FAT表中找到後續扇區的相應鏈接,移動磁臂到對應的位置進行文件讀取,就完成了某一個文件的讀寫操作。
長久以來我們都已經非常習慣於使用電腦來完成我們的日常工作,以至於我們從來沒有認真考慮過一旦計算機出錯所造成的後果將是我們不能承受的。其中又以數據載體-硬盤損壞造成的後果最為嚴重。機械硬盤故障大體可以分為兩類:一類是可以通過軟件或者指令來進行修復的,我們稱之為硬盤固件級故障;一類則是由於硬盤的物理構件發生物理損壞所造成的故障,我們稱為硬盤物理級故障。對於後面這類物理級的硬盤故障,在實際數據恢復案例中最常見到的就是由於硬盤磁頭與硬盤盤片在高速運轉過程中發生碰撞而造成的磁頭損壞以及盤片的大面積劃傷。這種故障的硬盤通常表現為硬盤不能正常識別,長時間不能進入就緒狀態,同時對一個典型癥狀為硬盤通電後即發出磁頭往返運作的敲擊聲,甚至還帶有磁頭與盤片碰撞摩擦的刮擦聲。
如果讀寫磁頭在硬盤運轉時與盤片表明發生直接的接觸,那麽尖銳的磁頭將會劃穿包含絕緣層與噴鍍碳層在內的保護層,造成一個圓形的劃傷地帶的同時也會損毀磁頭本身。這就是我們所謂的硬盤物理劃傷或者物理磁頭損壞。
磁頭損壞的元兇可以是落在盤片上的一顆極小的塵埃顆粒。因為磁盤運行時磁頭在盤片上的懸浮高度是極其微小的,加上盤片高速運轉產生的動量,一旦磁頭受到外力的碰撞就極有可能會破壞懸浮飛行的平衡,從而撞擊到盤片表面。而讀寫磁頭是由較為堅硬的材料制造的,可以在接觸時輕易的造成對保護層的穿透性劃傷。上述的磁頭與盤片之間的碰撞會損壞盤片儲存數據的磁性物質層。一旦磁頭在盤片上拽行,那麽就會造成數據的永久性丟失。除此之外磁頭最終會因為摩擦過熱或者撞擊變形造成硬盤無法正常工作。並且損壞的磁頭和盤片劃傷後產生的細小顆粒會在磁盤繼續通電運轉的情況下對盤片原本完好的區域造成更多的劃傷。
關於磁頭物理損壞情況下的數據恢復,現在最好也是可能唯一的解決辦法就是在一個適當的環境(例如無塵室)中打開硬盤盤腔更換損壞的硬盤物理磁頭,同時清理盤片上附著的細小顆粒後進行數據讀取。但是這一方法也不是萬能的,除了更換磁頭的技術之外,普遍存在的一個難題就是在盤片上有嚴重的物理劃傷的情況下,更換硬盤磁頭也無濟於事,磁頭會立即報廢,使得該劃傷區域之後的完好區域也無法進行讀取。原因在於磁頭在經過劃傷區域時(無論但是硬盤是否正在嘗試讀取該區域),由於盤片的保護層缺失,磁頭將無法在該區域保持懸浮狀態,從而會再次在與盤片直接接觸的時候由於過熱,變形或者短路等原因損壞。如何保證磁頭安全通過劃傷區域成為了是否能夠成功獲取硬盤數據的關鍵。
針對磁頭盤片的物理劃傷的數據恢復
固態硬盤 簡單些有點象平時的U盤,只是電路板更復雜。沒有象機械硬盤那樣的馬達及儲存碟盤,而主要以半導體固體作為數據儲存介質。
由於固態硬盤的內部構造與傳統硬盤有很大的區別,所以兩者在硬件故障的表現形式上也有所不同,固態硬盤內部是一系列較為復雜的電子元件,其中包括存儲芯片、控制芯片等,所以最常見的故障首先是電路故障,其次是固件故障。固件故障多表現為主板和系統無法識別硬盤,型號、容量識別錯誤或者讀取某個區域文件及文件夾時頻繁死機等。
主板和系統無法識別硬盤,大多數是由於固態硬盤裏的電路元件損壞,而型號容量識別錯誤則可能是固態硬盤固件損壞導致的。電路損壞只要更換相應的配件即可修復,而修復固件故障必須首先有能讀寫固態硬盤固件的工具和軟件,而後還要有相同版本得完好固件才能修復,修復過程是相當復雜的。因此修復固態硬盤不單需要經驗、設備,還需要充足的配件和固件程序庫。我公司在固態硬盤恢復方面積累了豐富經驗,並且擁有充足的配件以及類型繁多的固件程序版本,所以在恢復此類故障時擁有很高的成功率。
固態硬盤內最重要的是控制單元和固態存儲單元,固態存儲單元是用來記錄數據的,控制單元則是控制硬盤正常工作的。 打開固態硬盤我們便可以看到電路上多個FLASH閃存顆粒,這些顆粒就是固態硬盤的存儲單元,存儲單元有一定使用壽命也就是有擦寫次數的限制,當存儲單元達到或超過擦寫次數時就會出現不穩定的情況或出現壞塊,這時會導致整個固態硬盤不能正常工作。例如出現系統讀取數據時很卡或頻繁死機。
由於讀取設備的限制,損壞的存儲單元內數據恢復過程既復雜難度又大,這最終有可能影響恢復的效果。有些人會問只是一個存儲單元損壞而已,我用設備把其他存儲單元讀出來,讀出來的數據不是大部分可用的麽?但是答案是否定,原因就是FLASH存儲單元采用了損耗均衡的算法,數據被分割成很小的數據塊,然後根據存儲塊的損耗程度(即擦寫次數)進行漂移存儲。
為什麽要采用耗均衡的算法呢?
我們知道FLASH存儲單元有擦寫次數限制,特別是MLC存儲單元,它的可擦寫次數大約為1萬次,SLC是MLC的10倍。但是我們知道硬盤的某些區域在使用中會被頻繁的擦寫,比如系統引導扇區,虛擬內存等等,這些區域的頻繁擦寫會導致FLASH存儲單元的提前損壞,從而導致硬盤報廢,但是此時其他區域的FLASH存儲單元也許只擦寫了幾百次,為了防止這種情況出現,耗均衡的算法便誕生了,這個算法最早被應用於U盤上。
什麽是損耗均衡的算法呢?
損耗均衡會按照一定大小將存儲單元劃分為若幹個塊,並為使用中的塊進行索引編號,每次擦寫都會更新一個塊。其核心思想就是將新寫入的數據寫進寫入次數較少的塊,將擦寫次數較多的塊中的數據移至擦寫次數較少的塊。
以上我們可以看出來固態硬盤中的數據在底層實際是無序存放,所以就算把其它存儲單元中的數據用專業設備讀出來也很難將數據恢復出來。將無序的數據進行整理後輸出則是控制單元的作用,如果控制單元損壞,那麽必須用同樣型號的控制單元進行更換,如果沒有匹配的控制單元則數據恢復的難度較大,所以這也是業界的一大難題。由於不同的廠家不同的型號甚至不同的批次的固態硬盤內部數據塊的排序算法都不一樣,因此要花很長時間去研究數據塊排序的算法,然後根據這個算法再編寫出相應的恢復軟件。
硬盤數據丟失,到底該如何修復?