Linux

在大型文件系統上執行 fsck 記憶體不足

  • November 13, 2020

我照看一個只有 512 MB RAM 的舊 Debian linux 機器(執行 etch),但連接了很多外部儲存。一個 ext3 文件系統大小為 2.7 TB,fsck 無法檢查它,因為它的記憶體不足,出現如下錯誤:

分配目錄塊數組時出錯:記憶體分配失敗
e2fsck:中止

我添加了一個 4 GB 的交換分區,但它仍然沒有完成,但這是一個 32 位核心,所以我不希望再添加任何內容會有所幫助。

除了引導到 64 位核心之外,還有其他方法可以讓 fsck 完成它的檢查嗎?

64 位核心和大量 RAM 將允許 fsck 快速完成。或者,現在 e2fsck 中有一個選項,它會告訴它將所有中間結果儲存在一個目錄而不是 RAM 中,這非常有幫助。/etc/e2fsck.conf使用以下內容創建:

[scratch_files]
directory = /var/cache/e2fsck

(並且,顯然,確保該目錄存在,並且位於具有幾 GB 可用空間的分區上)。e2fsck 將執行 SLLOOOOWWWWWWW,但至少它會完成。

當然,這不適用於根 FS,但如果你有交換,那麼無論如何你都已經安裝了根 FS。

引用自:https://serverfault.com/questions/9218