麒麟服务器【文件数量达到一定值时IO异常】

  1. 问题描述:

    当系统文件数量达到一定值(约2000万)时,系统IO异常,文件系统只读,文件写入失败,导致应用系统及数据库运行异常,可造成业务中断。
    此缺陷涉及ARM架构下麒麟操作系统底层系统漏洞。经与麒麟软件分析,初步判断在ARM架构下,kylinoS最多可容纳约2063万个文件,当产生的文件数量大于前数,且内存pagesize、文件系统blocksize均为64k时即会导致文件目录分裂触发系统bug。此缺陷也可能存在于CentOS等其他Linux发行版本中。
     

  2. 问题处理:

    这个bug是需要同时满足三个条件才会触发:
    1)是arm架构的cpu下,
    2)ext4文件系统格式化BlockSize成64K(默认4k),
    3)单层文件夹下文件数达到2000W以上, 是单个文件夹一级目录, 不算二级目录里。
    达到以上这3个条件才会触发。
    处理方法:升级内核到23.37以上版本。或者BlockSize不设置成64k
     

  3. 查看blocksize大小

    xfs_info /dev/sdb 文件较多的时候,执行该命令时需要等一会。
    file
     

  4. 修改BlockSize大小

    该命令会格式化磁盘,需要先做好数据备份。

    umount  /dev/sdb
    mkfs.xfs  -f  -b  size=1024   /dev/sdb

    file
    使用多大的block,要根据实际工作的需要来确认。如果很多小于4K的小文件,可以考虑修改block的大小。

发表回复 0

Your email address will not be published.