一、背景介绍
我们在日常开发过程中会经常使用基于虚拟机技术的虚拟服务器来进行环境搭建和程序调试,由于虚拟服务器的底层磁盘是建立在分布式文件系统之上的,如果分布式文件系统或磁盘硬件出现故障,会直接影响集群的运行速度和稳定性。所以,测试系统磁盘的读写性能就成为了系统环境准备和验证的一个重要环节。
那么,如何来对系统磁盘的读写性能进行测试呢?
二、测试环境介绍
以我曾经遇到过的一个真实情况举例,我准备搭建一个大数据集群环境,分配了6台虚拟服务器作为大数据集群的各个节点。
节点列表如下:
172.20.0.86 dev16
三、测试方法介绍
测试原理:使用Linux命令向磁盘中写入1G测试数据,记录写入数据的时间及每秒的平均写入数据量,根据这两个数据对服务器进行横向比较。
测试硬盘纯粹写入的命令为:time dd if=/dev/zero of=/test.dbf bs=64k count=16k
这条命令会在磁盘根目录创建一个名为test.dbf的文件,并持续向文件中写入数据,写入完成后会通过time命令计算总的写入时间,以及每秒写入的数据量。
测试硬盘纯粹读的命令为:time dd if=/test.dbf of=/dev/null bs=64k count=16k
这条命令会从test.dbf文件中读取数据,并将数据写入/dev/null,并不产生磁盘写操作,所以测试结果可以视为纯粹读取所消耗的时间。
使用上述命令对我的测试集群节点分别测试后,得到测试结果如下:
我在我个人电脑的虚拟机上测试的结果为用时13秒,每秒81.8M。只有dev21与这个数据接近。
根据以上测试结果可以看到,dev17、dev18、dev19、dev20的磁盘读写性能均严重偏离正常值,存在明显问题。其中一台服务器的测试情况截图如下:
四、总结
现在定位了出现问题的服务器,就可以对该服务器进行检查,会导致类似问题出现的原因会有很多种,比如:分布式文件系统网络传输过慢、磁盘硬件出现故障、虚拟机的宿主服务器负载过高等等。
在确定了导致问题的原因之后,才能逐一对存在的问题进行解决,一般情况下可能会需要跟运维工程师和网络工程师一起排查问题。
大数据集群在磁盘写入性能和网络传输性能等方面都有较高要求,希望这篇文章能够对大家在搭建大数据集群时排查问题提供一些帮助。