如何清理 ext3/ext4 文件系統中的日誌?
一些序言:我正在
dd
從雙主機(即具有相同的虛擬化硬體佈局和軟體包,但具有不同的使用歷史)中獲取磁碟設備的按位副本(通過命令)。為了優化圖像大小,我將分區上的所有空白空間都用零(例如 from/dev/zero
)。我也知道每個分區的保留塊,並在尾隨之前將該值暫時降級為0% 。但我很好奇最終壓縮 (by
bzip2
) 圖像的差異。所有主機的文件大小幾乎相同tar-gziped
,但壓縮dd
圖像種類繁多(最多 20%)。那怎麼可能呢?文件系統日誌數據中是否有我無法清除的原因?主機上有十多個分區,每個分區報告的日誌大小為 128Mb。(我還檢查了碎片整理,一切正常:0或1由於e4defrag
工具報告)那麼,我的問題是有可能以某種方式清理
ext3/ext4
文件系統日誌嗎?(當然對於儲存的數據是安全的:)澄清
我很明確地問了一個關於如何在可能的情況下清理(清除/刷新)
ext3/ext4
文件系統中的日誌的問題,或者我弄錯了,並且沒有回收文件系統日誌佔用的磁碟空間這樣的功能,所以歡迎所有解決方案。提出我在序言中作為前提的問題的意圖以及對我的問題的回答將有助於我調查我遇到的問題。
您可以通過解除安裝或重新安裝只讀來清除日誌(複製時可以說是一個好主意)。使用 ext4,您還可以完全關閉日誌 (
tune2fs -O ^has_journal
),.journal
神奇的不可變文件將被自動刪除。當然,日誌數據仍將位於底層磁碟上,因此刪除日誌然後將可用空間填零可能會獲得最佳結果。上面的評論一針見血,
dd
看到了文件系統下面的位,它們如何以任何特定的排列方式形成取決於文件系統發生的所有事情,而不僅僅是文件的最終內容。預分配、延遲分配、多塊分配、納秒時間戳,當然還有日誌本身等特性都促成了這一點。此外,還有一種潛在的隨機分配策略:Orlov 分配器可以回退到隨機分配(請參閱 參考資料fs/ext4/ialloc.c
)。為了完整起見,帶有隨機清理的安全刪除功能也會導致差異(假設您刪除了零填充的鎮流器文件),儘管該功能(還不是)主線。
在許多系統上,
dump
andrestore
命令可用於類似的複製方法,由於各種原因,它在 Linux 中從未完全流行起來。