dd命令测试linux磁盘io情况,【LINUX】正确的使用dd进行磁盘读写速度测试
測試方式:使用dd指令,對磁盤進行連續寫入,不使用內存緩沖區,每次寫入8k的數據,總共寫入20萬次,產生1.6G大小的文件。
測試指令:dd if=/dev/zero of=/data01/test.dbf bs=8k count=200000 conv=fdatasync
----------------------------------------------
正確的使用dd進行磁盤讀寫速度測試
dd是Linux/UNIX 下的一個非常有用的命令,作用是用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉換,所以可以用來測試硬盤的順序讀寫能力。可以寫文件,可以寫裸設備。
dd語法
---------------------------------------------------------
功能說明:讀取,轉換并輸出數據。
語 法:dd [bs=][cbs=][conv=][count=][ibs=][if=][obs=][of=][seek=][skip=][--help][--version]
補充說明:dd可從標準輸入或文件讀取數據,依指定的格式來轉換數據,再輸出到文件,設備或標準輸出。
參 數:
bs=?? 將ibs( 輸入)與obs(輸出)設成指定的字節數。
cbs=?? 轉換時,每次只轉換指定的字節數。
conv=?? 指定文件轉換的方式。
count=?? 僅讀取指定的區塊數。
ibs=?? 每次讀取的字節數。
if=?? 從文件讀取。
obs=?? 每次輸出的字節數。
of=?? 輸出到文件。
seek=?? 一開始輸出時,跳過指定的區塊數。
skip=?? 一開始讀取時,跳過指定的區塊數。
--help?? 幫助。
--version?? 顯示版本信息。
dd常用參數詳解
---------------------------------------------------------
if=xxx? 從xxx讀取,如if=/dev/zero,該設備無窮盡地提供0,(不產生讀磁盤IO)
of=xxx? 向xxx寫出,可以寫文件,可以寫裸設備。如of=/dev/null,"黑洞",它等價于一個只寫文件. 所有寫入它的內容都會永遠丟失. (不產生寫磁盤IO)
bs=8k? 每次讀或寫的大小,即一個塊的大小。
count=xxx? 讀寫塊的總數量。
避免操作系統“寫緩存”干擾測試成績,使用sync、fsync、fdatasync
---------------------------------------------------------
關于sync、fsync、fdatasync請參考:http://elf8848.iteye.com/blog/2088986
dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
dd bs=8k count=4k if=/dev/zero of=test.log? 默認“寫緩存”啟作用
dd bs=8k count=4k if=/dev/zero of=test.log conv=sync?? “寫緩存”啟作用
dd bs=8k count=4k if=/dev/zero of=test.log; sync?? “寫緩存”啟作用
dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
加入這個參數后,dd命令執行到最后會真正執行一次“同步(sync)”操作,,這樣算出來的時間才是比較符合實際使用結果的。conv=fsync表示把文件的“數據”和“metadata”都寫入磁盤(metadata包括size、訪問時間st_atime & st_mtime等等),因為文件的數據和metadata通常存在硬盤的不同地方,因此fsync至少需要兩次IO寫操作,fsync 與fdatasync相差不大。(重要,最有參考價值)
dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
加入這個參數后,dd命令執行到最后會真正執行一次“同步(sync)”操作,,這樣算出來的時間才是比較符合實際使用結果的。conv=fdatasync表示只把文件的“數據”寫入磁盤,fsync 與fdatasync相差不大。(重要,最有參考價值)
dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
加入這個參數后,每次讀取8k后就要先把這8k寫入磁盤,然后再讀取下面一個8k,一共重復4K次。這是最慢的一種方式了。
dd bs=8k count=4k if=/dev/zero of=test
沒加關于操作系統“寫緩存”的參數,默認“寫緩存”啟作用。dd先把數據寫的操作系統“寫緩存”,就完成了寫操作。通常稱為update的系統守護進程會周期性地(一般每隔30秒)調用sync函數,把“寫緩存”中的數據刷入磁盤。因為“寫緩存”起作用,你會測試出一個超級快的性能。
如:163840000 bytes (164 MB) copied, 0.742906 seconds, 221 MB/s
dd bs=8k count=4k if=/dev/zero of=test conv=sync
conv=sync參數明確“寫緩存”啟作用,默認值就是conv=sync
dd bs=8k count=4k if=/dev/zero of=test; sync
與第1個完全一樣,分號隔開的只是先后兩個獨立的命令。當sync命令準備開始往磁盤上真正寫入數據的時候,前面dd命令已經把錯誤的“寫入速度”值顯示在屏幕上了。所以你還是得不到真正的寫入速度。
裸設備測試
----------------------
1、裸設備到文件系統
dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841
2、文件系統到裸設備
dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8
更多關于裸設備,請參考:http://czmmiao.iteye.com/blog/1748748
轉載自:http://elf8848.iteye.com/blog/2089055
總結
以上是生活随笔為你收集整理的dd命令测试linux磁盘io情况,【LINUX】正确的使用dd进行磁盘读写速度测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle索引图文解析,oracle索
- 下一篇: linux maven .m2文件夹,M