MENU

Linux 使用 dd 测试磁盘性能

• April 17, 2026 • Read: 27 • 编码👨🏻‍💻

dd 测的是顺序 I/O:数据从头到尾一块一块连续写/读,就像你从头到尾读一本书。

一、测试方法

1.1 写速度测试

dd if=/dev/zero of=/tmp/test_2g bs=1M count=2048 conv=fdatasync
  • if=/dev/zero:输入源为零字节流
  • of=/tmp/test_2g:输出到目标文件
  • bs=1M:块大小 1MB
  • count=2048:写 2048 个块 = 2GB
  • conv=fdatasync:写完后强制刷盘,确保数据真实落盘

1.2 读速度测试

# 先清缓存,确保测的是真实磁盘性能
echo 3 > /proc/sys/vm/drop_caches

# 读取测试文件
dd if=/tmp/test_2g of=/dev/null bs=1M

# 清理测试文件
rm -f /tmp/test_2g

1.3 10G 大文件测试

# 写 10G
dd if=/dev/zero of=/tmp/test_10g bs=1M count=10240 conv=fdatasync

# 清缓存
echo 3 > /proc/sys/vm/drop_caches

# 读 10G
dd if=/tmp/test_10g of=/dev/null bs=1M

# 清理测试文件
rm -f /tmp/test_10g

二、实际测试记录

2.1 2G 写入

记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB,2.0 GiB)已复制,1.00244 s,2.1 GB/s

2.2 2G 读取

记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB,2.0 GiB)已复制,0.296682 s,7.2 GB/s

2.3 10G 写入

记录了10240+0 的读入
记录了10240+0 的写出
10737418240字节(11 GB,10 GiB)已复制,4.93178 s,2.2 GB/s

2.4 10G 读取

记录了10240+0 的读入
记录了10240+0 的写出
10737418240字节(11 GB,10 GiB)已复制,1.24158 s,8.6 GB/s

三、磁盘性能参考

磁盘类型典型写速度典型读速度
普通机械盘 HDD50-150 MB/s80-200 MB/s
企业级 HDD150-250 MB/s180-260 MB/s
SATA SSD300-550 MB/s500-560 MB/s
NVMe SSD (PCIe 3.0)1.5-3.5 GB/s2.5-3.5 GB/s
NVMe SSD (PCIe 4.0)3.0-7.0 GB/s5.0-7.0 GB/s
本次测试结果2.2 GB/s8.6 GB/s
本次测试写入 2.2 GB/s、读取 8.6 GB/s,确认磁盘为 NVMe SSD

五、注意事项

  1. 不要在生产数据盘上跑:大量写操作可能影响业务
  2. 测试路径尽量与 MySQL 数据目录在同一磁盘:才能反映真实 I/O 能力
  3. 清缓存后读测才有参考意义:不清缓存测的是内存读速度
  4. 多测几次取平均值:单次测试可能存在偏差
  5. dd 测的是顺序 I/O:数据库更关注随机 I/O,如需测随机性能可用 fio
Archives Tip
QR Code for this page
Tipping QR Code