Filesystems

文件刪除後如何更新目錄大小?

  • November 9, 2014

這主要是沒有實際實際用途的理論問題。

您可能知道,文件名儲存在目錄 inode 中。這意味著我們擁有的文件越多,文件名越長,目錄使用的空間就越多。

不幸的是,如果從目錄中刪除文件,則目錄使用的空間不會被釋放並且仍然被使用。

$ mkdir test ; cd test
# next command will take a while ; for me it was about 6 minutes
$ for ((i=1;i<103045;i++)); do touch very_long_name_to_use_more_space_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:36 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:39 .

為什麼刪除文件後目錄使用的空間沒有更新?有沒有辦法在不重新創建目錄的情況下釋放空間?

您可以fsck.ext4 -D在未掛載的文件系統上使用優化目錄:

   -D     Optimize  directories  in filesystem.  This option causes e2fsck
          to try to optimize all directories, either by reindexing them if
          the  filesystem  supports directory indexing,  or by sorting and
          compressing directories for smaller directories, or for filesys‐
          tems using traditional linear directories.

ext3該選項在和上也有效ext2

為什麼它不是即時完成的,我不能說。也許是因為性能問題?

引用自:https://unix.stackexchange.com/questions/167025