云主机磁盘性能测试

选购云主机时我们会考虑很多因素,像CPU,内存,磁盘I/O,网络是不是BGP等。其中大部分因素都可以直接量化,比如几核CPU,几M带宽在购买时就能直接选择。但是磁盘I/O是你看不到但是直接影响云主机性能的参数。

我们拿到云主机后第一件事通常都会测试下磁盘I/O,最常用并且较专业的工具就是hdparm,基本所有Linux系统都自带该工具。下面说说测试方法:

一.查看我们的硬盘分区挂载情况

首先我们要查看硬盘分区与挂载情况,由于云主机挂载磁盘是动态的(国内大部分云还停留在需要重启服务器阶段),所以我们执行命令看到的情况可能会有些差异,不过不会影响测试;

1
2
3
4
5
df -h

Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 36G 4.6G 30G 14% /
tmpfs 487M 0 487M 0% /dev/shm

执行上面命令能查看我们的磁盘挂载情况,找到最大的那个就对了,比如我的磁盘就是”/dev/xvda2”,如果挂载了多个磁盘,都测试一遍就行。

二.测试磁盘I/O

hdparm功能非常强大,这里我们只用来测试磁盘读速度。我将用最简单的参数和命令。

1
2
3
4
5
$ sudo hdparm -Tt /dev/xvda2

/dev/xvda2:
Timing cached reads: 17454 MB in 2.00 seconds = 8734.39 MB/sec
Timing buffered disk reads: 182 MB in 3.02 seconds = 60.26 MB/sec

Timing cached reads 是缓存区的读取速度,Timing buffered disk reads是非缓存区的读取速度,我们测试的时候通常更关心非缓冲区的速度,60.26MB/sec在云主机中属于偏低了。阿里云通常是50MB,腾讯云通常是70MB。当然测试结果肯定有误差,但大体上能体现真实情况。我们一般会测试多次取平均数。

三.测试磁盘I/O工具介绍

为了方便大家测试自己的云主机磁盘I/O情况,我写了个一键执行工具,欢迎大家使用并提出意见;

1
$ sudo wget https://raw.githubusercontent.com/laynefyc/php_thread_demo/master/hdparm_avg.sh -O -|sudo sh

四.测试磁盘I/O总结

hdparm在某些主机上可能测试结果很惊人,比如低于10MB或者大于90M(非SSD高速硬盘),都属于不正常的数据。可以再通过其他测试工具试试。不过我在国内几家主流的云主机的测试结果都是相对准确的。