> CentOS > CentOS入门 >

CentOS下阿里云SSD云盘性能测试

由于服务器需要高并发高IO,所以入手了阿里云的SSD云盘+IO优化的ECS实例。

 

   阿里云SSD云盘:单盘最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能。采用分布式三副本机制,提供99.9999999%的数据可靠性。

 

    SSD云盘基于全SSD存储介质、利用阿里云飞天分布式存储技术,提供数据可靠性99.9999999%的高性能存储;该产品具备以下特点: 

 

高性能:单个SSD云盘最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能
高可靠性:SSD云盘采用分布式三副本机制,提供99.9999999%的数据可靠性;
每GB提供30 IOPS:SSD云盘采用每GB空间30个IOPS的策略,30GB的SSD云盘拥有900 IOPS的性能、100GB的SSD云盘拥有3000 IOPS的性能、667GB的SSD云盘拥有最高20000 IOPS的性能
单块SSD云盘容量:单块SSD云盘最大提供1024GB存储空间;

 

    【SSD云盘和本地SSD盘 、普通云盘有啥区别? 】
如您对IO性能要求高、同时对数据可靠性要求也高,建议您选择SSD云盘,详细对比如下: 

 

    【为什么我购买的SSD云盘性能效果不明显?】 
    SSD云盘采用每GB空间30个IOPS的策略,30GB的SSD云盘拥有900 IOPS的性能、100GB的SSD云盘拥有3000 IOPS的性能、667GB的SSD云盘拥有最高20000 IOPS的性能
    如果SSD云盘在用户原有的ECS实例上使用,性能最多能发挥出1000 IOPS的能力;如果想要1000以上的IOPS性能,SSD云盘必须与I/O优化的实例配合使用;

 

    购买后,我该如何测试磁盘性能? 
linux环境使用FIO做性能测试,测试命令:
fio -direct=1  -iodepth=64  -rw=randwrite  -ioengine=libaio  -bs=16k  -size=10G  -numjobs=1  -runtime=1000  -group_reporting  -name=/storage/iotest

这段测试的含义是测试随机写,每次写入大小16K,文件大小为10G,ioengine=libaio,运行1000秒(runtime),跳过buffer,其中 -name 指向到你想测试的磁盘上的文件。
上面这点代码比较耗时,我们可以缩减测试文件的大小和运行时间,改为:
fio -direct=1  -iodepth=64  -rw=randwrite  -ioengine=libaio  -bs=16k  -size=256M  -numjobs=1  -runtime=100  -group_reporting  -name=/storage/iotest

 

    下面以20G的ssd云盘(系统默认盘)测试,每秒写速bw=9456KB/s,IOPS=591。
阿里云SSD云盘性能测试:每GB空间30个IOPS

    下面以50G的ssd云盘测试,每秒写速bw=23731KB/s,IOPS=1483。确实如介绍的那样每1GB空间30个IOPS,50G就是50x30=1500IOPS:
阿里云SSD云盘性能测试:每GB空间30个IOPS

 

    我们再对比下购买阿里云的普通云盘的性能  bw=16284KB/s, iops=1017 :
阿里云SSD云盘性能测试:每GB空间30个IOPS

    普通云盘的性能 和磁盘大小无关,一般固定在16MB/s吞吐量、1000IOPS随机读写上下。

 

    我们再来对比下腾讯云的普通云硬盘的性能,每秒写速bw=41341KB/s,IOPS=2583:
阿里云SSD云盘性能测试:每GB空间30个IOPS

    我只能呵呵了,腾讯云的普通云硬盘达到了2500随机读写IOPS、41MB/s吞吐量,是阿里云普通云盘的性能的2倍以上。

 

    然后,我们来看一下腾讯云最新推出的高IO版本的服务器情况(测试默认系统8G ssd盘):
阿里云SSD云盘性能测试:每GB空间30个IOPS

    腾讯云的高IO版本硬盘达到了1.8万随机读写IOPS、300MB/s吞吐量!

 

    再看腾讯云高IO版的500G硬盘(ssd盘):
阿里云SSD云盘性能测试:每GB空间30个IOPS

    达到了6.3万随机读写IOPS、998MB/s吞吐量!

 

    注意,新的磁盘需要先挂载:Linux VPS如何挂载硬盘

 


windows环境下使用AnvilPro工具做性能测试; 

 

也许有人说最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能 也不咋样啊?

 

飘易就举例说明下:我们家用机械盘在小I/O情况下,读写时随机IOPS也就是80~100左右、吞吐量10MB/s左右;如果是拷贝大的压缩包时,由于有OS的pagecache,吞吐量能达到100MB/s以上,但这只能是拷贝大应用时,对于企业级应用根本达不到这样。

 

    为什么我用FIO测试性能时,会导致实例宕机?     
     FIO这个测试工具支持裸盘分区、文件系统两种方式测试I/O性能;如果是直接测试裸盘分区,可能导致裸盘分区中的文件系统元数据被破坏掉,访问该裸盘分区中的文件时会失败,导致实例宕机;使用FIO的文件系统方式测试性能时,不存在上述问题,因此我们推荐使用FIO文件系统的方式测试I/O性能; 

 


    【补充:】
dd命令测试硬盘的读写速度
写速度:
time dd if=/dev/zero of=/var/test bs=8k count=1000000

读速度:
time dd if=/var/test of=/dev/null bs=8k count=1000000

 
    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。 
    一,FIO安装 
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz 
yum install libaio-devel 
tar -zxvf fio-2.0.7.tar.gz 
cd fio-2.0.7 
make 
make install
 

 

    二,随机读测试: 
随机读: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=10 -runtime=1000 -group_reporting -name=mytest 

说明: 
filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。 
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。 
rw=randwrite 测试随机写的I/O 
rw=randrw 测试随机写和读的I/O 
bs=16k 单次io的块文件大小为16k 
bsrange=512-2048 同上,提定数据块的大小范围 
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。 
numjobs=30 本次的测试线程为30. 
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。 
ioengine=psync io引擎使用pync方式 
rwmixwrite=30 在混合读写的模式下,写占30% 
group_reporting 关于显示结果的,汇总每个进程的信息。 
此外 
lockmem=1g 只使用1g内存进行测试。 
zero_buffers 用0初始化系统buffer。 
nrfiles=8 每个进程生成文件的数量。 

 

顺序读: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 

随机写: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 

顺序写: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 

混合随机读写: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop
 

 

【参考】
SSD云盘+ECS(IO优化): http://bbs.aliyun.com/read/241167.html
linux 使用FIO测试磁盘iops :http://blog.itpub.net/26855487/viewspace-754346/


(责任编辑:IT)