Linux下除了自带的dd可以测试硬盘的读写速度,还有hdparm也可以 测试硬盘读写速度。hdparm可检测,显示与设定IDE或SCSI硬盘的参数。
安装:yum install hdparm
语 法:hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A <0或1>][-c ][-d <0或1>][-k <0或1>][-K <0或1>][-m <分区数>][-n <0或1>][-p
参 数:
-a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
-A<0或1> 启动或关闭读取文件时的快取功能。
-c 设定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
-P<磁区数> 设定硬盘内部快取的分区数。
-q 在执行后续的参数时,不在屏幕上显示任何信息。
-r<0或1> 设定硬盘的读写模式。
-S<时间> 设定硬盘进入省电模式前的等待时间。
-t 评估硬盘的读取效率。
-T 评估硬盘缓存的读取效率。
-u<0或1> 在硬盘存取时,允许其他中断要求同时执行。
-v 显示硬盘的相关设定。
-W<0或1> 设定硬盘的写入快取。
-X<传输模式> 设定硬盘的传输模式。
-y 使IDE硬盘进入省电模式。
-Y 使IDE硬盘进入睡眠模式。
-Z 关闭某些Seagate硬盘的自动省电功能。
测试硬盘的读取速度:
1、普通磁盘测试(我的笔记本虚拟机里面的RedHat):
# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 250 MB in 3.00 seconds = 83.31 MB/sec
# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 6260 MB in 2.0 seconds = 3131.79 MB/sec
2、RAID10测试(8块盘做的raid10)
[root@zhanglin ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 1684 MB in 3.00 seconds = 560.89 MB/sec
[root@zhanglin ~]# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 13926 MB in 2.00 seconds = 6967.94 MB/sec
Linux里面可以查看具体的参数说明:
[root@zhanglin data]# hdparm --help
hdparm - get/set hard disk parameters - version v9.16
Usage: hdparm [options] [device] ..
Options:
-a get/set fs readahead
-A get/set the drive look-ahead flag (0/1)
-b get/set bus state (0 == off, 1 == on, 2 == tristate)
-B set Advanced Power Management setting (1-255)
-c get/set IDE 32-bit IO setting
-C check drive power mode status
-d get/set using_dma flag
-D enable/disable drive defect management
-E set cd/dvd drive speed
-f flush buffer cache for device on exit
-F flush drive write cache
-g display drive geometry
-h display terse usage information
-H read temperature from drive (Hitachi only)
-i display drive identification
-I detailed/current information directly from drive
-k get/set keep_settings_over_reset flag (0/1)
-K set drive keep_features_over_reset flag (0/1)
-L set drive doorlock (0/1) (removable harddisks only)
-M get/set acoustic management (0-254, 128: quiet, 254: fast)
-m get/set multiple sector count
-N get/set max visible number of sectors (HPA) (VERY DANGEROUS)
-n get/set ignore-write-errors flag (0/1)
-p set PIO mode on IDE interface chipset (0,1,2,3,4,...)
-P set drive prefetch count
-q change next setting quietly
-Q get/set DMA queue_depth (if supported)
-r get/set device readonly flag (DANGEROUS to set)
-R obsolete
-s set power-up in standby flag (0/1) (DANGEROUS)
-S set standby (spindown) timeout
-t perform device read timings
-T perform cache read timings
-u get/set unmaskirq flag (0/1)
-U obsolete
-v defaults; same as -acdgkmur for IDE drives
-V display program version and exit immediately
-w perform device reset (DANGEROUS)
-W get/set drive write-caching flag (0/1)
-x obsolete
-X set IDE xfer mode (DANGEROUS)
-y put drive in standby mode
-Y put drive to sleep
-Z disable Seagate auto-powersaving mode
-z re-read partition table
--dco-freeze freeze/lock current device configuration until next power cycle
--dco-identify read/dump device configuration identify data
--dco-restore reset device configuration back to factory defaults
--direct use O_DIRECT to bypass page cache for timings
--drq-hsm-error crash system with a "stuck DRQ" error (VERY DANGEROUS)
--fibmap show device extents (and fragmentation) for a file
--fibmap-sector show absolute LBA of a specfic sector of a file
--fwdownload Download firmware file to drive (EXTREMELY DANGEROUS)
--fwdownload-mode3 Download firmware using min-size segments (EXTREMELY DANGEROUS)
--fwdownload-mode3-max Download firmware using max-size segments (EXTREMELY DANGEROUS)
--fwdownload-mode7 Download firmware using a single segment (EXTREMELY DANGEROUS)
--idle-immediate idle drive immediately
--idle-unload idle immediately and unload heads
--Istdin read identify data from stdin as ASCII hex
--Istdout write identify data to stdout as ASCII hex
--make-bad-sector deliberately corrupt a sector directly on the media (VERY DANGEROUS)
--prefer-ata12 use 12-byte (instead of 16-byte) SAT commands when possible
--read-sector read and dump (in hex) a sector directly from the media
--security-help display help for ATA security commands
--trim-sectors tell SSD firmware to discard unneeded data sectors (lba and count)
--verbose display extra diagnostics from some commands
--write-sector repair/overwrite a (possibly bad) sector directly on the media (VERY DANGEROUS)