linux下测试磁盘的读写IO速度
有時候我們在做維護的時候,總會遇到類似于IO特別高,但不能判定是IO瓶頸還是軟件參數(shù)設置不當導致熱盤的問題.這時候通常希望能知道磁盤的讀寫速度,來進行下一步的決策.
下面是兩種測試方法:
(1)使用hdparm命令
這是一個是用來獲取ATA/IDE硬盤的參數(shù)的命令,是由早期Linux IDE驅(qū)動的開發(fā)和維護人員 Mark Lord開發(fā)編寫的( hdparm has been written by Mark Lord?, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).該命令應該也是僅用于Linux系統(tǒng),對于UNIX系統(tǒng),ATA/IDE硬盤用的可能比較少,一般大型的系統(tǒng)都是使用磁盤陣列的.
使用方法很簡單
# 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命令
這不是一個專業(yè)的測試工具,不過如果對于測試結果的要求不是很苛刻的話,平時可以使用來對磁盤的讀寫速度作一個簡單的評估.
另外由于這是一個免費軟件,基本上×NIX系統(tǒng)上都有安裝,對于Oracle裸設備的復制遷移,dd工具一般都是首選.
在使用前首先了解兩個特殊設備
/dev/null 偽設備,回收站.寫該文件不會產(chǎn)生IO
/dev/zero 偽設備,會產(chǎn)生空字符流,對它不會產(chǎn)生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;
當然這個速度可以多測試幾遍取一個平均值,符合概率統(tǒng)計.
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
上面測試的數(shù)據(jù)量比較小,僅作為參考.
相比兩種方法:
前者是linux上專業(yè)的測試IDE/ATA磁盤的工具,但是使用范圍有局限性;(此試驗僅僅使用了測試磁盤IO的參數(shù),對于其他參數(shù)及解釋參考man手冊)
后者可以通用,但不夠?qū)I(yè),也沒有考慮到緩存和物理讀的區(qū)分,測試的數(shù)據(jù)也是僅作參考,不能算是權威.
先了解以下概念:
(1)首先null文件時一個黑洞文件,你把它理解為垃圾桶就行,什么廢舊不需要的文件只需往里扔,進入它的內(nèi)容都會永遠丟失
?(2)zero文件當你讀它的時候,它會提供無限的空字符(NULL, ASCII NUL, 0x00),最長用的做法就是想你這樣生產(chǎn)一個特定大小的空白文件。
(3)if是讀出來 of是寫進去。
如果你想測試單口USB讀寫速度,需將U盤設置一個掛載點,掛載到一個位置上,然后再往里寫入。
如:mount /dev/sda1 /mnt
應該如下:
1、測試寫入應該這樣:
dd if=/dev/zero of=/mnt/test.txt bs=100M count=1
2、測試讀取是這樣:
dd if=/mnt/test.txt of=/dev/null bs=100M count=1
附錄
hdparm -h
-a<快取分區(qū)> 設定讀取文件時,預先存入塊區(qū)的分區(qū)數(shù),若不加上<快取分區(qū)>選項,則顯示目前的設定。
-A<0或1> 啟動或關閉讀取文件時的快取功能。
-c<I/O模式> 設定IDE32位I/O模式。
-C 檢測IDE硬盤的電源管理模式。
-d<0或1> 設定磁盤的DMA模式。
-f 將內(nèi)存緩沖區(qū)的數(shù)據(jù)寫入硬盤,并清楚緩沖區(qū)。
-g 顯示硬盤的磁軌,磁頭,磁區(qū)等參數(shù)。
-h 顯示幫助。
-i 顯示硬盤的硬件規(guī)格信息,這些信息是在開機時由硬盤本身所提供。
-I 直接讀取硬盤所提供的硬件規(guī)格信息。
-k<0或1> 重設硬盤時,保留-dmu參數(shù)的設定。
-K<0或1> 重設硬盤時,保留-APSWXZ參數(shù)的設定。
-m<磁區(qū)數(shù)> 設定硬盤多重分區(qū)存取的分區(qū)數(shù)。
-n<0或1> 忽略硬盤寫入時所發(fā)生的錯誤。
-p<PIO模式> 設定硬盤的PIO模式。
-P<磁區(qū)數(shù)> 設定硬盤內(nèi)部快取的分區(qū)數(shù)。
-q 在執(zhí)行后續(xù)的參數(shù)時,不在屏幕上顯示任何信息。
-r<0或1> 設定硬盤的讀寫模式。
-S<時間> 設定硬盤進入省電模式前的等待時間。
-t 評估硬盤的讀取效率。 -T 評估硬盤快取的讀取效率。
-u<0或1> 在硬盤存取時,允許其他中斷要求同時執(zhí)行。 -v 顯示硬盤的相關設定。
-W<0或1> 設定硬盤的寫入快取。 -X<傳輸模式> 設定硬盤的傳輸模式。
-y 使IDE硬盤進入省電模式。 -Y 使IDE硬盤進入睡眠模式。
-Z 關閉某些Seagate硬盤的自動省電功能。
參考:?
http://blog.chinaunix.net/uid-24250828-id-3239100.html
http://blog.csdn.net/gong_xucheng/article/details/12615405
擴展可參看:
Linux系統(tǒng)中使用 DD 命令測試 USB 和 SSD 硬盤的讀寫速度
擴展:linux 查看硬盤使用率
df ??-h
Df命令是linux系統(tǒng)以磁盤分區(qū)為單位查看文件系統(tǒng),可以加上參數(shù)查看磁盤剩余空間信息,命令格式:
df -hl
顯示格式為:
文件系統(tǒng) ???????????容量 已用 可用 已用% 掛載點
Filesystem ?????????Size Used Avail Use% Mounted on
/dev/hda2 ???????????45G ??19G??24G 44% /
/dev/hda1 ??????????494M ??19M 450M??4% /boot
/dev/hda6 ??????????4.9G 2.2G 2.5G 47% /home
/dev/hda5 ??????????9.7G 2.9G 6.4G 31% /opt
none ??????????????1009M ???0 1009M ??0% /dev/shm
/dev/hda3 ??????????9.7G 7.2G 2.1G 78% /usr/local
/dev/hdb2 ???????????75G ??75G????0 100% /
/dev/hdb2 ???????????75G ??75G????0 100% /
以上面的輸出為例,表示的意思為:
HD硬盤接口的第二個硬盤(b),第二個分區(qū)(2),容量是75G,用了75G,可用是0,因此利用率是100%,被掛載到根分區(qū)目錄上(/)。
下面是相關命令的解釋:
df -hl 查看磁盤剩余空間
df -h 查看每個根路徑的分區(qū)大小
du -sh [目錄名] 返回該目錄的大小
du -sm [文件夾] 返回該文件夾總M數(shù)
更多功能可以輸入一下命令查看:
df --help
du --help
查看硬盤的分區(qū) #sudo fdisk -l
查看IDE硬盤信息 #sudo hdparm -i /dev/hda
查看STAT硬盤信息 #sudo hdparm -I /dev/sda 或 #sudo apt-get installblktool #sudo blktool /dev/sda id
查看硬盤剩余空間 #df -h #df -H
查看目錄占用空間 #du -hs 目錄名
優(yōu)盤沒法卸載 #sync fuser -km /media/usbdisk
總結
以上是生活随笔為你收集整理的linux下测试磁盘的读写IO速度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SaaS 客户生命周期(逐字稿+PPT)
- 下一篇: 中国行业趋势报告——2022年度特别报告