磁盘IO高负载演练

IO高负载是一种常见的故障现象,可能由于过高的业务进程负载、非预期的非业务进程占用、内存资源不足等因素导致。IO高负载可能会导致业务性能受损,数据丢失等风险。因此通过此演练场景验证系统在IO高负载时的告警和恢复情况。

实现原理

本方案使用云助手插件ACS-ECS-HighIo,内部使用dd工具(data duplicator)实现复制和转换文件以提高磁盘IO负载,具体说明如下:

  • 对于读模式,先写入一个临时文件到目标路径,通过循环读取对应文件模拟读压力。

  • 对于写模式,通过循环写入模拟写入压力。

使用指南

演练准备

请确保您的ECS实例已安装云助手Agent,并且云助手状态正常。具体操作,请参见查看云助手状态及异常状态处理

故障注入

  1. 登录ECS实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 使用具有sudo访问权限的用户,运行云助手插件ACS-ECS-HighIo

    sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params inject,[model=paramA],[dir=paramB],[bs=paramC],[count=paramD],[duration=paramE]

    []内为可选故障注入参数,参数说明:

    • model(可选):读/写模式,取值read/write,默认为read。

    • dir(可选):目标路径,通过指定路径来实现对不同磁盘的压力测试,默认为系统根目录。

    • bs(可选):块大小,格式同dd命令中bs块参数格式,用于控制每次读写的块大小,该参数可影响读写速率,为了保证占满IO,默认为1M。

    • count(可选):一次读取循环的块数量,默认为1024。

    • duration(可选):持续时间,单位秒,默认为300(秒)。

    显示如下所示时,说明云助手插件ACS-ECS-HighIo执行成功。

    image

  3. 执行iotop命令,查看故障注入是否成功。

    显示如下所示时,说明故障注入成功。

    image

故障恢复

ECS实例中执行故障恢复命令,查看I/O读写是否恢复到故障注入前的水平。

重要

演练完毕后必须执行一次该命令,以删除产生的临时文件。

sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params recover

演练案例

  1. 故障注入:对usr路径进行读取,持续60s。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params inject,dir=/usr,duration=60

    显示故障注入参数和注入结果,以及存放临时文件的目录文件。

    image

  2. usr目录下,查看当前注入的临时文件,可以看到产生了AliFaultHighio.tmp临时文件。

    image

  3. 执行iotop命令,查看磁盘I/O读写情况。

    image

  4. 执行故障恢复命令。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params recover