写一个shell脚本使用Fio工具对被测硬盘进行混合随机读写,读写比例70/30, bs=4K, q_depth=32, 运行12小时,稳态后用IOSTAT记录IO 带宽,await, svctime(每秒记录一个
时间: 2024-10-18 21:08:51 浏览: 27
在Shell脚本中,你可以使用`fio`工具来执行这种硬盘性能测试。以下是一个示例脚本,它将配置混合读写操作,设置读写比例、块大小、队列深度,并运行12小时:
```bash
#!/bin/bash
# 定义测试参数
read_write_ratio="70/30"
block_size="4k"
queue_depth="32"
runtime_hours=12
output_filename="fio_stats.txt"
# 计算总秒数
total_seconds=$((runtime_hours * 60 * 60))
# 稳态等待时间,比如前5分钟让系统准备
warmup_time_minutes=5
warmup_seconds=$((warmup_time_minutes * 60))
sleep "$warmup_seconds"
# 使用fio开始测试
fio --name=test \
--ioengine=libaio \
--rw=randwrite:$read_write_ratio \
--bs="$block_size" \
--iodepth=$queue_depth \
--time_based \
--runtime=$((total_seconds - warmup_seconds)) \
--filename=/dev/sda # 将这里的sda替换为你需要测试的实际硬盘名
# 开始记录IO状态
iostat -x 1 > $output_filename &
# 等待测试结束
echo "Running fio test for $runtime_hours hours..."
sleep "$total_seconds"
# 结束后停止iostat记录
kill %1
echo "Fio test completed, IO statistics saved in $output_filename"
```
在这个脚本中,你需要替换`/dev/sda`为你的目标硬盘路径。在`--filename`选项后输入对应设备。
注意:
1. 运行此脚本之前,请确保`fio`已经安装并且权限允许。
2. `iostat`可能需要超级用户权限才能记录系统级的IO信息,如果你遇到权限问题,可以尝试添加`sudo`。
3. `iostat`的输出可能会非常详细,如果只需要特定指标(如IO带宽,await,svctime),可能需要额外处理或分析生成的数据。
阅读全文