【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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2145473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux dd 測試硬碟的讀寫效能Linux硬碟
- hdparm 測試硬碟讀寫速度I/O硬碟
- dd模擬asm磁碟容災測試ASM
- Linux 下使用 dd 命令進行硬碟 I/O 效能檢測Linux硬碟
- 使用 Sysbench 進行 Linux 效能測試Linux
- linux磁碟管理命令--ddLinux
- 伺服器硬碟讀寫大檔案速度測試伺服器硬碟
- linux 使用FIO測試磁碟iopsLinux
- 如何對Mac進行基礎檢測和速度測試Mac
- Linux系統硬碟讀寫測試Linux硬碟
- Win10神秘加成? 磁碟讀寫效能對比測試Win10
- 【Linux】fio測試磁碟Linux
- Laravel 單元測試實戰(3)- 編寫整合測試確保介面和資料庫程式碼正確Laravel資料庫
- 使用 HTTPie 進行 API 測試HTTPAPI
- 使用PostMan進行API測試PostmanAPI
- oracle 10g rac +asm 進行加物理磁碟與減物理磁碟的測試Oracle 10gASM
- 使用dd命令進行遠端備份
- PHP單元測試-保障程式碼正確執行的護衛神PHP
- linux環境下使用jmeter進行分散式測試LinuxJMeter分散式
- 你瞭解過軟體確認測試嗎?可進行確認測試的軟體測評中心推薦
- Redhat下dd命令測試Redhat
- 使用 MeterSphere 進行 Dubbo 介面測試
- 使用JUnit進行單元測試
- 使用Wiremock進行整合測試 - kubilayREMMock
- 使用Jmeter進行http介面測試JMeterHTTP
- 【java】使用jprofiler進行效能測試Java
- “Linux”正確讀音及音標(轉)Linux
- 西部資料藍盤組raid1後讀寫速度測試AI
- Linux下磁碟I/O測試Linux
- 在Linux下測試磁碟的I/OLinux
- 使用 dd 和 gzip 代替 Ghost 做磁碟映象
- Angular單元測試如何只執行指定的測試用例,提高測試速度Angular
- Python中的單元測試框架:使用unittest進行有效測試Python框架
- 使用遠端Docker進行整合測試Docker
- 使用Jest進行React單元測試React
- 使用PostMan進行自動化測試Postman
- 使用 PostMan 進行自動化測試Postman
- JMeter使用jar進行壓力測試JMeterJAR