有时候我们在做维护的时候,总会遇到类似于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硬盘的自动省电功能。

参考:

http://blog.chinaunix.net/uid-24250828-id-3239100.html

http://blog.csdn.net/gong_xucheng/article/details/12615405

扩展可参看:

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

扩展:linux 查看硬盘使用率

df   -h

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

df -hl

显示格式为: 

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

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),第二个分区(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

linux下测试磁盘的读写IO速度相关推荐

  1. linux下测试磁盘的读写IO速度-简易方法

    linux下测试磁盘的读写IO速度-简易方法 参考资料: https://blog.csdn.net/zqtsx/article/details/25487185 一:使用hdparm命令 这是一个是 ...

  2. 写linux程序测试吞吐量,Linux下测试磁盘性能(IO、吞吐量)

    使用软件:fio,可以从yum或apt-get安装 1.随机读 fio -filename=testFile -direct=1 -iodepth 1 -thread -rw=randread -io ...

  3. Linux下测试SSD硬盘读写速率

    硬盘分为机械硬盘HDD和固态硬盘SSD两种.现在固态硬盘已经是大势所趋咯.SSD用的接口是NVME.在NVME协议下面还有一层PCIe协议.HDD硬盘接口有SATA,SATA接口常用的工作模式有AHC ...

  4. linux 测试串口命令,Linux 下测试串口的命令microcom

    昨天应为要测试主板上的串口,查了一下,可以使用microcom 这条命令进行测试. 命令使用方法很简单: Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPE ...

  5. Linux操作系统下测试磁盘读写速度

    如何提高系统的性能是所有Linux系统工程师都要考虑的问题,尤其对于大数据处理,不得不考虑系统的读写性能.要知道读写性能,前面博客中提到/O性能,可以看到每个I/O的状态,现在需要知道一个磁盘每秒读写 ...

  6. linux lvm添加磁盘,Linux下添加磁盘创建lvm分区

    shell> fdisk /dev/xvdb #### 选择磁盘 Command (m for help): m #### 帮助 Command action a toggle a bootab ...

  7. linux下的磁盘配额简介暨 linux下加挂硬盘续

    linux下的磁盘配额简介暨 linux下加挂硬盘续 实验环境 VMware 6.5.2 +redhat Enterprise 5 as 以上是内核版本,还有方便起见加挂一块硬盘 这只是我的环境 实验 ...

  8. Linux下的磁盘加密方法

    Linux下的磁盘加密方法 转载时请注明出处和作者联系方式 作者联系方式:李先静 <xianjimli at hotmail dot com> 随着智能手机的计算能力和存储能力的提高,手机 ...

  9. win和linux下的磁盘测速(读写速度)

    win和linux下的磁盘测速(读写速度)1 - 命令行工具测速 后面接Linux下的代码测速 Linux磁盘测速2 - 代码测速 一.linux 下磁盘测速 1. 首先找到都有那些磁盘df命令(di ...

最新文章

  1. Python 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable
  2. 全球及中国食品供应区块链行业运行形势及未来投资规模建议报告2021年版
  3. LeetCode Best Time to Buy and Sell Stock II
  4. Kettle使用_29 转换里使用参数
  5. python os.system 512_python os.system os.popen 区别
  6. 前端学习(3159):react-hello-react之一个简单的helloworld
  7. 列举python中可变数据类型_python 可变数据类型 和 不可变数据类型
  8. 深入研究java.lang.Runtime类【转】
  9. mimo+matlab代码,mimo-matlab代码
  10. 如何自己写xuetr(一) 每次改变的驱动名和服务名
  11. bootstrap中让图片自适应不同的分辨率的方法
  12. 程序人生:半路转行再来学软件测试,能够成为大牛吗?
  13. 控制变频器调节电机梯形图_如何通过PLC控制变频器进行电机转速控制,含代码...
  14. Spring多个版本源码地址分享
  15. 不混淆 android jni,JNI 防混淆 Android proguard
  16. 21天自学c语言漫画版,21天学通C语言第6版
  17. 柠檬班python自动化百度云_带三开头的名字女孩名字大全
  18. 南京信息工程大学计算机博士点,南京信息工程大学2021年招收攻读博士学位研究生专业及考试科目...
  19. 均值滤波,中值滤波,最大最小值滤波
  20. python单一数字取对数与数列取对数

热门文章

  1. 如何使用ROS查找rgbdslam代码包框架的输入
  2. Python数据格式:%s字符串,%d整型,%f浮点型
  3. nginx upstream 常用的几种调度方式
  4. Angular--页面间切换及传值的四种方法
  5. Can't connect to MySQL server on 'localhost' 10061
  6. BZOJ1115:[POI2009]石子游戏Kam(博弈论)
  7. typedefnbsp;struct与struct的区别
  8. Restrict Users to Use Old Passwords
  9. Python学习笔记:入门(1)
  10. python实现图片文件批处理