天天看點

dd指令:做硬碟IO性能測試

一、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

dd指令:做硬碟IO性能測試

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

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

         (2)單純地把資料讀到記憶體緩沖當中(寫緩存[write

cache])

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

實際運作結果:

dd指令:做硬碟IO性能測試

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

        (1)同上分号隔開的隻是先後兩個獨立的指令

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

dd指令:做硬碟IO性能測試

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

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

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

        (3)比較符合實際情況

dd指令:做硬碟IO性能測試

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

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

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

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

cache)

dd指令:做硬碟IO性能測試

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

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

繼續閱讀