ext2/ext3/ext4 中的檔案是如何佈局的?

ext2/ext3/ext4 中的檔案是如何佈局的?

幾天前,我的 ext4 格式閃存卡上的所有元資料都被覆蓋了。

我現在要推測這是如何發生的。這純粹是猜測。就在我使用另一張卡後發生了這種情況。該卡上的捲標現在與其他卡相同。所以我懷疑當我拉動另一張卡時,我未能同步/卸載另一張卡。當卡片被拔出時,讀卡機無法正確通知系統,因此下一個系統產生同步,系統不知道我更換了卡,並且它覆蓋了元資料。

發生這種情況時我做的第一件事是使用 dd 創建一個圖像。我做的第二件事是將圖像設為唯讀。我做的第三件事是製作圖像的可寫副本。

我發現了 photorec,它成功地恢復了一些東西,但不是全部。我認為原因之一是它是非破壞性的。

由於一些恢復的文件是文本,我懷疑 photorec 使用了有關文件格式的最少資訊(如果有)。

要嘗試從卡中恢復任何其他文件,我需要知道文件在 ext2 中的佈局方式。我懷疑基本原理是文件被分成塊,這些塊被寫入扇區,並且如何找到下一個扇區的資訊以某種方式寫入當前扇區。

我最需要的是有關如何寫入下一個扇區的指標的資訊。

PS:我正在閱讀 photorec 程式碼,但閱讀時遇到一些問題。是我的問題還是程式碼醜陋,我不知道。

PPS:我找到了一些有關 ext 檔案系統如何佈局的信息,但似乎找不到基本的檔案佈局資訊。

答案1

PhotoRec 掃描磁碟(或磁碟映像),搜尋看起來像是已知檔案格式的連續位元組區塊(例如,它可以透過段標頭識別 JFIF/EXIF (JPEG))。非常簡單但有限。

偵探套件是一個深入研究文件系統的好工具。只要稍加小心(並為其工具編寫腳本並在磁碟映像誤入歧途時對其進行十六進位編輯),它就可以用於復原。

對於更深入理解 ext 的工具,請嘗試ext4magic? (我還沒有需要使用這個。)

Documentation/filesystems/ext2.txt內核原始碼中有一般結構的高階概述。這Ext4 維基有很好的訊息,包括Ext4 磁碟佈局包含更多詳細資訊(主要也適用於 ext[23])。

但是,是的,文件的資料被分成區塊。在 ext2 中,每個檔案都由一個 inode 表示,該 inode 包含直接區塊(指向資料區塊的指標)、間接區塊(包含指向直接區塊的指標)、雙間接區塊和三重間接區塊。沒有反向鏈接,因此要找到資料區塊的同級,您必須先掃描所有索引節點和區塊指針以找到其所有者。

相關內容