Linux测试硬盘性能测试之hdparm、dd

发布时间 2023-04-20 14:10:43作者: wangzy-Zj

你可以使用以下命令在一个Linux或类Unix操作系统上进行简单的I/O性能测试。

  • dd命令 :它被用来在Linux和类Unix系统下对硬盘设备进行写性能的检测。
  • hparm命令:它用来在基于 Linux 的系统上获取或设置硬盘参数,包括测试读性能以及缓存性能等。

一、hparm        

1.1、安装hdparm工具

[root@localhost ~]# yum install hdparm -y

1.2、显示硬盘的相关信息(可以使用 “lsblk” 来查看磁盘信息 )

[root@localhost ~]# hdparm /dev/sda
 /dev/sda:
 IO_support = 0 (default 16-bit)
 readonly = 0 (off)
 readahead = 256 (on)
 geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数

1.3、查看读写速度

[root@localhost ~]# hdparm -tT /dev/sda2

/dev/sda2:
 Timing cached reads:   15738 MB in  2.00 seconds = 7876.71 MB/sec
 Timing buffered disk reads: 3578 MB in  3.00 seconds = 1191.20 MB/sec
[root@localhost ~]# 

二、dd命令

使用time命令和dd命令可以简单测试硬盘的写速率,

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

2.1 执行性能压测

测试写入20G数据,数据量越大,测试值应该更精确(测试过程中,需要关注两点,磁盘的读写速度和IO使用率,我们分别使用iopp和iostat工具来观察。)

time dd if=/dev/zero of=test.dd  bs=1M count=20000
解释:在当前目录下创建一个test的文件,写入20000个1M的数据。 
 
但我感觉这样的测试是不是没有把内容写到磁盘,而只是写到内存了,于是我在后面加上了sync
sync; time -p bash -c "(dd if=/dev/zero of=test.dd  bs=1G count=20);sync;"

其中/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。输出的结果类似(因为一般更长测试时间更准确,所以可以设置count大一些):

2.2 iotop观察数据

具体用法见另外随笔

执行上述命令后,使用iotop观察占用的I/O情况

# 安装软件
yum -y install iotop

#输出正在产生IO的进程
iotop -o -P

2.3 iostat观察数据

具体用法见另外随笔

# 安装工具
yum  -y install sysstat

# 观察
# 查看TPS和吞吐量信息(磁盘读写速度单位为KB)
[root@localhost ~]# iostat -m -x 2 5
-k:以kb为单位统计
-d:显示磁盘状态
-x:显示详细信息
2:统计时间间隔为2秒
5:统计5次