EXT3文件系統是目前LINUX平臺使用最多的文件系統,原起自EXT2,在其基礎上加入日誌功能(主要改變),EXT3作爲許多LINUX系統默認的文件系統,誤操作也在所難免。最常見的,基於LINUX EXT3上誤刪除操作的數據恢復就非常重要了。加上現在LINUX平臺通常不用作娛樂,整體而言,數據較WINDOWS平臺重要;同時,基於LINUX平臺的數據恢復軟件及恢復原理方面的文章都較WINDOWS少得多。鑑於此,寫此文章。
EXT3文件系統原理方面的文章很多,同時加上LINUX的開源性及EXT3本身的簡潔性,通常瞭解EXT3文件系統並不是難事。作爲誤刪除,我們需要了解文件的存儲結構與刪除所做的實際操作。
EXT3是典型的UNIX類文件系統,首先將整個分區按固定大小的BLOCK分組,再將若干固定數目的BLOCK分組爲BLOCK GROUP。這個概念爲了描述方便,我們先放一放。再說別的。
EXT3中的每個文件可以看成由參數+數據組成。比如一個a.tar,其文件包是數據,它的大小、日期、存儲位置等。用來區別每個文件的唯一標識是這個文件的"標號"
,可以簡單理解:一個EXT3文件系統裏有N個文件,其中M號文件大小爲XX,日期爲XX,數據存儲位置爲XX,這樣就可以通過存儲位置得到其數據XXX。這裏沒有談到名稱,初步可以理解爲EXT3的文件系統裏沒有名稱。名稱和目錄樹都是爲了更人性化地解讀文件系統的一個助記符。沒有名稱和目錄樹,EXT3也可以完好地存儲文件(可以這樣理解),但只能看到一大堆大小不同、只在標號、沒有目錄層的“散”文件。我們看如何在此基礎上加入目錄:首先我們將所有目錄、文件統統看成文件(其實目錄本身和普通數據文件一樣,也有屬性、大小、內容,只是其內容是爲了助記整個文件系統的目錄結構的)。目錄中可以保存其下文件(包括目錄)的標號,以此類推。但只有標號,很難理解文件所代表的內容,所以可以給標號同時綁定一個人性化的名稱,即文件名,使文件名與文件標號一一對應。
每個文件特有的屬性通過編好序的INODE進行描述。通常根目錄是2號文件,根目錄本身存儲(可以想像成與普通文件一樣的記錄)根目錄下一級子目錄及文件的名稱及對應的INODE編號,在遍歷文件系統時可以讀到文件名稱,同時讀到其節點號。
每個塊組(前面講過)分散放置系統中所有的INODE,其存儲方式通過其他結構進行描述。系統可以很容易算出第N號節點的存儲位置。通過節點就可以找到數據了。