云服务器 ECS 的云盘既可以单独使用、又可以组合使用,以满足不同应用场景的需求。阅读本章后,您可以根据自己要求,选择使用合适的数据存储选项。

云盘为 ECS 实例提供数据块级别的云盘,采用三副本的分布式机制,为 ECS 实例提供 99.9999999% 的数据可靠性保证。根据性能的不同,云盘又可以分为普通云盘、高效云盘和 SSD 云盘等类型。

  • 普通云盘面向低 I/O 负载的应用场景,为 ECS 实例提供数百 IOPS 的 I/O 性能。

  • 高效云盘面向中度 I/O 负载的应用,为 ECS 实例提供最高 3000 随机 IOPS 的存储性能。

  • SSD 云盘面向 I/O 密集型应用,提供稳定的高随机 IOPS 性能。

关于如何挂载云盘的操作步骤,请参见 挂载数据盘

云盘参数对比

参数 SSD 云盘 高效云盘 普通云盘
最大容量 32768 GB 32768 GB 2000 GB
最大 IOPS 20000 * 3000 * 数百
最大吞吐量 256 MBps 80 MBps 30 MBps
性能计算公式 IOPS=min{30*容量,20000}
吞吐量=min{50+0.5*容量,256}MBps
IOPS=min{1000+6*容量,3000}
吞吐量=min{50+0.1*容量,80}MBps
不适用
访问时延 0.5 - 2 ms 1 - 3 ms 5 - 10 ms
数据可靠性 99.9999999% 99.9999999% 99.9999999%
API名称 cloud_ssd cloud_efficiency cloud
价格** 1.0 元/GB/月 0.35 元/GB/月 0.3 元/GB/月
典型应用场景
  • I/O 密集型应用

  • 中大型关系型数据库

  • NoSQL 数据库

  • 中小型数据库

  • 大型开发测试

  • Web 服务器日志

不被经常访问或者低 I/O 负载的应用场景

关于本地SSD盘的信息,请参考 上一代磁盘

下面是云盘重要参数的对比图。

云盘重要参数对比

磁盘性能测试方法

在进行下列测试前,请确保磁盘已经 4K 对齐。

  • 测试随机写IOPS:
    fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing

  • 测试随机读IOPS:
    fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing

  • 测试写吞吐量:
    fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing

  • 测试读吞吐量:
    fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing

上述测试时 fio 相关参数说明: 

参数 说明
-direct=1 测试时忽略 IO 缓存,数据直写。
-rw=randwrite 测试时的读写策略,可选值 randread (随机读)、 randwrite(随机写)、 read(顺序读)、 write(顺序写)、 randrw (混合随机读写)。
-ioengine=libaio 测试方式使用 libaio (Linux AIO,异步 IO)。 应用使用 IO 通常有二种方式:同步和异步。同步的 IO 一次只能发出一个 IO 请求,等待内核完成才返回。这样对于单个线程 iodepth 总是小于 1,但是可以透过多个线程并发执行来解决。通常会用 16-32 根线程同时工作把 iodepth 塞满。 异步则通常使用 libaio 这样的方式一次提交一批 IO 请求,然后等待一批的完成,减少交互的次数,会更有效率。
-bs=4k 单次 IO 的块文件大小为 4k。未指定该参数时的默认大小也是 4k。
-size=1G 测试文件大小为 1G。
-numjobs=1 测试线程数为 1。
-runtime=1000 测试时间为 1000 秒。如果未配置则持续将前述 -size 指定大小的文件,以每次 -bs 值为分块大小写完。
-group_reporting 测试结果显示模式,group_reporting 表示汇总每个进程的统计信息,而非以不同 job 汇总展示信息。
-filename=iotest 测试时的输出文件路径和名称。测试完成后请记得删除相应文件,以免占用磁盘空间。
-name=Rand_Write_Testing 测试任务名称。