前言
作为 IaaS 最重要的核心组件之一,阿里云 ESSD 为云服务器 ECS 提供低时延、持久性和高可靠的块存储服务,成为云厂商全闪块存储的业界标杆。随着越来越多的企业上云和核心应用上云,以及容器和 Serverless 架构的蓬勃发展,对块存储 IO 性能的弹性能力提出了新的挑战和需求。阿里云存储团队在这种背景下推出了 ESSD Auto PL 新的云盘规格,把性能与容量解耦,提供 IO 性能按需供给两大关键特性。本文结合块存储典型业务场景,介绍 Auto PL 新产品特性、揭秘背后的技术原理。
云存储的IO弹性需求和业务痛点
随着云原生技术的发展,越来越多的企业基于云计算的虚拟化、弹性扩展及蓬勃发展的云原生技术的分布式框架,容器技术、编排系统、持续交付及快速迭代,构建起大规模、弹性扩展强、丰富的云上分布式业务场景;新的计算形态逐步往短周期、轻量化等方向发展,对块存储 IO 性能弹性提出了更多需求(性能通常用 IOPS :Input/Output Operations per Second 和吞吐 BPS :Bytes per Second 来描述),以下是比较常见的业务痛点:
- VM/容器批量启动:计算实例启动时,系统盘短时间内消耗大量 IOPS 和吞吐 BPS
- 业务高峰:客户业务面临不可预期的突发场景,需要云盘以及 VM 具备短时的突发性能需求的弹性扩展能力
- 周期性任务处理:OLAP/批处理在可预见的时间内周期性的提交海量任务,需要云盘具备突发的弹性扩展能力
传统的块存储产品采用性能/容量耦合的产品设计,用户通过购买云盘容量获取相应的 IOPS/BPS 性能上限,通过云盘扩容同时获得磁盘容量和 IO 性能。ESSD 支持 PL0/1/2/3 多种性能的档位(PL:performance level),不同 PL 等级有不同 IO 性能上限,客户可通过云盘变配功能提升 PL 等级,从而得到更高的 IOPS/BPS 性能上限。云原生业务充分利用云的弹性能力,业务需求上量有个较长的时间周期,通常会预留部分存储性能余量。此外,相当部分云上业务流量存在明显的波峰波谷行为,大部分时间处于业务低负载期,且业务高峰期和峰值难以准确预估。典型的 IO 流量突发型业务可能在一定时间内出现一个或多个突发 IO 流量,突发时间短、突发性能峰值高,常见于互联网秒杀等突发业务场景,对性能规划提出了新的挑战:如果性能配置预留过高,会造成日常资源的大量闲置浪费;而如果性能预留不足,业务突发洪峰会造成业务受损。总而言之,通过云盘扩容/变配进行较为精准的性能规划变得非常困难。
ESSD Auto PL
针对以上业务痛点,阿里云推出了 ESSD Auto PL 产品规格,支持性能按需配置和按需突发两个模式,支持 1000 IOPS/GB 的超高单位容量性能上限。性能按需配置主要面向可预期的周期性 IO 流量场景,用户在新建 ESSD Auto PL 时除了选择存储容量,还可单独配置额外的 IO 性能上限,实现了 IO 性能与容量解耦。针对可预期的 IO 洪峰,用户可根据业务需求灵活调整 IO 性能,提供可预期的应对能力。
对于难以预期的突发业务洪峰,Auto PL 支持性能按需突发模式,提供最大单盘 100W IOPS,4GB/s 的极限 IO 性能,云盘根据实际性能需求自动调整,无需进行 IO 性能预测和规划,充分利用了 ESSD 分布式存储的弹性能力,彻底解决了突发流量下的性能规划问题。该功能采用后付费模式,用户只需按实际发生超出预先配置性能的读写次数付费, 保障业务稳定运行的同时,最大化节省用户的资源配置开销。以某大型互联网电商某突发流量场景为例,该业务原来使用 ESSD PL1,性能上限为 50000 IOPS,350MB/s,在业务突发流量场景,有 2.3% 的云盘打满 PL1 性能上限影响业务,且业务峰值时间较短,流量峰值无法准确预估。传统的需要采用 ESSD PL2 来满足业务突发流量,采用 ESSD Auto PL 并开启按需突发模式,业务存储 TCO 下降 49%。
Auto PL 仍然兼容了 ESSD PL1 的基准性能,标准的 Auto PL 云盘性能表现与 ESSD PL1 完全一致,实现存量客户 & 业务场景无缝切换。另外 ESSD Auto PL 在业界首次同时支持性能按需配置和性能按需突发两种功能,并且可叠加使用,用户可根据实际 IO 流量模型灵活配置。
Auto PL技术解析
作为第一个支持性能容量解耦同时支持性能按负载弹性伸缩的云盘, ESSD Auto PL 需要解决很多技术上的挑战:比如如何快速感知业务的负载变化,如何动态按需申请释放资源支持性能伸缩,如何快速平衡负载调度等等。经过反复打磨,ESSD Auto PL 云盘设计了细粒度的云盘切分机制,能够让它均衡使用整个后端存储集群的资源并快速动态调整;通过集群容量/性能水位实时监测和调度、多级 QoS 隔离等保障 IO 性能突发引入的流量冲击和多租户 IO 干扰等问题。
云盘细粒度切分
ESSD Auto PL 支持最大 1000 IOPS/GB,远超 Nand SSD 单位容量的 IOPS 性能。每一块 ESSD 云盘的 LBA 地址空间会被划分为多个条带组,条带组的 IO 被分布式算法打散,分别被不同的存储节点处理,以充分利用 RDMA 网络和高性能存储能力。ESSD Auto PL 设计了细粒度的地址空间管理机制,让小容量云盘也可以充分打散到多个存储节点,实现更大范围的 IO 调度能力,同时大范围的 IO 调度能力也可以降低存储集群单机热点和部分 IO 长尾延迟。
多租户隔离和IO优先级管理
EBS 作为典型的多租户服务,突发高吞吐/高 IOPS 流量潜在会影响低负载租户的 IO 延迟,100W IOPS IO Burst 极致性能对隔离能力提出了更高的要求。ESSD 支持实例和云盘两层 QoS,实例 QoS 提供多虚拟机之间的 IO 隔离能力,上限与用户购买实例的 vCPU 核数强相关,部分小规格实例支持存储 credit burst 能力,可累积闲时 IO quota 提供最大 30 分钟的性能突发能力;云盘 QoS 提供实例内各云盘的性能上限,与云盘规格相关。从 VM 发出的 IO 从链路上依次通过云盘、实例两级 QoS,并进行 Burst IO 流量打标,确保在流量拥塞场景下全链路能准确识别 Burst 流量,保证非 Burst 流量得到优先处理。针对 Burst IO 流量引起的系统局部热点和 IO 阻塞,实现了IO 流量 10 毫秒级别的业务负载感知和预测,再秒级别完成动态队列调度和并发度调整,结合硬件卸载的队列动态分发机制、避免在多租户场景下因为弹性提升带来多租户间的性能干扰。
多集群性能水位负载均衡
极致的 IO 性能弹性对性能 SLA 引入了新的挑战,特别是 IO 突发性能极限 100W IOPS 引入了更大的流量拥塞风险,为此 ESSD 设计了新的多集群性能水位负载均衡机制。新的智能均衡调度机制由集群/存储节点/IO 线程多级调度组成,根据云盘性能配置,实时监控组件 IO 负载,实现集群内秒级 IO 负载均衡、分钟级别集群间流量调度,当集群/存储节点间流量出现显著性能水位差异时,实时触发云盘热迁移,解决用户大批量云盘负载同时升高的性能争抢问题。
总结
ESSD AutoPL 作为未来 ESSD 的主售产品,覆盖面积为当前所有弹性计算面对的行业和客户。AutoPL 具备的灵活性和弹性能力降低了 IT 规模规划难度和因规划不当带来的风险,将会受运维人员或IT资源采购人员青睐。无论是阿里云新增客户,还是存量客户,ESSD AutoPL 都可以作为 ESSD PL1 的替代产品进行购买。AutoPL 为客户的业务突发增长提供了既经济实惠、又简单便利的使用体验,期待大家广泛使用 AutoPL 产品,并且给我们提宝贵的反馈,帮助我们做得更好。我们将继续通过技术创新来提高 ESSD 的性能和服务质量保障能力,提高用户使用体验,为客户提供永不停机的计算服务。
原创作品:阿里云存储 郗鉴