最近在进行海量小文件相关的性能测试,执行性能测试前首先要确认设备的硬件配置是否满足要求(具体方法可以参考性能测试第一步——查看设备的硬件配置)。

        除此之外还要确认是否存在网络瓶颈(iperf、iperf3)、磁盘读写瓶颈。所以今天来分享一下Linux下查看磁盘的读写性能的方法。

一、准备工作

        首先要确认是否要组RAID进行性能测试,要组的话应该选什么级别的RAID。

        关于RAID的介绍可以参考什么是RAID及创建RAID的方法

        如果你想获得最好的读写性能,RAID0是很好的选择,理论上磁盘个数越多,RAID0的读写性能越好;如果既想保证读写性能,又想保证数据的安全性,一般可以选择RAID5。

        备注:下面的例子是在RAID0的基础上测试的。

二、测试磁盘写性能

        time dd if=/dev/zero bs=2M count=51200 of=/data1/100G.file

  • time命令 在dd命令启动时开始计时,直到dd命令结束
  • dd命令 Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出
  • if=/dev/zero 输入文件名,即指定源文件。因为是测试写数据,所以这里选择/dev/zero这个伪文件
  • bs 设置写数据块的大小,如上图也就是每次写入2M数据
  • count 设置执行次数,反复执行51200次(每次2M,总共就是100G)
  • of=/data1/100G.file 输出文件名,即指定目标文件。/data1是我在RAID0上面挂载出来的一个目录,最终的100G数据会输出到100G.file这个文件里

        命令执行完成之后可以看到这组RAID0的写速度为1.1GB/s,写入耗时101.453s。

三、测试磁盘读性能

        time dd if=/data1/100G.file bs=2M count=51200 of=/dev/null

  • time命令 在dd命令启动时开始计时,直到dd命令结束
  • dd命令 Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出
  • if=/data1/100G.file 输入文件名,即指定源文件。因为是测试读速度,所以需要选择一个已有数据的文件(我这里选择了第二节写入的100G.file)
  • bs 设置读数据块的大小,如上图也就是每次写入2M数据
  • count 设置执行次数,反复执行51200次(每次读2M,总共就是100G)
  • of=/dev/null 输出文件名,即指定目标文件。这里选择/dev/null这个空设备。

        命令执行完成之后可以看到这组RAID0的读速度为3.6GB/s,写入耗时29.9868s。

        至于为什么测出来的读速度比写速度更快,我的理解是和去电影院看电影一样,入场的时候要先找位置才能坐下,所以入场的速度总比散场的时候慢。这么一想,原来事物的原理都是相似的🤔

Logo

更多推荐