众所周知,空文本文件的字节数为零:
但是,它们中的每一个都包含metadata,根据我的研究,它存储在inodes 中,并且确实使用 space。
鉴于此,我认为可以通过纯粹创建空文本文件来填充磁盘。这样对吗?如果是这样,我需要在 1GB 的磁盘中填充多少个空文本文件?
为了做一些检查,我运行了,df -i
但这显然显示了正在使用的 inode 的百分比(?),而不是它们的重量。
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 947470 556 946914 1% /dev
tmpfs 952593 805 951788 1% /run
/dev/sda2 28786688 667980 28118708 3% /
tmpfs 952593 25 952568 1% /dev/shm
tmpfs 952593 5 952588 1% /run/lock
tmpfs 952593 16 952577 1% /sys/fs/cgroup
/dev/sda1 0 0 0 - /boot/efi
tmpfs 952593 25 952568 1% /run/user/1000
/home/lucho/.Private 28786688 667980 28118708 3% /home/lucho
Run Code Online (Sandbox Code Playgroud) 我的印象是 tar 不压缩文件。想象一下,当我压缩一百万个小文件(du -h
~4.2G)并且生成的 tar 是它的四分之一(ls -lh mytar.tar
~1.3G)时,我会感到惊讶!
显然,这些小文件占用的空间超出了它们报告的大小,另一个问题的答案表明,每个非空文件无论大小如何都至少占用1KB。但是这 1KB 是从哪里来的,它在不同的文件系统(这是 ext4)中是否有所不同,并且 1.01 KB 的文件会占用 2KB 吗?
简而言之,我如何衡量真实的文件大小,尤其是目录中的许多文件?我试过了du --apparent-size -h
,我只得到 437M,所以我对这三个截然不同的数字感到很困惑。
根据这个Red Hat 错误报告(我正在尝试重现),看起来 Netapp 文件管理器能够将数据直接存储在 inode 中,以防文件非常小。
考虑到我有一个具有大 inode 的 FS,是否可以在 Unix / Linux 文件系统上以这种方式存储数据?