关于 inode 编号的混淆

关于 inode 编号的混淆

在 xfs 文件系统上,我的印象是:

# xfs_info /dev/mapper/rootvg-root
meta-data=/dev/sda1              isize=512    agcount=16, agsize=1285043 blks
         =                       sectsz=4096   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=19730834, imaxpct=25
         =                       sunit=64      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=5119, version=2
         =                       sectsz=4096   sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

imaxpct=25- 是文件系统 inode 可能占用的空间百分比

isize=512- 每个单个索引节点的字节大小

所以当我查看下面的设置时:

# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-root        80G  42G   38G   51% /

# df -hi
Filesystem                   Inodes IUsed IFree IUse% Mounted on
/dev/mapper/rootvg-root        1.3M   27K   1.3M    1% /

我的索引节点数量怎么可能最多只有 130 万个?如果每个 inode 为 512 字节,则意味着 inode 可以占用的磁盘空间总量(如果完全使用)仅为 665mb。 80gb 的 25% 是 20gb,所以我预计 inode 会比这个多得多。

我在 mkfs.xfs 中没有看到任何选项来确定 inode 的数字,而只有每个 inode 的大小和文件系统 inode 可以占用的百分比。

我在这里缺少什么有什么想法吗?这是针对 rhel 7、xfs 文件系统的。

答案1

与经典的 Unix 文件系统不同,XFS 不会同时分配所有 inode mkfs。相反,它会根据需求创建新的 inode,直到达到限制imaxpct。这使得未使用的索引节点“浪费”的磁盘空间降至最低。

如果默认imaxpct限制不适合您的使用,您可以在文件系统已安装并处于活动状态时使用实用程序-m的选项进行调整。xfs_growfs

这样做的副作用是,Inodes的值df -i不会反映文件系统上最大可用的 inode 数量,直到文件系统实际上有理由创建足够的 inode 来达到限制imaxpct

相关内容