1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > linux下测试磁盘的读写IO速度

linux下测试磁盘的读写IO速度

时间:2019-03-09 16:05:58

相关推荐

linux下测试磁盘的读写IO速度

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.

下面是两种测试方法:

(1)使用hdparm命令

这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( 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系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的.

使用方法很简单

# 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命令

这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.

另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,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手册)

后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.

先了解以下概念:

(1)首先null文件时一个黑洞文件,你把它理解为垃圾桶就行,什么废旧不需要的文件只需往里扔,进入它的内容都会永远丢失

(2)zero文件当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00),最长用的做法就是想你这样生产一个特定大小的空白文件。

(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<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。

-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硬盘的自动省电功能。

参考:

/uid-24250828-id-3239100.html

/gong_xucheng/article/details/12615405

扩展可参看:

Linux系统中使用 DD 命令测试 USB 和 SSD 硬盘的读写速度

扩展:linux 查看硬盘使用率

df-h

Df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式:

df -hl

显示格式为:

文件系统容量 已用 可用 已用% 挂载点

FilesystemSize Used Avail Use% Mounted on

/dev/hda245G19G24G 44% /

/dev/hda1494M19M 450M4% /boot

/dev/hda64.9G 2.2G 2.5G 47% /home

/dev/hda59.7G 2.9G 6.4G 31% /opt

none1009M0 1009M0% /dev/shm

/dev/hda39.7G 7.2G 2.1G 78% /usr/local

/dev/hdb275G75G0 100% /

/dev/hdb275G75G0 100% /

以上面的输出为例,表示的意思为:

HD硬盘接口的第二个硬盘(b),第二个分区(2),容量是75G,用了75G,可用是0,因此利用率是100%,被挂载到根分区目录上(/)。

下面是相关命令的解释:

df -hl 查看磁盘剩余空间

df -h 查看每个根路径的分区大小

du -sh [目录名] 返回该目录的大小

du -sm [文件夹] 返回该文件夹总M数

更多功能可以输入一下命令查看:

df --help

du --help

查看硬盘的分区 #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 目录名

优盘没法卸载 #sync fuser -km /media/usbdisk

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。