You need to enable JavaScript to run this app.
导航
如何规避由于操作系统内核版本过低,通用型(g3a/g3i)/计算型(c3a/c3i)/内存型(r3a/r3i)规格实例中偶发出现IO hang问题
最近更新时间:2024.02.20 11:53:56首次发布时间:2023.09.06 07:43:51

问题描述

在通用型(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避免该问题出现。

  1. 登录目标实例,操作详情可查看登录实例

  2. (可选) 手动调整磁盘调度算法,临时解决问题。

    说明

    • 若由于业务限制暂不能重启实例时,您可以根据本步骤指引临时解决问题,但重启实例后配置将失效。
    • 若可以重启实例,您可跳过本步骤执行步骤3,通过blk-none工具,持久化解决问题。
    1. 执行如下命令,查看磁盘信息。

      lsblk
      

      回显示例:

    2. 手动为每个磁盘配置调度算法。

      请将命令中<vdx>替换为上一步中查询获取的实际磁盘名,例如:vda。

      echo "none" > /sys/block/<vdx>/queue/scheduler
      
  3. 安装blk-none工具,持久化解决问题。

    1. 执行如下命令,通过安装blk-none工具。
      • 通过火山引擎内网安装

        • CentOS 7.x
          wget http://mirrors.ivolces.com/extra-tools/centos/7/rpms/blk-none-v1.0.1-1.ve1.x86_64.rpm
          yum 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.deb
          apt 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.rpm
          yum 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.deb
          apt install ./blk-none_1.0.1_amd64.deb  
          
    2. 重启实例,工具将在实例启动后自行生效并完成调整配置。

      工具生效后,您挂载新的数据盘时无需再次重启实例,工具将自动调整新数据盘配置。