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

前端之家收集整理的这篇文章主要介绍了Linux目录大小/块计数的单调增长前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在 @L_502_0@上,(可能是文件系统块大小的函数),当我创建一个目录并对其进行统计时,它返回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并在相关文件

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

猜你在找的Linux相关文章