对象存储非常适合长期备份和归档,如何将高性能对象存储扩展到大规模、高容量的工作负载,人们对此需要进行了解。
对象存储最有趣的方面之一是其用途的多样性。尽管对象存储通常用作归档存储区、原有数据的目的地,以及文件服务器的替代品,但实际上有许多方法可以应用对象存储。随着供应商开始提供性能优化的对象存储,该技术已经为用于一组全新的工作负载准备就绪。
高性能对象存储不仅仅需要从基于硬盘的对象存储系统切换到全闪存对象存储。向全闪存介质的迁移无疑会有所帮助,但是对象存储系统(很大程度上要归功于其丰富的元数据)通常具有太多延迟,无法有效利用闪存性能。
创建高性能对象存储系统的另一个挑战是基础设施的横向扩展特性。为了满足容量需求,对象存储将大量节点添加到存储集群中。每个节点的容量都被吸收到集群中,从而创建一个存储池。在大型横向扩展集群中,具有数十个节点都是比较常见的。聚合和管理这些节点的等待时间可能很长。
人工智能和深度学习的对象存储挑战
非结构化的大型数据工作负载(例如人工智能和机器学习以及深度学习)是对象存储架构如何成为高性能工作负载的一个很好的例子。理论上,这些工作负载对于对象存储而言应该是理想的。它们拥有数百万甚至数十亿个文件,而存储所有这些数据需要大量的SSD硬盘或HDD硬盘,因此需要许多节点。这些过程也是受吞吐量驱动的。
所有这些因素的结合使人工智能和深度学习针对对象存储的高节点数存储集群量身定制。大多数与人工智能通信的框架(例如TensorFlow)用于驱动人工智能和机器学习工作负载,它们都使用Amazon S3协议。大多数对象存储系统也是基于S3存储桶,并且S3存储桶本身是高度并行的。从理论上讲,对象存储基础设施应该能够满足人工智能和机器或深度学习工作负载的需求。
但是,此方法不仅仅需要创建一个全闪存对象存储系统。该系统必须能够解决这样一个问题,即可能会有数十个(即使不是数百个)节点,而元数据以及集群管理也带来了挑战。
应对元数据挑战
元数据是关于数据的数据,它对高性能对象存储带来了挑战,其原因有两个:第一个挑战是,对象存储系统需要更多时间来管理其丰富的元数据。由于大多数对象存储供应商会在集群中指定一定数量的节点来管理和存储元数据,因此管理更加复杂。在人工智能和深度学习等工作负载中,专用的元数据控制器通常不堪重负,并成为系统瓶颈。因此,闪存驱动器甚至硬盘无法充分发挥其潜力。
第二个挑战是集群通信。大多数横向扩展NAS或块存储系统的节点数都比较少。在网络附属存储(NAS)和块用例中,拥有六个节点的存储集群被认为是大型的存储系统,但在许多对象存储部署中,六个节点只是一个入门级别。而节点间的通信成为一个大问题,尤其是在不涉及性能的归档的用例中。
要创建高性能的大规模对象存储解决方案,需要解决元数据性能和集群管理问题。下一代对象存储将元数据分布在集群中的每个节点上,而不仅仅是几个控制器。元数据的分布可确保每个节点都具有响应I/O请求所需的所有信息。
其他高性能对象存储问题
对象存储系统还必须解决节点间联网的问题。元数据的分布在这里有所帮助,因为它减少了东西流向的流量。供应商必须优化其节点间网络,因此它不会成为性能瓶颈。它们极有可能必须优化网络通信,以很大程度地减少传输频率。
需要优化的另一个领域是协议仿真。例如,大多数对象存储系统都支持网络文件系统(NFS)。网络文件系统(NFS)的支持至关重要,因为许多物联网设备不是内部部署S3存储桶,而是使用网络文件系统(NFS)。其挑战在于,许多对象存储系统都使用一个单独的组件在网络文件系统(NFS)和S3存储桶之间进行转换,而不是在其软件中内部部署运行网络文件系统(NFS)。其转移的开销很大,并且在高性能情况下会显示出来。
网络文件系统(NFS)在对象存储代码中的原生集成可实现更高的性能,并同时访问相同的数据。并发访问意味着物联网设备可以通过网络文件系统(NFS)将数据发送到对象存储卷,同时人工智能或深度学习框架可以通过S3存储桶对象对其进行处理,而无需对其进行复制或移动。
NAS适用的位置
网络附属存储(NAS)系统仍在数据中心中发挥作用。对象存储是长期归档和备份的理想选择,虽然大容量网络附属存储(NAS)仍可以在备份存储市场上竞争。对象存储还适合作为文件服务器的替代品,以替代性能不太重要的工作负载(例如用户主目录)。
高性能对象存储非常适合需要数十或数百个节点以及数十PB容量的大规模工作负载。这些工作负载还取决于吞吐量,并且在I/O访问中高度并行。在这两个极端之间是高性能、非结构化的数据工作负载,这些工作负载本质上是随机I/O,节点数量很少。在这些用例中,网络附属存储(NAS)可能仍然是一个更好的选择。