我对 ext4 报告使用空间的方式有点困惑。在新的 Debian wheezy(测试)安装中,与du
.然后我通过网络启动该计算机并安装 SSD。网络启动的操作系统 (Debian squeeze) 显示 SSD 上仅使用了 180MB 的额外空间。该日志有 128MB,因此除此之外没有太多额外的内容。
df
当不是为根目录或已删除文件保留的空间时,报告的额外已用空间是多少?使用谷歌主要是由那些常见原因导致的,我已经排除了这些原因。为什么当安装在不同操作系统上时,同一文件系统上的数量会有所不同?我通过重新安装进行了测试,在气喘吁吁的安装中,额外的使用量再次约为 1GB,当我网络启动并安装该 SSD 时,额外的使用量为 180MB。
在 XFS 和 btrfs 上,额外报告的使用情况似乎可以忽略不计。我意识到文件系统需要一些开销,但是当该开销与实际使用情况混合时会很不方便。
以下是一些详细的输出。
df
$ df -m on wheezy
Filesystem 1M-blocks Used Available Use% Mounted on
rootfs 57132 1567 52703 3% /
udev 7899 0 7899 0% /dev
tmpfs 1581 1 1581 1% /run
/dev/mapper/ssd-kvmhost 57132 1567 52703 3% /
tmpfs 5 0 5 0% /run/lock
tmpfs 3162 0 3162 0% /tmp
tmpfs 3162 0 3162 0% /run/shm
杜
$ du -sm /
592 /
tune2fs
显示 Inode 计数为 3670016,大小为 256,这确实解释了几乎所有已用空间。我只是不明白为什么不从大小中减去它,因为索引节点是静态保留的。将其算作空间,然后始终将其算作已使用,没有多大意义。
以下是来自网络启动的 Debian squeeze 的同一文件系统的输出:
aufs 7905 46 7859 1% /
tmpfs 7905 0 7905 0% /lib/init/rw
udev 7900 1 7900 1% /dev
tmpfs 7905 1 7905 1% /dev/shm
172.17.172.127:/storage/private/tftp/debian-live-6.0.3-amd64-lxde-desktop
24737 17448 7289 71% /live/image
tmpfs 7905 46 7859 1% /live/cow
tmpfs 7905 0 7905 0% /live
tmpfs 7905 1 7905 1% /tmp
/dev/mapper/ssd-kvmhost
56337 772 52703 2% /mnt
只是为了确认,在网络启动的操作系统上使用 du -sm / :
592 /
也许较旧的内核明智地不将静态保留的索引节点空间视为可用,因此不必将其显示为已使用?大小和已用空间均相差 795MB,几乎是 inode 所需的所有空间。那么180MB是多少呢?如果这也是静态的,那么从 Size 中减去它不是最佳选择吗?然后df
实际上可以显示真实的使用情况,就像其他文件系统似乎所做的那样。
在我看来,如果我的文件系统需要静态量的开销,那么对于相同数量的绝对空间,它只提供比其他一些文件系统更少的可用空间。 df 不应该反映这一点,并且还显示有多少可用空间我用过了?
答案1
ext[234] 默认情况下为每个 128 MB 块组保留 8192 个 inode,每组占用 2 MB,对于 60 GB 文件系统来说接近 1 GB。当您在另一个系统中安装驱动器时应该没有区别。看起来他们可能改变了内核报告在喘息和挤压之间使用空间的方式,尽管我还没有找到表明这是故意完成的提交。
答案2
如果您提供 df 和 du 的输出,您的问题会更容易回答。
但听起来很像 df 说我比 du 多使用了 20G 的磁盘空间。为什么?
基本上,您的文件系统将某些磁盘用于其自己的元数据,即不是文件本身,而是用于跟踪文件、它们的名称、它们的权限、它们在磁盘上的位置等。
正如我上面链接的答案所说,跑步tune2fs -l <device name>
会向您显示更多信息。特别是,inode count
xinode size
应接近df
和之间的差du
。
再次基于之前的答案,我的系统的根分区将大约 1.77% 的磁盘用于 inode。 60 GB * 0.0177 ~= 1 GB。
mount
我怀疑 180 MB 的数字不正确,但如果没有更多详细信息(例如网络启动系统上的输出),则无法确定。例如,可能是由于minixdf
/bsddf
安装选项。