Linux 上有多少数据会占用空文件?

Linux 上有多少数据会占用空文件?

我想计算或估计一下在 Linux 上清空 1000 个文件夹或 1000 个空文件需要多少磁盘空间。您能估算一下这需要多少磁盘空间吗?

答案1

每个文件夹一开始会占用 1 个块,再加上 Linux 内部目录条目中包含的任何数据。块大小因文件系统而异。要检查块大小,您可以运行blockdev 命令。

根据 GNU 文档,目录条目包含以下内容:

char d_name[] 这是以空字符结尾的文件名组件。这是所有 POSIX 系统中唯一可以信赖的字段。

ino_t d_fileno 这是文件序列号。为了与 BSD 兼容,您也可以将此成员称为 d_ino。在 GNU/Linux 和 GNU/Hurd 系统以及大多数 POSIX 系统上,对于大多数文件,这与 stat 将为文件返回的 st_ino 成员相同。请参阅文件属性。

unsigned char d_namlen 这是文件名的长度,不包括终止空字符。其类型为 unsigned char,因为这是适当大小的整数类型。此成员是 BSD 扩展。如果此成员可用,则定义符号 _DIRENT_HAVE_D_NAMLEN。

unsigned char d_type 这是文件的类型,可能未知。为其值定义了以下常量:

DT_UNKNOWN 类型未知。只有某些文件系统完全支持返回文件类型,其他文件系统可能始终返回此值。

DT_REG 常规文件。

DT_DIR 一个目录。

DT_FIFO 命名管道或 FIFO。请参阅 FIFO 特殊文件。

DT_SOCK 本地域套接字。

DT_CHR 字符设备。

DT_BLK 块设备。

DT_LNK 一个符号链接。

总共有 3 个字符串。它们的大小将根据名称的长度而变化。

此外,还需要考虑权限代码,这将是另一个字节左右。

添加您的块大小(通常默认值为 4 KB)并计算总数。

如果我们制作一个 SWAG,其中所有内容总计为 5KB 数据,那么整个 SWAG 所消耗的总空间将达到大约 5000KB。

我在我的 RHEL 服务器上尝试了这个,一个空文件夹使磁盘利用率增加了 4 千字节。 这表示文件夹保留的空间,直接来自文件系统中使用的块大小。由于我使用 4kb 块,因此文件系统保留了 4kb。

在您自己的服务器上测试:

从命令提示符运行:df -hk

请记下“AVAILABLE”列下的数值。

mkdir“随便”

再次运行 df -hk 并注意差异。

相关内容