暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

使用 dd 和 hdparm 进行快速磁盘性能测试

michaelliu 2025-11-12
265

转自姚远 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 in
131072+0 records out
1073741824 bytes (1.1 GB) copied, 5.71024 s, 188 MB/s

使用 hdparm 进行测量

另一个用于评估磁盘性能的便捷工具是 hdparm 命令。它在块级别运行,与文件系统级测试相比,提供更快的测试结果。

用法示例:

1
hdparm -Tt /dev/sdb

“t”选项运行直接(缓冲)磁盘读取测试,“T”选项执行缓存读取测试。请注意,hdparm 命令无法进行写入测试。

示例输出:

固态硬盘和机械盘的缓存读取速度大致相同,而固态盘的磁盘读取速度是机械盘的6倍。

结论

虽然并不详尽,但 dd 和 hdparm 可以成为寻求一种快速且易于访问的方法来评估磁盘性能的宝贵工具。记住它们的局限性,并在需要时考虑使用更全面的工具进行深入分析。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论