👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
问题描述
搭载本地盘的实例(如大数据型、本地SSD型),使用ext4等文件系统,首次执行mount(挂载)操作时有可能会发生锁争夺,导致指令hang住。
问题原因
首次执行mount操作时需要初始化inode table(索引节点)。在Linux的2.6.37及更高的内核版本中,默认启用了lazyinit(延迟初始化)特性,导致inode table的初始化工作被延迟到mount操作后进行,并且本地盘在初始化时会占用较大吞吐量,影响业务稳定性,可能导致业务运行出现问题,比如卡顿、响应变慢等。
解决方案
方式一:mkfs格式化时关闭lazyinit功能
登录实例。
执行以下命令,禁用lazyinit。
mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sda1
查看格式化的本地盘的I/O情况。
iostat -x 5
直至本地盘I/O活动显示为0,完成初始化之后,再进行mount操作。
方式二:使用xfs文件系统或者选用内核版本高于4.x的镜像
使用xfs文件系统可有效规避该问题;或者选用veLinux 1.0 CentOS兼容版 with 5.10 kernel、CentOS Stream 9等高于4.x版本内核的镜像,也可以有效缓解该问题。