正 文:
由于服务器需要高并发高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。
下面以50G的ssd云盘测试,每秒写速bw=23731KB/s,IOPS=1483。确实如介绍的那样每1GB空间30个IOPS,50G就是50x30=1500IOPS:
我们再对比下购买阿里云的普通云盘的性能 bw=16284KB/s, iops=1017 :
普通云盘的性能 和磁盘大小无关,一般固定在16MB/s吞吐量、1000IOPS随机读写上下。
我们再来对比下
腾讯云的普通云硬盘的性能,每秒写速bw=41341KB/s,IOPS=2583:
我只能呵呵了,腾讯云的普通云硬盘达到了2500随机读写IOPS、41MB/s吞吐量,是阿里云普通云盘的性能的2倍以上。
然后,我们来看一下腾讯云最新推出的高IO版本的服务器情况(测试默认系统8G ssd盘):
腾讯云的高IO版本硬盘达到了1.8万随机读写IOPS、300MB/s吞吐量!
再看腾讯云高IO版的500G硬盘(ssd盘):
达到了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.htmllinux 使用FIO测试磁盘iops :
http://blog.itpub.net/26855487/viewspace-754346/