首頁 > 軟體

dd命令:做硬碟IO效能測試

2020-06-16 17:48:20

一、dd複製轉換

1.dd:convert and copy a file 檔案轉換和複製,複製操作底層(塊)

DESCRIPTION:Copy a file, converting and formatting according to the operands.

2.用法:dd  [OPTION] if=/PATH/FROM/SRC  of=/PATH/TO/DEST

if= :其後面路徑是源目標路徑

of= :其後是將要複製到的位置,目標路徑

[OPTION]

bs=#:block size, 複製單元大小,一次複製多大,預設單位為位元組;

count=#:複製多少個bs;

3.磁碟拷貝:dd  if=/dev/sda  of=/dev/sdb

4.MBR備份和損壞

備份MBR:dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破壞MBR分割區表:dd if=/dev/zero of=/dev/sda bs=512 count=1

破壞MBR中的bootloader:dd if=/dev/zero of=/dev/sda bs=256 count=1

前446位元組是bootloader所佔空間大小,故損壞部分就會導致整個損壞

5.兩個特殊裝置:/dev/zero 、/dev/null

/dev/zero:吐零,該裝置無窮盡地提供0,(不產生讀磁碟IO)

/dev/null: 資料黑洞;類似於回收站

二、dd硬碟IO效能測試

幾種常見的DD命令:區別在於記憶體中寫快取的處理方式

dd bs=128k count=10k if=/dev/zero of=test

dd bs=128k count=10k if=/dev/zero of=test; sync

dd bs=128k count=10k if=/dev/zero of=test conv=fdatasync

dd bs=128k count=10k if=/dev/zero of=test oflag=dsync

wKioL1Z1KgGDda7VAABTcGLbp9w514.png

1.dd bs=128k count=10k if=/dev/zero of=test

(1)dd預設方式不包括“同步(sync)”命令,dd命令完成前並沒有讓系統真正把檔案寫到磁碟上。

(2)單純地把資料讀到記憶體緩衝當中(寫快取[write cache])

(3)展現的只是讀取速度,直到dd完成後系統才開始真正往磁碟上寫資料

實際執行結果:

2.dd bs=128k count=10k if=/dev/zero of=test; sync

(1)同上分號隔開的只是先後兩個獨立的命令

(2)dd命令已經把“寫入速度”值顯示在螢幕上了,得不到真正的寫入速度。

實際執行結果:

3.dd bs=128k count=10k if=/dev/zero of=test conv=fdatasync

(1)dd命令執行到最後會真正執行一次“同步(sync)”操作

(2)得到的是讀取這128M資料到記憶體並寫入到磁碟上所需的時間

(3)比較符合實際情況

實際執行結果:

4.dd bs=128k count=10k if=/dev/zero of=test oflag=dsync

(1)dd在執行時每次都會進行同步寫入操作

(2)每次讀取128k後就要先把這128k寫入磁碟,然後再讀取下面128k

(3)最慢的一種方式了,基本上沒有用到寫快取(write cache)

實際執行結果:

第四種方法是最嚴格的,可以模擬資料庫的插入操作,所以很慢。

也用來測試vps硬碟效能標準,一般來說測試結果,如果超過10M,對正常建站就無影響,超過50M,就是非常好狀態。

另外,測試對硬碟有損害。

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-12/126636.htm


IT145.com E-mail:sddin#qq.com