xfs文件系统inode使用问题

本文探讨了在XFS文件系统中遇到inode使用完毕但容量未满的情况,尤其是当存储大量小文件并使用扩展属性时。通过模拟实验展示了如何通过调整`imaxpct`参数来增加inode的可用空间,从而解决写入限制问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

之前在ceph里面就出现过,inode使用完了,但是容量没使用完的问题,当时是因为设置的isize为2048,造成后期的inode的剩余空间比较分散,后面无法分配的情况,本篇讲的是另外一个问题

在使用另外一套文件系统的时候,存储元数据的时候使用的是扩展属性,所以文件并不怎么占用空间,而文件数目很大,后期出现了inode使用完的情况

现象模拟

我们平时在使用一个目录的时候,因为文件都有一定的大小,所以很少出现空间未使用完,而inode使用完的情况,但是这种情况是肯定存在的

  • 准备一个10G大小的分区
  • 格式化成xfs
  • df -i 检查inode的数目,然后使用seq 4882432 |xargs -i touch {} 持续写入空文件
  • 等待一段时间以后,观察容量的使用情况和inode使用情况

实测情况如下:

[root@lab101 ~]# df -i /mnt
Filesystem      Inodes   IUsed IFree IUse% Mounted on
/dev/sdc1      4882496 4882496     0  100% /mnt
[root@lab101 ~]# df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc1       9.4G  2.6G  6.8G  28% /mnt

可以看到,inode使用了100%,容量使用了28%,这个时候的写入会提示

[root@lab101 m]# touch testfile
touch: cannot touch ‘testfile’: No space left on device

这个地方出现这个情况的原因是,默认xfs文件系统设置的inode的占用空间的百分比最大为25%,我们看下这个值

[root@lab101 m]# xfs_info /dev/sdc1|grep imaxpct
data     =                       bsize=4096   blocks=2441216, imaxpct=25

可以看到imaxpct=25,实际上这个是可以调整的

[root@lab101 m]# xfs_growfs -m 30 /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=610304 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2441216, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
inode max percent changed from 25 to 30

通过xfs_growfs命令可以设置,这个后面接的数字就是百分比

[root@lab101 m]# xfs_info /dev/sdc1|grep imaxpct
data     =                       bsize=4096   blocks=2441216, imaxpct=30

再次查询inode的使用情况

[root@lab101 m]# df -i /mnt
Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/sdc1      5858912 4883008 975904   84% /mnt

可以看到又多出了很多空闲的inode了

总结

碰到写入很多小文件的情况,inode不够用的时候,如果空间足够,可以通过调整imaxpct进行inode的分配

备注

默认isize=512字节
默认的空间占用为25%
通过这个可以计算出,固定空间支持的inode数目,然后可以通过比例去调整inode总数大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武汉磨磨

打赏是写出更好教程的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值