麒麟服务器【文件数量达到一定值时IO异常】
-
问题描述:
当系统文件数量达到一定值(约2000万)时,系统IO异常,文件系统只读,文件写入失败,导致应用系统及数据库运行异常,可造成业务中断。
此缺陷涉及ARM架构下麒麟操作系统底层系统漏洞。经与麒麟软件分析,初步判断在ARM架构下,kylinoS最多可容纳约2063万个文件,当产生的文件数量大于前数,且内存pagesize、文件系统blocksize均为64k时即会导致文件目录分裂触发系统bug。此缺陷也可能存在于CentOS等其他Linux发行版本中。
-
问题处理:
这个bug是需要同时满足三个条件才会触发:
1)是arm架构的cpu下,
2)ext4文件系统格式化BlockSize成64K(默认4k),
3)单层文件夹下文件数达到2000W以上, 是单个文件夹一级目录, 不算二级目录里。
达到以上这3个条件才会触发。
处理方法:升级内核到23.37以上版本。或者BlockSize不设置成64k
-
查看blocksize大小
xfs_info /dev/sdb文件较多的时候,执行该命令时需要等一会。

-
修改BlockSize大小
该命令会格式化磁盘,需要先做好数据备份。
umount /dev/sdb mkfs.xfs -f -b size=1024 /dev/sdb
使用多大的block,要根据实际工作的需要来确认。如果很多小于4K的小文件,可以考虑修改block的大小。