大家好,又見面了,我是你們的朋友全棧君。 在數(shù)據(jù)恢復(fù)案例開始之前有幾個概念需要了解塊組:Ext4文件系統(tǒng)的全部空間被劃分為若干個塊組,每個塊組內(nèi)的結(jié)構(gòu)都是大致相同的。 塊組描述符表:每個塊組都對應(yīng)一個塊組描述符,這些塊組描述符統(tǒng)一放在文件系統(tǒng)的前部,稱為塊組描述符表。每個塊組描述符大小為32字節(jié),其主要描述塊位圖、i-節(jié)點(diǎn)位圖及i-節(jié)點(diǎn)表的地址等信息。 超級塊(Superblock):用于存儲文件系統(tǒng)的配置參數(shù)(如塊大小、總塊數(shù)、i-節(jié)點(diǎn)數(shù))和動態(tài)信息(當(dāng)前空閑塊數(shù)和i-節(jié)點(diǎn)數(shù))。Ext4文件系統(tǒng)的超級塊(Superblock)開始于1024字節(jié)處,即2號扇區(qū)。 i節(jié)點(diǎn):描述文件的時間信息、大小、塊指針等信息。 塊組描述符和超級塊在塊中的位置:當(dāng)塊大小為2個扇區(qū)時,0號塊是引導(dǎo)程序或者保留塊,超級塊起始于1號塊。當(dāng)塊大小為4個扇區(qū)時,引導(dǎo)程序或者保留塊位于0號塊的前兩個扇區(qū),超級塊位于0號塊的后兩個扇區(qū)。當(dāng)塊大小為8個扇區(qū)時,引導(dǎo)程序或者保留塊位于0號塊的0-1號扇區(qū),超級塊位于0號塊的2-3號扇區(qū)。 Ext4文件系統(tǒng)的整體結(jié)構(gòu)及第一個塊組的具體結(jié)構(gòu)如圖1所示。 數(shù)據(jù)恢復(fù)初檢和分析:某公司Ext4文件系統(tǒng)umount失敗,管理員進(jìn)行了fsck操作檢查一致性,結(jié)果導(dǎo)致Ext4文件mount不上(有時也會表現(xiàn)為導(dǎo)致目錄變成了文件)。報錯提示信息:mount: wrong fs type, bad option,bad superblock 由于日志和數(shù)據(jù)不一致造成正常文件系統(tǒng)數(shù)據(jù)被覆蓋的情形在Ext3、Ext4文件系統(tǒng)中發(fā)生頻率較高,不過journal日志文件留有緩沖數(shù)據(jù),數(shù)據(jù)恢復(fù)時可以通過joumal日志文件找到相應(yīng)信息并重建源文件。 Linux系統(tǒng)的硬盤的第一個扇區(qū)是MBR扇區(qū),通過MBR分區(qū)表觀察得知本案例中共分為兩個分區(qū),分別為大小為7.8G的交換分區(qū)和大小為282G的文件系統(tǒng),共300G文件大小。數(shù)據(jù)恢復(fù)工程師探討后決定通過joumal日志文件分析找回丟失的數(shù)據(jù)。 1.塊大小為固定的4KB,即8個扇區(qū)。 2. 超級塊(Superblock)起始位置在1024字節(jié)處,即2號扇區(qū),大小為2個扇區(qū)。 3.塊組描述表從第一個塊開始,即從4096字節(jié)處開始。 5.數(shù)據(jù)恢復(fù)過程 首先用數(shù)據(jù)恢復(fù)工具將Ext4文件系統(tǒng)打開,可以看到0-23扇區(qū)的數(shù)據(jù)(包括超級塊和塊組描述符)被日志記錄覆蓋。Ext3、Ext4文件系統(tǒng)的日志頁以C0 3B 39 98開頭。 如圖2所示。 圖2 超級塊中可以反映出關(guān)于塊大小的信息。從.journal日志中吧超級塊的備份查找出來再通過數(shù)據(jù)恢復(fù)工具進(jìn)行超級塊信息的查找。其標(biāo)志是“53ef”。查找超級塊方式如圖3所示。查看塊大小方法如圖4和圖5所示。超級塊0x18-0x1B處描述塊大小,確定本案例塊大小為4KB。 圖3 通過超級塊查看塊大小如圖4所示。 圖4 通過數(shù)據(jù)恢復(fù)軟件的模板編輯器也可以顯示塊大小如圖5所示。 圖5 第二步,重建(恢復(fù))超級塊;由于原文件系統(tǒng)超級塊損壞,所以恢復(fù)文件時,要把這部分超級塊信息粘貼回去,即放在2號扇區(qū)開始,或1024字節(jié)處。做完以上操作,超級塊備份某些地方與實(shí)際的超級塊數(shù)值可能不一致,需要通過數(shù)據(jù)恢復(fù)工具的模板管理器進(jìn)行修改。本案例對超級塊所在的塊組作了修改,它在第0個塊組里。 如圖6所示。 圖6 第三步:重建(恢復(fù))塊組描述表;由于部分塊組描述表被破壞,所以在.journal日志文件里找到所有的塊組描述表,并把它們粘貼回去。.journal日志文件里,如圖1所示,塊組描述符表存儲在超級塊的后面。所以要找塊組描述表時,可以先找到超級塊。找到后將塊組描述符表內(nèi)容粘貼到4096字節(jié)處。 第四步;重建(恢復(fù))目錄;當(dāng)我們要恢復(fù)某個文件夾里的文件時,比如我們需要恢復(fù)kyproc文件夾里的數(shù)據(jù)。我們發(fā)現(xiàn)這些文件夾在WinHex里是不能打開的狀態(tài)。如圖7所示。很明顯這個目錄損壞了,打開其節(jié)點(diǎn)信息,發(fā)現(xiàn)正常數(shù)據(jù)被日志填充,如圖8所示。 圖7 圖8 我們找到它的上一級目錄,即var文件夾。右擊點(diǎn)“open”,打開看到var文件里的所有文件的目錄信息。找到要恢復(fù)的kyproc目錄的信息,12 32 EE 00是其i-節(jié)點(diǎn)號,10 00表示其目錄項(xiàng)長度,06表示其文件名稱長度,02表示其文件類型為目錄。如圖9所示。 圖9 然后在var文件夾的目錄塊下查找kyproc目錄的位置,如圖10所示,標(biāo)紅的位置是找到的結(jié)果。此位置顯示所在塊號為62399108。 圖10 根據(jù)所在塊號,就可以定位kyproc目錄相應(yīng)節(jié)點(diǎn)的位置。由于人工補(bǔ)節(jié)點(diǎn)比較繁瑣,我們可以打開.journal日志文件,從里面找到其節(jié)點(diǎn)信息,把相應(yīng)的信息粘貼回去。 上述方法可以重建(恢復(fù))目錄,恢復(fù)目錄里的文件也是通過同樣的方法從.journal日志文件里找到相應(yīng)的文件的節(jié)點(diǎn)信息,找到后粘貼回原來的位置,達(dá)到重建(恢復(fù))文件的目的。 轉(zhuǎn)載于:https://blog.51cto.com/sun510/2107356 發(fā)布者:全棧程序員棧長,轉(zhuǎn)載請注明出處:https:///141725.html原文鏈接:https:// |
|