Linux磁盘性能怎么测_IO测试方法

5次阅读

Linux磁盘性能怎么测_IO测试方法

linux磁盘性能测试核心是看真实I/O能力,不是缓存表现。关键要绕过page cache、强制落盘,并区分顺序和随机场景。

用dd测基础顺序读写

适合快速摸底,但只能反映连续大块读写能力:

  • 测写入:运行 dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct —— oflag=direct 跳过缓存,结果里的 MB/s 是磁盘真实写速
  • 测读取:先清缓存 echo 3 > /proc/sys/vm/drop_caches(需root),再运行 dd if=testfile of=/dev/NULL bs=1G count=1 iflag=direct
  • 更严谨的写入测试可加 conv=fdatasyncoflag=dsync,确保数据真正刷到盘上,避免因缓存延迟导致虚高

用fio测真实业务负载

dd只能测顺序,而数据库、日志等多是小块随机IO,fio才能模拟:

  • 安装:ubuntu/debiansudo apt install fiocentos/RHEL用 sudo yum install fio
  • 随机读(如mysql查询):fio –name=randread –ioengine=libaio –direct=1 –bs=4k –size=1G –rw=randread –runtime=60 –time_based –group_reporting
  • 随机写(如事务日志):fio –name=randwrite –ioengine=libaio –direct=1 –bs=4k –size=1G –rw=randwrite –runtime=60 –time_based –group_reporting
  • 输出中重点关注 IOPS(每秒操作数)和 lat (avg)(平均延迟),它们比吞吐量更能反映响应敏感型应用的表现

用iostat看实时磁盘压力

不是基准测试工具,但能帮你判断当前是不是真瓶颈:

  • 运行 iostat -mx 1,关注三列:%util(利用率超80%说明忙满)、await(平均等待毫秒,持续>10ms需警惕)、svctm(服务时间,接近await才健康)
  • 配合 iotop 可定位是哪个进程在大量读写,避免误判为硬件问题
  • 注意:单次iostat只看瞬时值,建议持续观察1–5分钟,结合业务高峰期对比

SSD额外可用hdparm验证

对NVMe或SATA SSD,hdparm 能快速查看接口级读取能力:

  • 安装后执行 hdparm -tT /dev/nvme0n1,其中 -T 测缓存读(快但不真实),-t 测物理读(更贴近磁盘实际带宽)
  • 该命令不写盘、无风险,适合巡检;但不能替代fio对4K随机性能的评估
text=ZqhQzanResources