NVMe通过改进物理接口、增加命令数量和队列深度,使存储基础设施能够充分利用闪存的优势。但是NVMe也带来了一个挑战:NVMe的延迟非常低,它暴露了存储基础架构中其他组件的弱点。基础架构中的任何薄弱环节都会增加延迟并降低NVMe的价值。
文件系统是存储基础架构中的一个问题较大的部分。现在是供应商重新考虑文件系统架构的时候了,特别是,他们必须修改文件系统与NVMe存储的交互方式,以避免成为瓶颈。
Photo by panumas nikhomkhai from Pexels
为什么是文件系统?
服务于AI和高速工作负载的文件系统通常是可横向扩展的。一个横向扩展文件系统由多个存储服务器或节点组成,文件系统聚合这些节点中的内部存储,将其表示为用户和应用程序可以访问的单个存储池。传统的文件系统也可以横向扩展,但它们是串行的,这意味着所有I/O都要经过一个主节点,而AI和高速工作负载很容易将其压倒,从而造成瓶颈。这些工作负载依赖于一个并行文件系统结构,该结构允许集群中的任何节点向用户或应用程序提供I/O服务,这使得网络效率更加重要。
大多数NVMe存储系统都是为块存储而设计的。因此,它们避免了文件系统架构的性能开销。然而,在大多数情况下,文件系统会被添加到块存储系统中,以便这些AI和高速工作负载可以使用它。大多数现代应用程序——尤其是AI、机器学习和大数据分析处理程序——都依赖于文件系统。
添加了文件系统的设计良好、基于块的NVMe存储系统仍然可能比基于块的SAS存储系统快,但是RAW块存储和文件系统控制的存储之间的性能下降是显著的。所以,组织需要针对NVMe进行过优化的文件系统。
对于基准测试,应关注什么
供应商常常会使用几个文件系统基准测试来演示其功能。这些测试中的大多数使用带有并行文件系统的NVMe块存储,供应商可以轻松地使用各种配置来使某个参数达到图表的顶部,然这可能具有一定的误导性。
例如,在当前的标准性能评估公司SFS 2014基准测试中,优秀供应商在测试环境中的驱动器数量、驱动器类型和存储节点数量上存在显著差异。在大多数情况下,硬件供应商试图通过使用超出需求的硬件来减少文件系统架构开销,并将价格推高到超出对于大多数组织来说较为合理的水平。
真正重要的是硬件和文件系统对组织的工作负载类型和预算的实施情况,大多数公司没有庞大的资金来创建圆满的NVMe-文件系统组合。IT人员应该寻找能够达到需求的最简单的配置。
对于文件系统,应关注什么
文件系统性能主要有三个限制因素:
- 文件系统与存储节点的通信效率;
- 文件系统如何高效地管理连接各个存储节点的网络,以及如何高效地与客户端通信;
- 文件系统如何有效地管理元数据访问。
在大多数现代应用程序环境中,元数据占所有I/O的80%以上。
文件系统通常通过操作系统I/O栈与存储媒介通信。大多数高级文件系统都基于Linux,并通过该堆栈进行通信,但是Linux堆栈增加了开销。另一种方法是文件系统创建自己的I/O通道,以连接到基于NVMe的文件系统。从文件系统开发过程来看,与驱动器的直接通信更加困难,但是它为文件系统用户提供了获得更大性能的机会,而不必使用昂贵的硬件进行过度补偿。
文件系统通常通过使用标准NFS协议与客户端通信,但是NVMe有一个网络变体(NVMe- oF),现代文件系统应该提供软件支持并行,以及本地NVMe-oF访问,以便在客户端上运行。NVMe-oF还可以用于互连各种存储节点,这样会使文件系统更易于访问,以直连存储的延迟。
在全NVMe文件系统架构中,元数据访问本质上是快速的,但是元数据的布局方式必须是高效的,以便从NVMe的低延迟中获益。优化元数据性能,需要将其跨越文件系统集群中的所有节点,这样就不会出现单个节点的性能瓶颈。
如何充分利用NVMe
与其他类型的工作负载相比,AI和高速负载可以更充分地利用NVMe。这些工作负载的挑战通常是应用程序通过文件系统访问存储,传统的文件系统没有为基于NVMe的驱动器优化它们的I/O。更快的节点硬件和NVMe驱动器提供了更好的性能,但是传统文件系统的架构无法使硬件充分发挥其潜力。
为了避免这个问题,需要寻找直接写入NVMe驱动器而不是通过操作系统I/O堆栈的文件系统。还要寻找能够让客户端跨NVMe-oF进行通信的文件系统,并以不影响性能的方式管理元数据。
原文作者:George Crump 来源:TechTarget