Docker部署Fio磁盘读写测试

  1. 拉取测试工具镜像
dart 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/offends/fio:latest
  1. 启动并进入容器
dart 复制代码
挂盘或者建目录/data进行测试
dart 复制代码
docker run --name disktest \
  -it --rm -v /data/disk_test:/data/disk_test \
  registry.cn-hangzhou.aliyuncs.com/offends/fio:latest \
  sh

3, 开始测试

dart 复制代码
```dart
# 顺序读测试 (1M块大小, 10GB数据)
fio --name=seq_read --filename=/testfile --size=10G --rw=read --bs=1M --direct=1 --ioengine=libaio --iodepth=32 --runtime=60 --time_based

# 顺序写测试
fio --name=seq_write --filename=/testfile --size=10G --rw=write --bs=1M --direct=1 --ioengine=libaio --iodepth=32

# 随机读测试 (4K块大小)
fio --name=rand_read --filename=/dev/sdb --rw=randread --bs=4k --direct=1 --ioengine=libaio --iodepth=32 --numjobs=4 --runtime=60 --group_reporting

# 随机写测试
fio --name=rand_write --filename=/dev/sdb --rw=randwrite --bs=4k --direct=1 --ioengine=libaio --iodepth=32 --numjobs=4

3. 混合读写测试
# 70%读30%写的混合负载
fio --name=mixed_rw --filename=/dev/nvme0n1 --rw=randrw --bs=4k --direct=1 --ioengine=libaio --iodepth=32 --numjobs=8 --rwmixread=70 --runtime=120 --group_reporting

4. 数据库模式测试
# 模拟数据库负载 (小随机读写)
fio --name=db_workload --filename=/dev/sdb --rw=randrw --bs=8k --direct=1 --ioengine=libaio --iodepth=32 --numjobs=16 --runtime=300 --group_reporting --rwmixread=70 --time_based
  1. 命令行参数说明
    命令参数
    参数 描述
    --debug=options 启用调试日志记录,可以选择启用不同类型的调试信息,比如进程、文件、IO等等。
    --parse-only 仅解析选项,不执行任何IO操作。
    --output 将输出写入文件。
    --bandwidth-log 生成带宽日志。
    --minimal 生成最小化(简洁)的输出。
    --output-format=type 指定输出格式,可以是简洁、JSON等。
    --terse-version=type 设置简洁版本输出格式。
    --version 打印版本信息并退出。
    --help 打印帮助信息。
    --cpuclock-test 执行CPU时钟的测试/验证。
    --crctest=type 测试校验和功能的速度。
    --cmdhelp=cmd 打印命令帮助,使用"all"可以查看所有命令。
    --enghelp=engine 打印IO引擎的帮助信息,或者列出可用的IO引擎。
    --enghelp=engine,cmd 打印特定IO引擎命令的帮助信息。
    --showcmd 将作业文件转换为命令行选项。
    --eta=when 指定何时打印ETA(预计完成时间)估计值。
    --eta-newline=time 每个 'time' 时间段强制换行显示ETA。
    --status-interval=t 每个 't' 时间段强制完整状态转储。
    --readonly 打开安全只读检查,防止写入。
    --section=name 只运行作业文件中指定的部分,可以指定多个部分。
    --alloc-size=kb 将smalloc池的大小设置为指定的kb数(默认为16384)。
    --warnings-fatal Fio解析器警告变为致命错误。
    --max-jobs=nr 支持的最大线程/进程数。
    --server=args 启动后端fio服务器。
    --daemonize=pidfile 后台运行fio服务器,将PID写入文件。
    --client=hostname 与远程后端fio服务器通信。
    --remote-config=file 告诉fio服务器加载本地作业文件。
    --idle-prof=option 报告系统或每CPU基础的CPU空闲情况或运行单位工作校准。
    --inflate-log=log 解压缩并输出压缩日志。
    --trigger-file=file 当文件存在时执行触发命令。
    --trigger-timeout=t 在指定的时间执行触发器。
    --trigger=cmd 将此命令设置为本地触发器。
    --trigger-remote=cmd 将此命令设置为远程触发器。
    --aux-path=path 使用此路径作为fio生成文件的路径。
相关推荐
梦梦代码精3 小时前
《回收租赁系统技术选型避坑指南:业务闭环与二开自由度详解》
开发语言·低代码·docker·开源·代码规范
_itgo5 小时前
意图识别落地方案
运维·docker·容器
mengge.cloud5 小时前
0909华为云计算类综合服务小白实验教程
linux·运维·服务器·网络·华为云·云计算
QYR-分析7 小时前
蓝海赛道高速扩容!全球小型观察ROV市场格局、细分场景与发展趋势分析
大数据·运维·云计算
陈皮糖..7 小时前
从零搭建一个简易 AI 运维问答机器人(RAG + LangChain + Streamlit)
运维·人工智能·ai·langchain·机器人
制造业的搬运工8 小时前
AI服务器背板与传统背板差异:三大设计升级解析
运维·服务器·人工智能·科技·制造·pcb工艺
顶点多余8 小时前
仿muduo库实现高并发服务器项目
运维·服务器
脚踏实地,坚持不懈!8 小时前
Linux 6.18.7 内存分配与回收 —— 代码梳理
linux·运维·网络
2601_962300479 小时前
python在运维上可以干什么,请举几个具体的例子
运维·python·系统管理·网络监控·自动化脚本
Android系统攻城狮9 小时前
Linux Gstreamer深度解析之gst_audio_format_build_integer调用流程与实战(十二)
linux·运维·服务器·音视频·车载音视频·gstreamer进阶