有時候我們在做維護的時候,總會遇到類似于io特别高,但不能判定是io瓶頸還是軟體參數設定不當導緻熱盤的問題.這時候通常希望能知道磁盤的讀寫速度,來進行下一步的決策.
(1)使用hdparm指令
使用方法很簡單
# hdparm -tt /dev/sda
/dev/sda:
timing cached reads: 6676 mb in 2.00 seconds = 3340.18 mb/sec
timing buffered disk reads: 218 mb in 3.11 seconds = 70.11 mb/sec
可以看到,2秒鐘讀取了6676mb的緩存,約合3340.18 mb/sec;
在3.11秒中讀取了218mb磁盤(實體讀),讀取速度約合70.11 mb/sec
(2)使用dd指令
這不是一個專業的測試工具,不過如果對于測試結果的要求不是很苛刻的話,平時可以使用來對磁盤的讀寫速度作一個簡單的評估.
在使用前首先了解兩個特殊裝置
/dev/null 僞裝置,資源回收筒.寫該檔案不會産生io
/dev/zero 僞裝置,會産生空字元流,對它不會産生io
測試方法:
a.測試磁盤的io寫速度
# time dd if=/dev/zero of=/test.dbf bs=8k count=300000
300000+0 records in
300000+0 records out
10.59s real 0.43s user 9.40s system
# du -sm /test.dbf
2347 /test.dbf
可以看到,在10.59秒的時間裡,生成2347m的一個檔案,io寫的速度約為221.6mb/sec;
當然這個速度可以多測試幾遍取一個平均值,符合機率統計.
b.測試磁盤的io讀速度
# df -m
filesystem 1m-blocks used available use% mounted on
/dev/mapper/volgroup00-logvol00
19214 9545 8693 53% /
/dev/sda1 99 13 82 14% /boot
none 506 0 506 0% /dev/shm
# time dd if=/dev/mapper/volgroup00-logvol00 of=/dev/null bs=8k
2498560+0 records in
2498560+0 records out
247.99s real 1.92s user 48.64s system
上面的試驗在247.99秒的時間裡讀取了19214mb的檔案,計算下來平均速度為77.48mb/sec
c.測試io同時讀和寫的速度
# time dd if=/dev/sda1 of=test.dbf bs=8k
13048+1 records in
13048+1 records out
3.73s real 0.04s user 2.39s system
# du -sm test.dbf
103 test.dbf
上面測試的資料量比較小,僅作為參考.
相比兩種方法:
前者是linux上專業的測試ide/ata磁盤的工具,但是使用範圍有局限性;(此試驗僅僅使用了測試磁盤io的參數,對于其他參數及解釋參考man手冊)
後者可以通用,但不夠專業,也沒有考慮到緩存和實體讀的區分,測試的資料也是僅作參考,不能算是權威.
最新内容請見作者的github頁:http://qaseven.github.io/