文件删除后如何更新目录大小?

文件删除后如何更新目录大小?

这主要是理论问题,没有真正的实际用途。

如您所知,文件名存储在目录 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 .

为什么文件删除后目录使用的空间没有更新?有没有办法释放空间而不重新创建目录?

答案1

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

为什么它不是即时完成的,我不能说。也许是为了性能问题?

相关内容