了解预配置IOPS存储的挑战与好处
存储系统设计始终需要在三个参数间进行权衡:容量、吞吐量和IOPS。不幸的是,对于系统工程师而言,存储组件的物理限制不允许独立设置这三个参数-至少不能在硬件中设置。
这种参数关联性迫使设计人员在容量和性能之间进行选择。你需要更多的吞吐量?你可以部署更多的主轴或SSD控制器,但这会导致未使用的容量。
如果工作负载需要为微小数据集提供高I / O吞吐量,则会突显预配置IOPS与容量的难题。作为示例,在Azure反馈门户上的评论说明无法独立于Azure托管磁盘的容量来提供性能。
软件定义存储(SDS)可以解耦这些参数,通过在存储资源和组件之间放置逻辑抽象层。此外,集中式软件控制平面使云存储服务能够细粒度地提高容量,通过在存储节点和驱动器之间分布逻辑块卷和文件共享。
即使超大规模分布式存储系统都可以进行独立优化,如下所述,但由于提供它们的成本高昂且需求稀少,因此只有少数服务可以支持这种选项。
问题的根源和早期解决方案
IOPS与容量之间的关联源于旋转磁盘和硬盘磁头的机械限制,我们只有四种方法可增加IOPS:
- 更快的转速
- 更高密度磁性介质
- 更多读写头
- 更大RAM缓存
尽管SSD消除对吞吐量和I / O的机械限制,但它们还有其他限制,包括:
- 存储单元读取和写入操作的速度
- NAND闪存种大型内存块,这会导致写放大和访问延迟
- 驱动控制器的吞吐量受嵌入式微控制器单元和内存缓冲区、NAND I / O和SATA接口速度的限制
这些对SSD吞吐量和IOPS设置上限,尤其是对于随机写入而言,其延迟可能是顺序写入的10倍。
写入高IOPS工作负载的传统方法是在RAID所需的多个设备之间分配存储卷,并添加更大的RAM缓存作为I / O缓冲区。第一种做法导致未使用的容量,而第二种做法则增加成本。
使用SDS、云服务独立配置IOPS
第一个使存储容量与吞吐量分离的产品应该是来自SoliFire的产品,该公司于2015年被NetApp收购。SolidFire率先推出服务质量(QoS)功能,该功能对吞吐量和IOPS执行最低、最高和突发级别。正如早期描述该架构的文章所述,SolidFire为系统中的每个卷独立分配性能和容量。该公司没有提供内部细节,但是在其横向扩展系统中,每个1U节点都是分布式控制器的一部分,控制器通过专用高速后端网络连接。该软件可以根据需要透明地提高跨多个节点的容量,以满足QoS保证。
虽然云提供商一直对其服务的物理硬件以及配置和管理软件方面保密,但我们知道他们在利用SolidFire的横向扩展阵列方法,将分布式控制器扩展到机架和Pod规模。提供商通常会部署数百个相同的存储服务器,这些服务器被聚合到资源池中,以提供不同类别(例如块、文件和对象)和性能级别的存储服务。例如,Amazon Elastic Block Store(EBS)有多种版本,包括通用SSD(称为gp2和gp3)和预配置IOPS SSD(称为io1和io2)。
通常,云存储产品为IOPS层提供不同的容量限制(最小和最大)。然而,在2020年re:Invent 2020大会上发布的gp3实例却与众不同,它们使用户能够独立增加吞吐量和IOPS,而不必提供更多的块存储容量。
gp2和gp3实例为IOPS性能提供软上限,据Amazon称,在给定年份中,99%的时间提供IOPS性能的10%以内。此外,低于1,000 GB的gp2卷至少在30分钟内具有高达3,000 IOPS的突发性能,而gp3卷提供至少3,000 IOPS,无突发性能功能。相比之下,Amazon表示,预配置的IOPS io1和io2卷,在一年中的99.9%的时间内提供不到10%的预配置IOPS性能,且延迟不到10毫秒。当与基于AMD的r5 Elastic Compute Cloud实例结合时,io2卷可以为小至4 GB的卷提供高达260,000 IOPS。
AWS竞争对手提供类似的灵活性来独立于容量来配置IOPS。这些包括:
- Azure Ultra磁盘,具有几种固定大小,从4吉字节(GiB)到64 TB。用户可以为每个GiB设置最高300 IOPS的限制,每个磁盘最多160,000 IOPS。因此,可以为32 GiB卷配置100到9,600 IOPS。
- IBM Cloud可调节IOPS,它支持在两个服务层级范围内无中断动态地调整IOPS容量。 Endurance卷支持的IOPS设置大于每GB 0.25 IOPS,而Performance(或者说分配的IOPS)卷则支持100到48,000 IOPS之间的任何值。
相比之下,大多数云服务通过卷尺寸线性扩展IOPS性能。
etsme是采用云计算原生技术打造的个人私有云/小型私有云产品,即刻入手etsme,探索更多贴心功能,掌控自己的数字世界。