转自姚远 https://byte-way.com/2025/05/06/quick-disk-performance-testing-with-dd-and-hdparm/
虽然许多磁盘性能工具(如 fio、orion 和 iometer)提供了深入的分析,但 dd 和 hdparm 命令因其在 Linux 系统上的简单性和普遍可访问性而脱颖而出。在本文中,我将演示如何使用这些工具根据实际场景进行快速有效的磁盘性能评估。
为什么是dd?
我曾经被要求调查数据库速度变慢的情况。在深入研究之前,我使用 dd 对磁盘进行了基本的健全性检查。结果令人震惊,如下面的屏幕截图所示:

磁盘的读取速度骤降至仅 25.8 kB/s。很明显,瓶颈不是数据库本身,而是磁盘故障。这一集强调了 dd 在基本但有效的评估方面的力量。
这一经验强调了 dd 在快速评估方面的价值。其主要优势包括:
- 简单性:易于使用,参数最少。
- 可用性:预装在 Linux 系统上。
- 实用性:虽然不是很详细或 100% 准确,但对于初步评估来说已经足够了。
测量写入速度
要测量写入速度,请使用以下命令在一次传递中将 1GB 的数据写入磁盘:
1 | $ dd if=/dev/zero of=test.img bs=1G count=1 conv=fdatasync |
解释:
if=/dev/zero:输入文件,生成空字节流。of=test.img:输出文件以写入数据。bs=1G:块大小为 1 GB。count=1:写入单个块。conv=fdatasync:确保数据以物理方式写入磁盘,而不是缓存。
注意:dd 将覆盖输出文件上的现有数据。
示例输出:

注意:“/u02”位于机械磁盘上,而“/u04”位于固态磁盘上
我们可以看到,固态盘的写入速度大约是机械盘的两倍。
测量读取速度
为了获得准确的读取速度测量,请在测试之前使用以下命令清除系统缓存:
1 | # sync && sudo echo 3 > /proc/sys/vm/drop_caches |
然后,通过一次从上一个文件中检索 1GB 的数据来进行读取测试:
1 | $ dd if=/u02/test1.img of=/dev/null bs=1G count=1 |
在这里,“/dev/null”用作用于丢弃输入的虚拟 null 设备。
示例输出:

在这里,固态磁盘的读取速度大约是机械磁盘的五倍。
高 IOPS 测试
要测试高每秒输入/输出作数 (IOPS),请使用较小的块大小:
1 | dd if=/dev/zero of=test.img bs=8K count=128K conv=fdatasync |
示例结果:
1 2 3 | 131072+0 records in131072+0 records out1073741824 bytes (1.1 GB) copied, 5.71024 s, 188 MB/s |
使用 hdparm 进行测量
另一个用于评估磁盘性能的便捷工具是 hdparm 命令。它在块级别运行,与文件系统级测试相比,提供更快的测试结果。
用法示例:
1 | hdparm -Tt /dev/sdb |
“t”选项运行直接(缓冲)磁盘读取测试,“T”选项执行缓存读取测试。请注意,hdparm 命令无法进行写入测试。
示例输出:

固态硬盘和机械盘的缓存读取速度大致相同,而固态盘的磁盘读取速度是机械盘的6倍。
结论
虽然并不详尽,但 dd 和 hdparm 可以成为寻求一种快速且易于访问的方法来评估磁盘性能的宝贵工具。记住它们的局限性,并在需要时考虑使用更全面的工具进行深入分析。




