Linux目录大小/块计数的单调增长

Linux上,(可能是文件系统块大小的函数),当我创建一个目录并对其进行统计时,它返回4096的大小.我可以在这个目录中创建文件,直到某一点,而不会增加感知的大小目录(由stat报告).

在某些时候,当目录填满许多文件时,目录大小气球(我不是在谈论目录的内容,我说的是代表目录本身所消耗的块).如果删除文件,则目录大小保持不变.

这是一个简单的例子:

[root@uxlabtest:/]$mkdir test
[root@uxlabtest:/]$stat test
  File: `test'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1396685     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-07-26 14:06:04.000000000 -0400
Modify: 2011-07-26 14:06:04.000000000 -0400
Change: 2011-07-26 14:06:04.000000000 -0400

然后触摸一堆文件:

[root@uxlabtest:/]$for i in `seq 1 10000`; do touch /test/$i; done
[root@uxlabtest:/]$stat test
  File: `test'
  Size: 155648          Blocks: 312        IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1396685     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-07-26 14:06:04.000000000 -0400
Modify: 2011-07-26 14:06:56.000000000 -0400
Change: 2011-07-26 14:06:56.000000000 -0400

然后删除文件:

[root@uxlabtest:/]$rm -rf /test/*
[root@uxlabtest:/]$stat test
  File: `test'
  Size: 155648          Blocks: 312        IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1396685     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-07-26 14:07:11.000000000 -0400
Modify: 2011-07-26 14:07:12.000000000 -0400
Change: 2011-07-26 14:07:12.000000000 -0400

我的问题是:

>为什么目录的大小/块数会单调增加?
>这是底层文件系统还是Linux VFS的功能?
>可以在不删除和重新创建目录的情况下减小目录大小吗?
>加分点:指向实现此行为的内核源代码.

解决方法

以下是ext2 / ext3 / ext4的答案.如果它们适用于其他文件系统,则取决于它们的实现.

> user48838正确回答了这个问题.更多文件消耗更多元数据.它们以4k块或文件系统创建时定义的任何其他大小分配
>是的,它是真实文件系统的功能/问题
>在ext3文件系统中,这是不可能的.只能通过重新创建(空)目录
>源代码大约是here并在相关文件中

但你有运气.重新创建已删除的相同数量的文件时,目录大小将保持不变.只有当您添加更多文件时,它才会增加.

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...