侧边栏壁纸
博主头像
CYC的个人博客博主等级

学习使人进步

  • 累计撰写 108 篇文章
  • 累计创建 13 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Linux-fio测试磁盘读写性能

Administrator
2025-11-17 / 0 评论 / 0 点赞 / 1 阅读 / 3528 字

FIO(Flexible I/O Tester)是Linux/Unix下最常用的I/O基准测试工具,可模拟多种磁盘工作负载(顺序读写、随机读写、混合读写等),全面评估磁盘性能‌。以下是使用FIO测试磁盘性能的详细步骤和关键参数解析:


一、安装FIO

不同Linux发行版的安装命令如下:

  • CentOS/RHEL‌:yum install -y fio

  • Ubuntu/Debian‌:apt-get install -y fio
    安装后通过fio --version验证是否成功‌


二、核心性能指标与参数解析

FIO测试需关注以下核心指标及参数‌:

  1. IOPS‌:每秒完成的I/O请求数,反映磁盘处理能力。

  2. 带宽(BW)‌:单位时间内的数据传输量(如MB/s)。

  3. 延迟(Latency)‌:包括提交延迟(slat)、完成延迟(clat)和总延迟。

  4. 队列深度(iodepth)‌:同时挂起的未完成I/O数,影响并发性能。

  5. 块大小(bs)‌:如4K、16K,直接影响IOPS和带宽。

  6. 读写模式(rw)‌:randread(随机读)、randwrite(随机写)、randrw(混合读写)等。

  7. O_DIRECT模式(direct=1)‌:绕过内核缓存,直接测试磁盘真实性能‌。


三、常用测试命令示例

1. ‌随机读写测试(数据库场景)

fio --name=test \
    --filename=/data/testfile \
    --size=1G \
    --bs=4k \
    --rw=randrw \
    --rwmixread=70 \
    --ioengine=libaio \
    --iodepth=64 \
    --runtime=60 \
    --direct=1 \
    --group_reporting

fio --name

  • 参数说明‌:

    • --rw=randrw:70%读+30%写混合模式。

    • --iodepth=64:高并发队列深度,模拟高负载场景‌。

2. ‌顺序读写测试(大文件传输)

fio --name=seqwrite \
    --filename=/dev/sdb1 \
    --size=10G \
    --bs=1M \
    --rw=write \
    --ioengine=libaio \
    --iodepth=16 \
    --runtime=30 \
    --direct=1

  • 适用场景‌:备份、视频流等大文件连续写入‌


四、结果解读与优化建议

运行FIO后,输出结果包含以下关键数据‌:

  • IOPS‌:若随机读写IOPS过低(如SSD低于数万),可能成为数据库性能瓶颈。

  • 延迟‌:clat(完成延迟)应低于10ms,过高需考虑更换SSD或优化I/O调度。

  • 带宽‌:结合块大小判断是否满足业务需求(如1GB文件传输需高带宽)。

优化建议‌:

  • 对SSD测试前需预热(--precondition=write)以消除缓存影响‌

  • 结合iostat监控系统I/O负载,定位性能瓶颈‌


五、注意事项

  • 数据安全‌:测试裸设备(如/dev/nvme0n1)会抹掉数据,务必确认设备未挂载‌

  • 文件系统影响‌:测试文件系统时需注意缓存策略,建议使用direct=1绕过缓存‌

通过以上步骤和参数组合,可全面评估磁盘性能,为存储优化提供科学依据‌

0

评论区