Fotolia
探索预置IOPS存储的挑战和好处
如果IT管理员想要独立于容量灵活地提供IOPS,可以转向某些软件定义的存储和云服务产品。
存储系统设计总是需要在三个参数之间进行权衡:容量、吞吐量和IOPS。不幸的是,对于系统工程师来说,存储组件的物理限制不允许独立设置它们——至少在硬件中不允许。
参数依赖性迫使设计师在容量和性能之间进行选择。需要更多的流量吗?扔更多的纺锤或者固态硬盘控制器在问题和生活与未使用的能力。
对微小数据集要求高I/O吞吐量的工作负载突出了iops与容量的分配问题。例如,a在Azure Feedback门户上发表评论说明了无法独立于Azure托管磁盘的容量提供性能的问题。
软件定义存储(SDS)可以通过在两者之间放置逻辑抽象层来解耦这些参数存储资源及组件.此外,一个集中的软件控制平面使云存储服务能够通过在存储节点和驱动器之间分散逻辑块卷和文件共享来粒度划分容量。
即使是超大规模的分布式存储系统,也可以进行独立的优化,如下所述,只有少数服务允许这种折衷,这可能是由于提供它们的高成本和稀疏的需求。
问题的起源和早期解决方案
IOPS和容量之间的联系源于旋转磁碟和硬盘磁头的机械限制,只有四种方法可以增加IOPS:
- 更快的旋转速度
- 人口密度较高的磁性媒体
- 多读写头
- 更大的内存缓存
尽管ssd消除了吞吐量和I/O方面的机械限制,但它们还有其他限制,包括:
这些设置了SSD吞吐量和IOPS的上限,特别是对于随机写操作,其延迟可能是顺序写入.
提供高iops工作负载的传统方法是在RAID中根据需要将存储卷分散到多个设备上,并添加更大的RAM缓存作为I/O缓冲区。第一种策略导致闲置产能,而第二种策略增加了巨大的成本。
独立使用SDS、云服务发放IOPS
也许第一个将存储容量与吞吐量分离开来的产品来自SolidFire公司收购NetApp在2015年。SolidFire开创了服务质量(QoS)特性,强制吞吐量和IOPS的最小、最大和突发级别。如在描述架构的早期论文, SolidFire为系统中的每个卷独立分配性能和容量。该公司提供的内部细节很少,但在其扩展系统中,每个1U节点都是分布式控制器的一部分,通过专用的高速后端网络连接。该软件可以根据需要在多个节点上透明地划分容量,以满足QoS保证。
尽管云提供商对支撑其服务的物理硬件、供应和管理软件的保密是出了名的,但他们采用了SolidFire的方法,即通过分布式控制器向外扩展阵列,实现机架和豆荚规模。提供者通常部署数百个相同的存储服务器,这些服务器被聚合到资源池中,用于不同类别的存储服务(如块、文件和对象)和性能级别。例如,出现了Amazon Elastic Block Store (EBS)多个品种,包括通用SSD,称为gp2和gp3,以及提供IOPS的SSD,称为io1和io2。
通常,云存储产品提供的IOPS层具有不同的容量限制,包括最小和最大。相反,gp3实例在再保险:发明2020的不同寻常之处在于,它们允许用户独立地增加吞吐量和IOPS,而无需提供更多的块存储容量。
gp2和gp3实例提供了IOPS性能的软上限,根据亚马逊的数据,在给定的一年里,99%的时间里,IOPS性能都在规定的10%以内。此外,小于1,000 GB的gp2卷在至少30分钟内具有高达3,000 IOPS的突发性能,而gp3卷在没有突发能力的情况下提供了至少3,000 IOPS。相比之下,根据Amazon的数据,io1和io2容量的预置IOPS在99.9%的时间内实现10%的预置IOPS性能,延迟小于10毫秒。当与基于amd的r5弹性计算云实例配对时,io2卷可以为小到4gb的卷提供高达260,000 IOPS。
一些AWS竞争对手提供了类似的灵活性,提供独立于容量的IOPS。这些包括:
- Azure超磁盘,它们有几个固定的大小,从4个gibibytes (GiB)到64个tebibytes。每个GiB最大支持300iops,每个磁盘最大支持160,000 IOPS。因此,一个32gib的卷可以配置为100到9600 IOPS。
- IBM Cloud可调IOPS,支持在两个服务层的限制内,动态、无中断地调整IOPS容量。耐力卷支持大于0.25 IOPS / GB的IOPS设置性能——或已分配IOPS——卷支持100到48,000 IOPS之间的任何值。
相比之下,大多数云服务的IOPS性能随卷大小线性扩展。例如,谷歌GCP SSD持久盘,每盘读写IOPS为30g最大读IOPS为60000,具体取决于附加的vcpu个数、块大小等参数。同样的,甲骨文云基础设施(OCI)块更高性能卷提供每gb(4000块)75 IOPS,每卷最高35,000 IOPS。因此,如果一个应用只需要128gb的卷,GCP ssd可以提供3840 IOPS, OCI Higher Performance可以提供9600 IOPS, Amazon EBS io2可以配置高达64000 IOPS。
选择一个服务
由于驱动器和控制器技术的技术限制,大多数云存储服务和阵列供应商需要向外扩展设备以提供更多的吞吐量和IOPS容量,因此大多数云存储服务和阵列供应商都可以通过容量来扩展IOPS。然而,对于某些应用程序,工作集和I/O吞吐量需求并不是线性扩展的。
例如,AWS指出的那样在其关于EBS gp3卷的博客中,一些应用,如MySQL和Hadoop,需要高性能,但不需要高存储容量.类似地,基于微服务的应用程序可以通过减少存储延迟和增加IOPS来加快速度,这些应用程序可能具有包含多个到共享存储池的事务的小工作集。在这些情况下,像EBS io2或gp3这样的云服务或像NetApp SolidFire这样的存储产品,它们不会将更快的IOPS与更大的容量相结合,但会提供更好的性能。