資源描述:
《dd測試硬盤讀寫性能.docx》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、1.dd介紹dd是UNIX和Linux系統(tǒng)自帶的工具,能夠以操縱裸設(shè)備的方式完成本地磁盤之間的高速復(fù)制,跨網(wǎng)絡(luò)數(shù)據(jù)復(fù)制,以及制作磁盤鏡像等功能。另外dd還能生產(chǎn)固定大小的文件,以很高的速度寫入磁盤。這就為存儲測試提供了一個較好的手段,我們可以利用dd生成許多小文件來測試存儲的吞吐量(IOPS)指標(biāo),而利用dd生成數(shù)個大文件來測量存儲系統(tǒng)帶寬(MB/s)。2.參數(shù)1.if=file輸入文件名,缺省為標(biāo)準(zhǔn)輸入。即指定源文件。2.of=file輸出文件名,缺省為標(biāo)準(zhǔn)輸出。3.ibs=bytes一次讀入bytes個字
2、節(jié),即指定一個塊大小為bytes個字節(jié)。4.obs=bytes一次輸出bytes個字節(jié),即指定一個塊大小為bytes個字節(jié)。5.bs=bytes同時設(shè)置讀入/輸出的塊大小為bytes個字節(jié)。6.cbs=bytes一次轉(zhuǎn)換bytes個字節(jié),即指定轉(zhuǎn)換緩沖區(qū)大小。7.skip=blocks從輸入文件開頭跳過blocks個塊后再開始復(fù)制。8.seek=blocks從輸出文件開頭跳過blocks個塊后再開始復(fù)制。(通常只有當(dāng)輸出文件是磁盤或磁帶時才有效,即備份到磁盤或磁帶時才有效)。9.count=blocks僅拷貝blocks個塊,塊大小等于
3、ibs指定的字節(jié)數(shù)。10.conv=conversion[,conversion...]用指定的參數(shù)轉(zhuǎn)換文件。轉(zhuǎn)換參數(shù):ascii轉(zhuǎn)換EBCDIC為ASCII。ebcdic轉(zhuǎn)換ASCII為EBCDIC。ibm轉(zhuǎn)換ASCII為alternateEBCDIC.block把每一行轉(zhuǎn)換為長度為cbs的記錄,不足部分用空格填充。unblock使每一行的長度都為cbs,不足部分用空格填充。lcase把大寫字符轉(zhuǎn)換為小寫字符。ucase把小寫字符轉(zhuǎn)換為大寫字符。swab交換輸入的每對字節(jié)。noerror出錯時不停止。notrunc不截短輸出文件。sy
4、nc把每個輸入塊填充到ibs個字節(jié),不足部分用空(NUL)字符補(bǔ)齊。1.dd測試硬盤性能首先要了解兩個特殊的設(shè)備:/dev/null:回收站、黑洞/dev/zero:產(chǎn)生空字符3.1.測試存儲帶寬使用dd測試存儲系統(tǒng)帶寬(MB/s)時,我們通常可以對主機(jī)中識別到的每塊磁盤,順序組合使用類似下面兩行的命令,來衡量大數(shù)據(jù)塊并發(fā)讀寫時存儲的帶寬性能指標(biāo)。其中bs值是指每次寫入文件的大小,本例中是1MB大小,用戶可以根據(jù)自身情況設(shè)置好最符合自身應(yīng)用情況的文件大小進(jìn)行測試。每條最后的&表示后臺讓該命令運(yùn)行,一般我們是先運(yùn)行寫測試然后再運(yùn)行讀測試,
5、讓讀寫操作并發(fā)進(jìn)行。由于實(shí)際生產(chǎn)測試環(huán)境中往往有多塊磁盤,我們往往會將這一系列命令寫成Shell腳本讓測試過程自動進(jìn)行。#ddif=/dev/zeroof=/dev/sdabs=1024k&(帶寬寫測試)#ddif=/dev/sdaof=/dev/nullbs=1024k&(帶寬讀測試)3.2.測試存儲吞吐量使用dd測試存儲系統(tǒng)吞吐量(IOPS)指標(biāo)時,我們通常順序組合使用下面的命令,來模擬小數(shù)據(jù)塊并發(fā)讀寫時存儲的吞吐量性能指標(biāo)。與測試帶寬時相比,吞吐量測試的數(shù)據(jù)文件大小僅為8KB,因此能夠測試出大量小I/O情況下存儲的吞吐量(IOPS
6、)指標(biāo)。當(dāng)然進(jìn)行吞吐量測試時,我們一般也要針對主機(jī)的每塊磁盤設(shè)備,因此也將這些命令寫成Shell腳本,從而讓測試過程自動進(jìn)行。#ddif=/dev/zeroof=/dev/sdabs=8k&(吞吐量寫測試)#ddif=/dev/sdaof=/dev/zerobs=8k&(吞吐量讀測試)2.測試性能實(shí)例dd只能提供一個大概的測試結(jié)果,而且是連續(xù)IO而不是隨機(jī)IO4.1.讀測試#dd if=/dev/sda2 of=/dev/null bs=8k count=+0recordsin+0recordsoutbytes(69GB)copied,
7、516.547seconds,133MB/sreal8m36.926suser0m0.117ssys0m55.216s因?yàn)?dev/sda2是一個物理分區(qū),對它的讀取會產(chǎn)生IO,/dev/null是偽設(shè)備,相當(dāng)于黑洞,of到該設(shè)備不會產(chǎn)生IO,所以,這個命令的IO只發(fā)生在/dev/sdb1上,也相當(dāng)于測試磁盤的讀能力。4.2.寫測試#ddif=/dev/zeroof=/opt/iotestbs=8kcount=+0recordsin+0recordsoutbytes(69GB)copied,888.398seconds,77.4MB/s
8、real14m48.743suser0m3.678ssys2m47.158s因?yàn)?dev/zero是一個偽設(shè)備,它只產(chǎn)生空字符流,對它不會產(chǎn)生IO,所以,IO都會集中在of文件中,of文件只用于寫,所以這個