dd适合测试真实写入性能,hdparm适合快速查看理论读取速度。dd通过跳过缓存(oflag=direct)可模拟实际文件读写,适用于大文件拷贝、数据库导入等场景;hdparm则通过-tt参数显示硬盘带缓存和纯缓存读取速度,适合判断硬盘状态及基础读取能力;选择工具应根据需求:简单查看读取速度用hdparm,真实写入测试用dd,系统级压力测试可用fio,图形化监控可结合iostat或iotop。

Linux系统下,测试磁盘IO性能是排查存储瓶颈、评估硬件性能的重要手段。其中,dd 和 hdparm 是两个常用的命令行工具,它们各有特点,适用于不同的测试场景。

1. dd:通用性强,适合读写速度测试
dd 是一个功能强大的复制文件和转换数据的工具,常用于模拟大文件的写入或读取操作,从而粗略估算磁盘的IO性能。

使用方法示例:
dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
这条命令的意思是从 /dev/zero(无限零流)中读取1G的数据,直接写入到当前目录下的 testfile 文件中,并跳过缓存(oflag=direct),这样能更真实地反映磁盘的实际写入速度。

注意事项:
- 不加
oflag=direct时会经过系统缓存,测出来的可能是内存速度,而不是真实的磁盘写入速度。 - 写入测试会对磁盘产生实际IO压力,测试完成后记得删除临时文件。
- 读取测试可以用
if=testfile of=/dev/null来模拟。
2. hdparm:快速查看硬盘理论读取速度
相比 dd 的灵活性,hdparm 更像是一个“快速检测”工具,尤其适合用来查看硬盘的理论读取速度,尤其是针对传统机械硬盘(HDD)或者SATA接口设备。
常用命令:
hdparm -Tt /dev/sda
这条命令会输出两组数据:
-
Buffered reads:带缓存的读取速度,通常较高; -
Timing cached reads:纯内存缓存中的读取性能。
适用场景:
- 快速判断硬盘是否正常工作;
- 比较不同硬盘的基础读取能力;
- 检查是否启用了DMA等优化选项。
局限性:
- 无法准确反映真实写入性能;
- 对SSD效果有限,因为SSD响应快,容易受缓存影响;
- 不能指定块大小或测试路径,控制力不如
dd。
3. 如何选择:看需求,别只看工具
如果你的目标是:
-
简单看一下硬盘的读取速度 → 推荐用
hdparm,快捷方便; -
测试真实写入性能,比如拷贝大文件、数据库导入等场景 → 用
dd,加上oflag=direct能更贴近实际; -
做系统级IO压力测试 → 可以考虑
fio这类专业工具; -
需要图形化结果或长期监控 → 配合
iostat或iotop等工具一起使用。
总的来说,dd 更适合做写入性能测试,而 hdparm 更适合快速查看理论读取速度。两者配合使用,可以更全面地了解磁盘的IO表现。基本上就这些,不复杂但容易忽略细节。











