暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

xfs文件系统inode大小使用问题

原创 szrsu 2023-01-10
2176

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

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

3、实测情况如下:

[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了

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

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论