使用 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+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告