ext4已用空间(不是-m选项,不是删除文件)

ext4已用空间(不是-m选项,不是删除文件)

我对 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 countxinode size应接近df和之间的差du

再次基于之前的答案,我的系统的根分区将大约 1.77% 的磁盘用于 inode。 60 GB * 0.0177 ~= 1 GB。

mount我怀疑 180 MB 的数字不正确,但如果没有更多详细信息(例如网络启动系统上的输出),则无法确定。例如,可能是由于minixdf/bsddf安装选项。

相关内容