給你一個驚喜:EXT3/EXT4文件系統數據刪除後的數據恢復

在數據恢復技術領域裏,Linux操作系統下的Ext3/Ext4文件系統下數據刪除以後的恢復是一個相對比較難的技術問題,因爲Ext3/Ext4文件系統下刪除文件以後,被刪除的文件的原始inode信息中數據指針地址會被清零,inode是文件的靈魂,inode被破壞,文件也就隨之香消玉殞,只留下支離破碎的屍體碎片散落在硬盤的各個角落,文件的主人只能對硬盤默哀了!

值得慶幸的是,Ext3/Ext4文件系統是一種日誌型文件系統,當格式化分區的時候,文件系統分配一個inode號等於8的文件作爲分區日誌文件,Linux把它叫做Journal文件,Journal就是日誌的意思。這個Journal文件的大小是格式化的時候定好的,根據整個分區總體大小來決定Journal分配空間大小,一般數值是64MB、128MB、256MB等,這個文件不會太大。
所謂的日誌型文件系統,就是文件系統中做了什麼操作,操作系統就把它記錄下來,比如創建一個新文件,操作系統會在日誌文件中記錄下來, 刪除一個文件,操作系統也會在日誌文件中記錄下來,記錄的信息包括文件名稱、文件ionde信息等。它的操作步驟是:假如我刪除一個文件,操作系統會把這個文件的文件名和inode等信息寫到日誌文件中,然後把文件刪除,並清空刪除文件的原始inode數據指針,這個刪除過程就完成了!我們可以發現,這個被刪除的文件在臨死之前,操作系統把它的文件名和inode信息記錄了一份,這就給數據恢復留了一手!

我們雖然找到了恢復的門路,但細心的人會發覺,這個Journal文件大小是固定的,它所記錄的內容是有限的,如果 Journal文件存滿了,它會自動釋放前面的空間,循環使用,周而復始,所以Journal文件記錄的永遠是最新的操作記錄。

我們舉個例子,刪除100 個文件和刪除10萬個文件的區別,刪除100個文件時,假如只需要記錄100個文件名和100個inode信息,這個Journal文件能輕鬆存放這些信息。刪除10萬個文件時,需要記錄10萬個文件名和10萬個inode信息,這個數量這個Journal文件恐怕不能一次性保存下來,它只能循環使用它的空間,只記錄最後操作刪除文件的信息。從這個角度看,Ext3/Ext4文件系統數據刪除以後的是否能恢復,是有條件的。

下面我們用達思數據恢復軟件D-Recovery For Linux來演示一下怎樣恢復Ext3/Ext4文件系統刪除後的數據。

1、首先我們在VMWARE下的Linux虛擬機格式化一個10GB的硬盤,格式化成Ext3文件系統

(格式化分區,我們看到格式化過程中出現Creating journal (32768 blocks),這個步驟就是創建journal日誌文件。)

2、格式化完成以後,mount分區,往分區中寫入數據

(mount格式化後的分區,mount到/mysql目錄下)


(通過SSH客戶端,把數據上傳到/mysql掛載的文件系統下)

3、數據寫入完成,umount /mysql,用D-Recovery For Linux 展開分區


(umount 文件系統)


(根目錄信息)

(ucenter目錄下的文件)

(我們還看到,MetaDataDir下有個$Journal文件,這就是日誌文件,大小128MB)

4、刪除ucenter目錄,然後用D-Recovery For Linux掃描,對比結果


(刪除ucenter目錄)

(展開後ucenter目錄不見了)

(掃描丟失文件,選擇根據日誌恢復)

(掃描過程)


(掃描完成以後,左邊多出一個JournalRoot目錄,該目錄下顯示出被刪除的文件,這些文件就是原先ucenter目錄下的文件)


小結:
Ext3/Ext4文件系統下數據刪除後的恢復原理上很簡單,就是根據日誌文件殘留inode信息來恢復,由於日誌文件大小有限,不可能記錄下大量文件操作過程中產生的記錄。D-Recovery For Linux能應對Ext3/Ext4文件系統下少量文件刪除以後的恢復,恢復方法簡單易用。若是面對大量文件的刪除恢復,目前還沒有很好的解決方案。但是對於大文件以及oracle數據庫文件的恢復,可以採用逆向推算和oracle數據文件特點來提取,也能達到很好的效果。
任何數據能恢復的前提是,這個要恢復的數據沒有被新寫入的數據覆蓋。

本文使用的D-Recovery For Linux數據恢復工具,最新版本請從達思官網下載:
http://www.d-recovery.org
本文由達思數據恢復總工程師覃廷良撰寫,轉發請註明出處:http://www.bnuol.com
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章