如何规避由于操作系统内核版本过低,通用型(g3a/g3i)/计算型(c3a/c3i)/内存型(r3a/r3i)规格实例中偶发出现IO hang问题?
axin 2025-04-19 共3人围观 ,发现0个评论👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
问题描述
在通用型(g3a/g3i)/计算型(c3a/c3i)/内存型(r3a/r3i)规格实例中使用的操作系统内核版本较老、IO合并较多且深度较大时,可能偶发出现IO hang问题。
问题原因
使用CentOS 7.x、Ubuntu 16.04、Ubuntu 18.04及Debian 9镜像的通用型(g3a/g3i)/计算型(c3a/c3i)/内存型(r3a/r3i)规格实例,有较低概率触发virtio_blk的缺陷,导致出现IO hang问题。
解决方案
火山引擎为您提供了blk-none工具,该工具会根据实例磁盘类型,将磁盘调度算法置为none或者noop避免该问题出现。
登录目标实例,操作详情可查看登录实例。
(可选)手动调整磁盘调度算法,临时解决问题。
说明
若由于业务限制暂不能重启实例时,您可以根据本步骤指引临时解决问题,但重启实例后配置将失效。
若可以重启实例,您可跳过本步骤执行步骤3,通过blk-none工具,持久化解决问题。
执行如下命令,查看磁盘信息。
lsblk
回显示例:
手动为每个磁盘配置调度算法。
请将命令中<vdx>替换为上一步中查询获取的实际磁盘名,例如:vda。
echo "none" > /sys/block/<vdx>/queue/scheduler
安装blk-none工具,持久化解决问题。
执行如下命令,通过安装blk-none工具。
通过火山引擎内网安装
CentOS 7.x
wget http://mirrors.ivolces.com/extra-tools/centos/7/rpms/blk-none-v1.0.1-1.ve1.x86_64.rpmyum install ./blk-none-v1.0.1-1.ve1.x86_64.rpm
Ubuntu 16.04/Ubuntu 18.04/Debian 9
wget http://mirrors.ivolces.com/extra-tools/ubuntu/pool/main/b/blk-none/blk-none_1.0.1_amd64.debapt install ./blk-none_1.0.1_amd64.deb
通过公网安装
CentOS 7.x
wget https://blk-none.tos-cn-beijing.volces.com/blk-none-v1.0.1-1.ve1.x86_64.rpmyum install ./blk-none-v1.0.1-1.ve1.x86_64.rpm
Ubuntu 16.04/Ubuntu 18.04/Debian 9
wget https://blk-none.tos-cn-beijing.volces.com/blk-none_1.0.1_amd64.debapt install ./blk-none_1.0.1_amd64.deb
重启实例,工具将在实例启动后自行生效并完成调整配置。
工具生效后,您挂载新的数据盘时无需再次重启实例,工具将自动调整新数据盘配置。