You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux系统中触发高iowait以测试Nagios监控脚本

如何在Linux系统中触发高iowait以测试Nagios监控脚本

嘿,刚好我之前也折腾过类似的测试,给你几个简单有效的方法来触发高iowait,完美适配你的Nagios脚本测试需求:

方法一:用dd直接压测磁盘(快速入门)

这是最容易上手的方式,通过绕开系统缓存直接写入磁盘,产生真实的IO负载:

# 注意:如果/tmp是tmpfs(内存文件系统),请替换成实际挂载的磁盘分区,比如/var或专门的测试分区
dd if=/dev/zero of=/tmp/iowait_test bs=1G count=10 oflag=direct
  • oflag=direct是关键:它会绕过页缓存,让数据直接写入物理磁盘,强制系统等待IO完成,瞬间拉高iowait
  • 可以调整bs(块大小)和count(块数量)来控制负载强度,比如bs=500M count=20和上面的总数据量一样,但IO模式略有不同

方法二:并发IO负载(测试高阈值场景)

如果想模拟更接近真实业务的并发IO压力,用循环启动多个dd进程就行:

# 同时启动10个写入进程,调整{1..10}的数字可以增减并发数
for i in {1..10}; do
    dd if=/dev/zero of=/mnt/testfile$i bs=100M count=5 oflag=direct &
done
  • 记得把/mnt换成你的实际磁盘分区
  • 测试完成后别忘了清理临时文件:rm /mnt/testfile*

方法三:用fio做精准可控的IO压测(专业级)

如果需要更精准控制IO类型(随机读写、并发数、持续时间),fio是专业工具:

  1. 先安装fio:
    # Debian/Ubuntu系
    sudo apt update && sudo apt install fio
    # RHEL/CentOS系
    sudo yum install fio
    
  2. 运行压测命令:
    fio --name=iowait_test --ioengine=libaio --rw=randwrite --bs=4k --numjobs=16 --size=1G --iodepth=32 --direct=1 --runtime=60 --time_based
    
    这个命令会:
    • 以16个并发进程执行4K随机写
    • 绕过缓存直接操作磁盘(direct=1)
    • 持续压测60秒(runtime=60),时间到后自动停止

小提醒

  • 测试前务必确认目标磁盘有足够的剩余空间,避免把磁盘写满
  • 生产环境绝对不要在业务机器上做测试!找专门的测试服务器或者虚拟机
  • 可以用iostat 1命令实时查看iowait的变化,确认负载是否达到你的预期

备注:内容来源于stack exchange,提问作者Prince Linuxer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:23:03