Linux
對於 SD 卡上的 ext4 fs,lazy_itable_init=1 所涉及的風險
我的設置如下:
- Linux 核心 2.6.28
- e2fsprogs 1.42.7
- 64 GB 10 級 SD 卡
我正在嘗試加快將整個卡格式化為 ext4 文件系統所需的時間。我的研究已將我指向 mkfs.ext4 的lazy_itable_init=1 選項。如果我理解正確,這些選項將大大提高格式化 SD 卡分區的速度,但是這是通過將 inode 的初始化推遲到文件系統首次掛載時來實現的。此初始化將由核心在後台執行(僅限 v2.6.27+)
手冊頁有以下關於此選項的句子:
這
$$ flag $$顯著加快了文件系統的初始化,但它需要核心在文件系統首次掛載時在後台完成文件系統的初始化。
我的問題是,如果核心沒有在後台完成文件系統的初始化會發生什麼?
我已經通過使用lazy_itable_init=1 選項進行格式化、掛載文件系統並在不久之後移除SD 卡來對此進行測試。當我再次插入卡時,我可以毫無問題地掛載分區並寫入幾個包含零的 100 MB 文件。這些被讀回並且是正確的。
這只是僥倖嗎,在發生這樣一系列事件後,我能保證看到這種行為嗎?
用零初始化 inode 表的原因是為了確保之前碰巧存在的任何垃圾都不會被錯誤解釋為有效的 inode
e2fsck
。通常它不會有任何區別,但如果e2fsck
檢測到錯誤,它可能會嘗試通過啟發式辨識 inode 來嘗試恢復點陣圖是否指示它們正在使用中,因此它可能會嘗試恢復您必須從中刪除的無效 inode /失去+找到。