Linux測試硬盤讀性能的常用工具-hdparm和dd倆搭檔
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
一.hparm # 它用來在基於 Linux的系統上獲取或設置硬盤參數,包括測試讀性能以及緩存性能等。
1>.安裝hdparm工具
[root@node105 ~]# yum -y install hdparm
2>.查看幫助信息
[root@node105 ~]# hdparm -h
-a<快取分區> 設定讀取文件時,預先存入塊區的分區數,若不加上<快取分區>選項,則顯示目前的設定。 -A<0或1> 啟動或關閉讀取文件時的快取功能。 -c<I/O模式> 設定IDE32位I/O模式。 -C 檢測IDE硬盤的電源管理模式。 -d<0或1> 設定磁盤的DMA模式。 -f 將內存緩沖區的數據寫入硬盤,並清楚緩沖區。 -g 顯示硬盤的磁軌,磁頭,磁區等參數。 -h 顯示幫助。 -i 顯示硬盤的硬件規格信息,這些信息是在開機時由硬盤本身所提供。 -I 直接讀取硬盤所提供的硬件規格信息。 -k<0或1> 重設硬盤時,保留-dmu參數的設定。 -K<0或1> 重設硬盤時,保留-APSWXZ參數的設定。 -m<磁區數> 設定硬盤多重分區存取的分區數。 -n<0或1> 忽略硬盤寫入時所發生的錯誤。 -p<PIO模式> 設定硬盤的PIO模式。 -P<磁區數> 設定硬盤內部快取的分區數。 -q 在執行后續的參數時,不在屏幕上顯示任何信息。 -r<0或1> 設定硬盤的讀寫模式。 -S<時間> 設定硬盤進入省電模式前的等待時間。 -t 評估硬盤的讀取效率。 -T 評估硬盤快取的讀取效率。 -u<0或1> 在硬盤存取時,允許其他中斷要求同時執行。 -v 顯示硬盤的相關設定。 -W<0或1> 設定硬盤的寫入快取。 -X<傳輸模式> 設定硬盤的傳輸模式。 -y 使IDE硬盤進入省電模式。 -Y 使IDE硬盤進入睡眠模式。 -Z 關閉某些Seagate硬盤的自動省電功能。
3>.顯示硬盤的相關信息(可以使用 “fdisk -l” 來查看磁盤信息 )
[root@kafka118 ~]# hdparm /dev/sda
4>.評估硬盤的讀取效率
[root@kafka118 ~]# hdparm -t /dev/sda
5>.測試硬盤緩存的讀取速度
[root@kafka118 ~]# hdparm -T /dev/sda
6>.直接測試硬盤的讀性能
[root@kafka118 ~]# hdparm -tT --direct /dev/sda
7>.查看DMA情況
[root@kafka118 ~]# hdparm -cdt /dev/sda
二.dd # 使用time命令和dd命令可以簡單測試硬盤的寫速率
這不是一個專業的測試工具,不過如果對於測試結果的要求不是很苛刻的話,平時可以使用來對磁盤的讀寫速度作一個簡單的評估.
1>.准備測試環境
[root@flume115 ~]# cat /etc/redhat-release #操作系統是CentOS 7.5 CentOS Linux release 7.5.1804 (Core) [root@flume115 ~]# [root@flume115 ~]# [root@flume115 ~]# uname -r #內核是3.10.0-862.el7.x86_64 3.10.0-862.el7.x86_64 [root@flume115 ~]# [root@flume115 ~]# [root@flume115 ~]# uname -m #查看操作系統的架構 x86_64 [root@flume115 ~]# [root@flume115 ~]# [root@flume115 ~]# free -h #查看內存,相比大家也看出來了,我的測試環境是32G內存 total used free shared buff/cache available Mem: 31G 489M 29G 20M 1.3G 30G Swap: 15G 0B 15G [root@flume115 ~]# [root@flume115 ~]# yum -y install iotop sysstat #安裝必要的監控IO的工具,即iotop和iostat
2>.測試寫入50G數據,數據量越大,測試值應該更精確(測試過程中,需要關注兩點,磁盤的讀寫速度和IO使用率,我們分別使用iopp和iostat工具來觀察。)
[root@flume115 ~]# time -p bash -c "(dd if=/dev/zero of=/home/yinzhengjie/dd.log bs=1M count=50000)"
3>.執行上述命令后,使用iotop觀察占用的I/O情況
[root@flume115 ~]# iotop -o
4>.執行上述命令后,使用iostat觀察占用的I/O情況
[root@flume115 ~]# iostat -x 1
4>.驗證測試結果
[root@flume115 ~]# time -p bash -c "(dd if=/dev/zero of=/home/yinzhengjie/dd.log bs=1M count=50000)" 50000+0 records in 50000+0 records out 52428800000 bytes (52 GB) copied, 243.346 s, 215 MB/s real 244.49 user 0.05 sys 34.66 [root@flume115 ~]#