dd命令:做硬盤IO性能測試

一、dd複製轉換

    1.ddconvert and copy a file 文件轉換和複製,複製操作底層()

DESCRIPTIONCopy 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備份和損壞

備份MBRdd 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完成後系統纔開始真正往磁盤上寫數據

實際運行結果:

wKiom1Z1KfTyTVyBAAARkROKqWc251.png

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

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

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

實際運行結果:

wKiom1Z1KfWw3mjiAAASBPs8654776.png

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

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

        (2)得到的是讀取這128M數據到內存並寫入到磁盤上所需的時間

        (3)比較符合實際情況

實際運行結果:

wKioL1Z1KgLR7PMEAAAVYDroAKY245.png

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

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

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

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

實際運行結果:

wKiom1Z1KfWjdAmGAAAR3KoWn-E184.png

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

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



    另外,測試對硬盤有損害


來至於:http://xuding.blog.51cto.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章