使用 DD 命令测试 Linux 和 Unix 磁盘 I/O 性能


您知道如何在 Linux 操作系统上检查硬盘的性能,例如检查读写速度吗?如果是这样,那么本文就是为您准备的!本文旨在为您提供 DD 命令的概述,旨在为新用户提供更好的指导,并作为探索 Linux 世界的入门之旅。

什么是 DD 命令?

DD 是一种用于 Unix 和类 Unix 操作系统的命令行实用程序,其主要目的是复制文件并在过程中转换数据格式。

如何使用 DD 命令测试硬盘?

打开您的 Linux 根终端并添加以下命令:

$ sudo dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync

输出应如下所示:

tp@linux:~$ sudo dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
[sudo] password for tp:
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 11.9635 s, 89.8 MB/s
tp@linux:~$

请注意,测试过程中复制了 1GB 数据,并且在整个测试过程中速度为 89.8 MB/秒。

了解 DD 命令

DD 命令的各个部分应如下所示:

if=/dev/zero (if=/dev/input.file)指示您要使用 DD 命令读取的输入文件。
of=/tmp/test1.img(of=/path/to/output.file)指示您要使用 DD 命令写入的输出文件。
bs=1G(bs=block-size)指示您希望 DD 使用的块大小(此处我使用 1GB 作为块大小)。
count=1 (count=number-of-blocks)指示您希望 DD 用于读取块的块数。
oflag=dsync (oflag=dsync)指示数据的同步 I/O。
conv=fdatasyn此命令告诉 DD 进行同步。

在 Linux 上使用 DD 命令测试读取速度

在测试之前,首先刷新缓存数据,使用以下命令:

$ echo 3 | sudo tee /proc/sys/vm/drop_caches
time time dd if=/path/to/bigfile of=/dev/null bs=8k

运行以下命令以使用缓存测试数据:

tp@linux:~$ dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 11.4265 s, 94.0 MB/s

以上命令复制了 1.1GB 的数据,测试速度为 94.0 MB/s。

要禁用缓存,请使用以下命令:

$ sudo hdparm -W0 /dev/sda

输出应如下所示:

tp@linux:~$ sudo hdparm -W0 /dev/sda
/dev/sda:
setting drive write-caching to 0 (off)
write-caching = 0 (off)

运行以下命令以在不使用缓存的情况下测试数据:

$ dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct

输出应如下所示:

tp@linux:~$ dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 11.5062 s, 93.3 MB/s

以上命令复制了 1.1GB 的数据,测试速度为 93.3 MB/s。

恭喜!现在,您知道如何使用 DD 命令测试磁盘 I/O 性能了。在我们的下一篇文章中,我们将介绍更多基于 Linux 的技巧和提示。敬请关注!

更新于: 2020年1月17日

9K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告