下面将使用dd命令在CentOS主机上测试磁盘的极限速度
先测试磁盘的极限写入速度
dd if=/dev/zero of=/tmp/testfile bs=1M count=3072 conv=fdatasync,notrunc status=progress
该命令将在/tmp目录下创建一个名为testfile的文件,并向其中写入3GB的数据
if=/dev/zero:指定输入文件为/dev/zero,即从空设备中读取数据
of=/tmp/testfile:指定输出文件为/tmp/testfile
bs=1M:指定每次写入的块大小为1MB
count=1024:指定写入3072个块,即总共写入3GB的数据
conv=fdatasync,notrunc:指定写入数据时使用fdatasync选项,确保数据被写入磁盘而不是缓存,并且不截断输出文件
status=progress:指定在命令行输出进度信息,包括写入速度等
此服务器使用的磁盘为sas磁盘 ,可以看到极限写速度为414MB/s
测试磁盘的极限读速度
dd if=/tmp/testfile of=/dev/null bs=1M count=3072 iflag=direct
if=/tmp/testfile:指定输入文件为磁盘/tmp/testfile,即从刚刚写测试的文件中去读取数据
of=/dev/null:指定输出文件为/dev/null,即将读取的数据丢弃掉
bs=1M:指定每次读取的块大小为1MB
count=3072:指定读取3072个块,即总共读取3GB的数据
iflag=direct:指定使用直接I/O模式,跳过缓存,直接从磁盘读取数据
可以看到极限读速度为463MB/s
需要注意的是如果是测网络挂载的磁盘读写速度,要把网络带宽考虑进去,不然要是网络带宽比磁盘的读写速度小,测得的值就会不准确,相当于测得的是网络带宽得极限大小
就好比我这里用的是sas磁盘,但是是通过网络方式挂载测得的读写非常小,就是网络带宽的极限速度,我这里的网络带宽为百兆
注意测试完后记得把tmp目录下的testfile文件删掉,不然会一直占用磁盘空间
我这边就只有一个磁盘,且/目录就是挂在在此磁盘下,所以在此目录上创建文件就能测得这个磁盘的读写速度,若是有多个磁盘,需要测另外磁盘的读写速度则需要在另外磁盘所挂载的目录上创建文件去测试读写速度,就能测得对应磁盘的读写速度了