为什么 (free_space + used_space) != total_size 在 df 中?

Tim*_*nes 17 linux ext4

可能的重复:
ext4:如何考虑文件系统空间?

我有一个大约 2TB 的 ext4 USB 外置磁盘,大约已满:

$ df 
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdc             1922860848 927384456 897800668  51% /media/big
Run Code Online (Sandbox Code Playgroud)

我想知道为什么总大小 (1922860848) 与 Used+Available (1825185124) 不同?从这个答案中,我看到 5% 的磁盘可能是为 root 保留的,但这仍然只会占用用于 1921328166 的总数,这仍然是关闭的。它与其他一些文件系统开销有关吗?

如果相关,则lsof -n | grep deleted显示此磁盘上没有已删除的文件,并且此磁盘中没有安装其他文件系统。

编辑:根据要求,这是输出 tune2fs -l /dev/sdc

tune2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   big
Last mounted on:          /media/big
Filesystem UUID:          5d9b9f5d-dae7-4221-9096-cbe7dd78924d
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              122101760
Block count:              488378624
Reserved block count:     24418931
Free blocks:              480665205
Free inodes:              122101749
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      907
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Wed Nov 23 14:13:57 2011
Last mount time:          Wed Nov 23 14:14:24 2011
Last write time:          Wed Nov 23 14:14:24 2011
Mount count:              2
Maximum mount count:      20
Last checked:             Wed Nov 23 14:13:57 2011
Check interval:           15552000 (6 months)
Next check after:         Mon May 21 13:13:57 2012
Lifetime writes:          144 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      68e954e4-59b1-4f59-9434-6c636402c3db
Journal backup:           inode blocks
Run Code Online (Sandbox Code Playgroud)

Mat*_*Ife 20

没有缺失的空间。保留的 5% 向下舍入到最接近的有效数字。

1k 块:1922860848

保留 1k 块:(24418931 * 4) = 97675724

使用的总块数:927384456 + 897800668 + 97675724 = 1922860848

编辑:关于您对 df 块和“块计数”块之间差异的评论。

所以 4k 块的差异是 (1953514496 - 1922860848)/4 = 7663412

大部分“差异”由“每组 Inode 块”参数组成,该参数为 512。

由于每组有 32768 个块,因此组数为 488378624 / 32768,向下取整为 14904。

乘以它占用的 512 个块得到 7630848 个块。

这给了我们 7663412 - 7630848 = 32564 下落不明。我假设这些块构成了您的日志大小,但对那个块不太确定!

  • df 以 1k 块为单位计数,但实际文件系统块大小为 4k(请参阅 tune2fs 块大小),因此您需要将保留块大小乘以 4 以对其进行标准化以与 df 输出进行比较。 (2认同)