分区超级块数据与 df 可用大小

分区超级块数据与 df 可用大小

我是 Linux 新手,我想知道某个分区的可用数据大小。但是执行不同的程序给了我不同的可用大小。

我对文件系统的了解:

  • 文件和子目录的名称存储在父目录文件中
  • 文件的元数据(例如访问权限)存储在索引节点数据(索引节点数据表)中
  • 每个分区可以有一个日志系统

我在 /dev/sdb3 上使用文件系统 EXT4 创建了一个全新的无数据分区,其中只有一个名为 Lost+Found 的文件夹,该文件夹是自动创建的,并使用 16 个 1024 字节的块,我认为是用于回收站。

和: sudo dumpe2fs -h /dev/sdb3


我得到:

Filesystem UUID:          38747522-7dbd-45f7-8bc3-a18cf4376b1d
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              13107200
Block count:              52428544
Reserved block count:     2621427
Free blocks:              51328243
Free inodes:              13107189
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Mon Dec  4 15:57:13 2023
Last mount time:          Mon Dec  4 15:59:30 2023
Last write time:          Mon Dec  4 16:16:29 2023
Mount count:              2
Maximum mount count:      -1
Last checked:             Mon Dec  4 15:57:13 2023
Check interval:           0 (<none>)
Lifetime writes:          231 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      8c75ef2f-d7d6-440b-8ae4-3459397d6a35
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0xef4a6bbd
Journal features:         journal_incompat_revoke journal_64bit journal_checksum_v3
Journal size:             1024M
Journal length:           262144
Journal sequence:         0x0000000c
Journal start:            1
Journal checksum type:    crc32c
Journal checksum:         0x46b9de63

块计数为:52428544,块大小:4096
Inode 计数:13107200,Inode 大小:256
日志长度:262144 块

所以我计算inode表13107200 * 256/4096 = 819200块
(52428544-819200-262144)* 4 = 205388800 1k块文件数据

当我打电话时:df /dev/sdb3
我得到:

Filesystem     1K-blocks  Used Available Use%
/dev/sdb3      205374440 61468 194810880   1%

我计算了205388800,但是文件数据块的大小是205374440,
留下了14360 1k块的差异,我错了什么?

下一个问题:
==============
dumpe2fs 说有 51328243 个 4096 字节的空闲块
,即 51328243*4= 205312972 1k 块
如果我添加 61468 个已用块,我得到 205374440 1k-来自 df 的块,没错。

但如果我从空闲块中减去保留块:
空闲块:51328243
保留块计数:2621427
(据我所知,这些是根的保留块)

我得到 (51328243-2621427)*4 = 194827264 1k 块的可用大小,但 df 告诉我,有 194810880 1k 块可用,这是 16384 1k 块的差异,我做错了什么。

最后一个问题:
==================
该分区是完全空闲的,分区上只有丢失+找到的文件夹,大小为 16 1kblocks。
为什么使用 61468 1k 块 - 我已经考虑过,inode 表、日志大小,还有什么需要 61MB 的空间?

感谢您提前抽出时间

相关内容