Ext4
移動數百萬個小文件會導致“空間不足”錯誤
我不想將大約 450 萬個文件(大小範圍從 100 到 1000 字節)從一個分區移動到另一個分區。文件夾的總大小約為 2.4 GB
首先,我嘗試壓縮它並將壓縮文件移動到新位置。它只能粘貼 ~800k 文件並顯示“空間不足”錯誤。
接下來我嘗試了 mv 命令,它也導致了同樣的情況。
使用 rsync 也會導致相同的錯誤,只有大約 800k 文件被移動。
我檢查了磁碟空閒狀態,它低於限制。(新分區有 ~700 GB 可用空間,所需空間約為 2.4 GB)。
我檢查了那個分區的空閒inode,它是一樣的。它只使用了最大可能的 191 M inode 中的 ~800k。(我實際上已經用 ‘mkfs.ext4 -T small /dev/sdb3’ 格式化了分區)
我不知道這裡出了什麼問題。每次它只能複製或移動 ~800k 文件。
我找到了錯誤的原因(在不同的論壇上找到)。該錯誤是由於“dir_index”參數啟用的 ext4 使用的散列算法造成的。對我來說有太多的雜湊衝突,所以我通過以下命令禁用了它:
tune2fs -O "^dir_index" /dev/sdb3
缺點是由於沒有索引,我的分區比以前慢。
有關該問題的更多資訊: ext4:神秘的“設備上沒有剩餘空間”-錯誤