HPC三种存储方案
我们常说工匠做合适的工作需要选择正确的工具。虽然这句话随处可见,但它却道出了设计和制造HPC系统的精髓。一直以来,HPC的计算部分都是用这种方法选择处理器和内存并设计互联结构、规定软件栈和工具。当然,这一切都和存储密不可分。
要实现性能、成本、可控性、可扩展性和数据完整性的良好平衡,根据不同情况有几种存储方案可供选择。例如有些数据连续几个月都没有被存取,那么是否所有数据都需要用快速存储?又或者是否有必要用一个容量大但性能低的存储方式保留数据而不是运行应用程序?不同的情况应该使用不同的存储方案解决。
这篇文章接下来的部分将描述三种HPC存储方案:(1)联机永久存储(有时被称为主存储),(2)高速高速暂存器,(3)分类存储。每一种解决方案都将对整个数据生命周期(从产生到最后归档,打个比方说就是从摇篮到坟墓)起作用。图1 阐述了这些存储工具如何适应IDC(International Data Corporation,国际数据公司)的HPC分类和吞吐量。
▲图 1. 存储工具如何符合一定的规模及吞吐量
这三种方案能够很灵活地解决HPC的存储问题,满足您的需求并提供给您一个高效存储方案。如果您需要一种以上的存储方式,您可以轻松地以高效、低成本的方式对它进行扩展。如果您的应用程序和用户不需要高速暂存器,那么您就可以不用付费购买并行 I/O 存储方案。
接下来,我们将要讨论第一种方案——联机永久存储,它专注于为小型系统提供合理的性能表现。另外,如果大型系统对用户主目录和应用程序目录的性能没有迫切的需求,那么联机存储也是一个不错的选择。
HPC联机永久存储: NFS是候选方案之一
HPC的计算节点都需要一个常见的文件系统。NFS为这个常见的文件系统提供了一个简单、稳固的解决方案。 基于NFS标准的存储方案被广泛用于Linux的HPC集群空间, 因为NFS简单易操作并且历经考验,故障模式为公众所知,而且在每一个Linux发行版中都是事实上的标准安装包,非常方便。这种特性让NFS成为了许多HPC装置的联机存储方案的一个较好的选择。根据2009IDC的调研,在110个HPC站点中,NFS是使用最为广泛的文件系统。91个最大的HPC系统中,56%都在使用NFS。同样的,近期展开的64个HPC系统中,其中64%使用的是NFS。这份调查说明在HPC部署中,NFS作为一个顶级文件系统的选择是很重要的。
无论以下哪种情况,NFS 都可以为HPC集群提供一个稳定的文件系统方案:(1) 集群应用程序的 I/O 要求可以通过单个或者多个集群服务器满足,(2)计算节点数量与连接后台存储的带宽相称,(3)存储容量能够满足集群需要,(4) 您需要一个可靠、容易理解并易操作的存储。
从理论上来说,如果应用程序的文件访问模式是N个用户访问N个文件,而且并行应用程序只有单个进程执行I/O,在这种情况下NFS作为主应用程序存储将运行得很好。许多使用NFS作为主存储的应用程序都能符合要求并运行得非常好。目前的最佳实践是无论HPC计算集群多大,统一使用10Gb以太网或者InfiniBand连接NFS 服务器。
然而,当系统开始庞大起来或者数据集增加,或者当许多计算客户同时存取一个单一文件(N对1 文档存取),NFS可能就不是最佳选择方案了。在这种情况下,应用程序可以运用专用的高性能存储器来执行应用。
总体来说,NFS不仅对小型乃至中型集群有效,在更大一些的应用环境里也同样有效。对于大一点的集群来说,NFS仍然在启用集群节点的主目录和的应用程序的共享方面发挥着重要作用。在这种情况下, NFS不是运行应用程序的最主要的存储,因此即使对大量的计算节点来说性能要求也不高。在计算节点上轻松挂载用户主目录和应用程序,也可以使用NFS实现。
3.2 HPC联机永久存储: 戴尔NFS 存储解决方案 (NSS)
戴尔NFS 存储解决方案(NSS)是一种完全基于NFS的文件存储,提供包括所有必须的硬件、软件、性能指南、支持和部署服务。戴尔NSS通过提供调整服务器、存储以及文件系统配置的详细指南,帮助用户部署NFS 服务器,以达到最佳性能及可靠性。
戴尔为您提供六种NSS推荐配置,和戴尔不断发展的配置和调整存储系统最佳实践一道为帮助用户实现最佳性能。您有两个连接选择:四倍速率 (QDR) 无限带宽或者10Gb以太网连接,三种规模选择:小型(20 TB 存储容量), 中型 (40 TB存储容量),大型 (80 TB存储容量)。另外为满足应用程序的性能需求,QDR 无限带宽方案提供了高达1.4 GBps的总吞吐量, 同时10Gb以太网方案可以提供高达1.1 GBps的总吞吐量。所有六种配置使用戴尔PowerEdge和PowerVault 产品以及XFS (Red HatScalable File System )提供模块化方法来构建存储方案,裸容量能够扩展到高达96 TB。
构成戴尔NSS的主模块为PowerEdge R710 网关服务器和 PowerVault MD1200 直连存储附件。如果您需要戴尔NSS的详细配置参数,欢迎访问戴尔NSS网站。
3.3 NSS性能
本章节将分别比较NSS小型、中性以及大型配置的大规模连续读写性能。以下讨论的性能数据均来自由32 台PowerEdge R410服务器作为计算节点和NFS 客户端的集群。基于10Gb以太网和InfiniBand,我们做了三组测试。
测试使用IOzone进行。IOzone是一个用于衡量大规模连续读写的工业标准。测试中为达到足够大的规模和连续强度,我们使用高达25GB的文件和1024KB的请求大小来保证NFS服务器和客户端缓存均保持饱和的工作状态。IOzone在集群模式下运行,并在每个计算节点上开启一个线程。
第一组测试是在IPoIB(IP over InfiniBand)上进行大型连续读写测试。
图2显示的是一系列节点也就是NFS 客户端的大规模连续写性能。对于大规模连续写,在使用NSS大型结构时达到了最高的性能。该大型结构的速度峰值大概在1.45GB/秒左右,测试中,大型结构存储表现优于NSS的小型和中型结构表现,原因在于大型结构存储拥有更多的硬盘和附加的磁盘陈列控制器,从而获得更高的处理能力和主轴来处理工作负荷。正如图2所示,当计算节点达到一定数量之后,存储性能有所下降,这是由于NFS并发写流量使磁盘成为性能瓶颈。
▲图2 NSS IPoIB大规模连续写性能
图3 显示了一系列节点在InfiniBand网络下大规模连续读取的性能。由图可见,相对于相应的写性能,NSS的大规模连续读取性能的下降要缓慢很多。这是因为NFS写操作具有很高的复杂性,相对于读取挑战性更多。测试结果同样表明在解决方案中使用更多的硬盘,就会有更高的读取峰值,并且会具有更多持续性的生产力。
▲图3 NSS IPoIB 大规模连续读性能
第二组测试是基于10Gb以太网进行的大规模连续读写。本测试使用以太网代替上组测试中使用的InfiniBand。
图4 显示了10Gb以太网中进行大规模连续写时NSS的性能情况。在本测试中大型结构的大规模连续存储峰值速度达到了将近1.2GB/秒,同时小型结构达到了550MB/秒。和上文InfiniBand环境下测试结果相同,三种NSS结构在计算节点达到一定数量之后,也都呈现性能降低的情况。然而,通过增加硬盘的数量和增加磁盘陈列控制器,存储峰值速度以及保持高速性能的能力都将持续提高。
▲图4 NSS在10Gb以太网下大规模连续写性能
图5显示了(NSS)基于10Gb以太网的规模连续读性能。在本测试中,NSS小型结构峰值的读取速度和NFS工作负荷的饱和点接近270MB/秒。中型结构(比小型结构增加了一组MD1200矩阵)的读取峰值和饱和点接近为500MB/秒。最后,IOzone并没有显示大型结构(比小型结构多了一个磁盘陈列控制器和两组MD1200矩阵)运行32节点的峰值速度或工作负荷饱和点,需要更多的NFS客户端才能得到测试结果。
▲图5 NSS在10Gb以太网下的大规模连续读性能
10Gb以太网下的NSS大规模写性能要优于相应的读性能,这是由于NSS方案中的缓存技术优化了进入硬盘的数据流,使集中写成为可能。对于连续读取而言,这个过程高度依赖于“读取优先”,而NFS服务却限制了用于满足“读取优先”的缓存容量,这样请求只能靠更频繁地读取硬盘来应对,导致了读取性能的降低。
HPC 快速暂存: 并行文件系统简介
近些年来,在HPC中从计算节点到后台存储都在广泛应用并行I/O,并行文件系统作为I/O性能扩展的解决方案在不断上升。并行I/O 由于它的并行特性,应用程序性能非常突出,它可以同时在容量和性能方面进行大量扩展。并行文件系统通过在多存储装置上分配(或分割)数据实现性能及扩展性。并行文件系统接近线性的性能扩展是NFS方案无法达到的。
尽管并行存储方案可以带来高性能以及容量的可扩展性,但是设计、调整、控制和维护并行文件系统很困难。并行文件系统通常包含几种存储服务器,既可以共享后台存储方案也可以拥有各自独立的存储。恰当地配置这种存储是很难的。HPC系统的设计和实施面临的较为典型的困难就是,多少条带宽度最合适,需要多少存储服务器,要求哪种元数据性能,如何按比例扩充存储方案的性能和容量,如何使用最少的人力成本管理和监控存储方案的有效性,等等。不难看出,设计一个良好的并行存储方案并不是一件容易的事。
在实现并行文件系统的众多方法中,有一种是在单一系统里交付高吞吐量,并行存取以及可扩展的容量。不过,事实证明这种方案在配置实施和维护的时候很复杂,成本也相当高。因此另一种方案,Lustre®并行文件系统开始流行起来,Lustre®并行文件系统使用完全可伸缩的多服务器、高度并行的方式部署。
Lustre并行文件系统
对于需要非常大的吞吐量、扩展性和容量的应用程序来说,Lustre是一种基于对象、开源高效的并行文件系统。虽然有些复杂,但Lustre功能非常丰富。
世界十大超级计算中心当中的七个以及超过50%的全球top50超级计算机都在使用Lustre,它可以扩展到25,000 名用户,32 PB (32,000 TB), 总的数据吞吐量高达130 GB/s。
Lustre是一种真正的并行文件系统,它可以允许一个集群中的多节点同时对同一个文件进行读写,这样就大大增加了支持并行I/O的应用程序的文件系统I/O性能。它通过在多个存储阵列上对数据进行条带化,整合所有存储服务器和存储阵列。这样,Lustre 就能用低成本的硬件来实现巨大的、可扩展的后台存储功能。
对于用户来说,Lustre文件系统提供了POSIX®-compliant UNIX®文件系统界面。客户端挂载Lustre文件系统一直可以看到一个单独的命名空间。在其他客户端读取文档的同时,不同的客户端可以同时对同一个文件的不同部分进行写操作。
Lustre客户端通常是典型的HPC集群计算节点,它们运行Lustre客户端软件并通过以太网或InfiniBand与Lustre 服务器进行通信。Lustre客户端软件由Lustre服务器和运行在计算节点上的应用程序之间的接口组成。
图示6 展现了Lustre并行文件系统的原理。
Lustre设计将文件系统操作分为两个独立的部分:文件系统元数据操作在元数据服务器(MDS)完成,文件数据操作在对象存储服务器(OSS)上完成。
▲图 6. Lustre并行文件系统原理示意图
OSS节点文件对象数据使用目标对象存储(OST)来储存(LUNs)。通常情况下,多个OSS在任何时候都处于active状态。由于每增加一个OSS,就能提供更多的网络,更大的吞吐量,更强的处理能力以及更多的容量,因此使用更多的OSS就可以实现更大的吞吐量。
一个Lustre装置由以下三个关键系统组成: 元数据子系统, 目标存储子系统和Lustre计算客户端。设计和配置这些组件并不是一件容易的事情。因为要考虑到方方面面来使其性能达到最佳,比如服务器配置、条带宽度、OST大小、RAID配置、网络以及对集群软件栈冗余与交互作用的需求。如果这其中一点或者更多的方面没有考虑适当,那么设计和配置出的性能可能达不到你的预期或要求。