在高性能计算中,提供可靠、高效和易于使用的存储和文件系统是一个主要问题,因为各种科学应用程序产生并分析大量数据。文件系统提供了与底层存储设备的接口,并将文件名等标识符链接到相应的存储硬件的物理地址。通过这种方式,可以实现对存储设备的更舒适和简化的使用。传统上,它们通过使用目录和文件来实现层次结构的概念。除了实际的文件内容之外,还管理元数据,比如文件大小和访问时间。多年来,已经提出和建立了几种文件系统,提供了各种功能。特别是在高性能计算系统中,部署了并行分布式文件系统,允许将数据分散在许多存储设备上,并结合特定功能以增加吞吐量和系统容量。然而,由于数据大小的快速增长,需要更复杂和专业的方法来处理庞大的信息量。与此同时,开发出了更强大的存储和网络技术,这对于利用相应的能力提出了挑战。除了旧的文件系统概念,其他方法也已经进入了高性能计算系统。
因此,高性能计算应用程序对高吞吐量并发读写能力的需求促使了并行和分布式文件系统的发展。在本节中,我们将讨论最受欢迎和广泛使用的系统及其特性。其中包括Lustre、Spectrum Scale、BeeGFS、OrangeFS、Ceph和GlusterF
1 Spectrum Scale
Spectrum Scale是IBM开发的可扩展高性能数据管理解决方案,专为需要处理和存储大量非结构化数据的企业而设计;它是基于之前的General Parallel File System (GPFS) 开发的。这个并行文件系统提供并发数据访问,能够在一个地方进行数据分析和归档。Spectrum Scale将SSD、HDD和磁带等不同存储层次以及分析功能统一到一个可扩展的解决方案中。这使得用户能够选择最适合其文件或对象数据的存储方式,并以最低的成本迅速移动数据。Spectrum Scale完全兼容POSIX,可以支持许多传统的高性能计算应用程序。
该文件系统通过配置专用服务器用于元数据更新,有助于避免元数据密集型应用程序的性能瓶颈。否则,数据和元数据会混在一起。Spectrum Scale还避免了单服务器性能方面的瓶颈,因为所有服务器和客户端都可以访问和共享数据而无需移动它。因此,甚至客户端也可以扮演服务器的角色。
尽管Spectrum Scale是一个非常强大的文件系统,并且通过IBM集成了各种有用的工具,但对于非盈利的研究目的的集群来说,仍然相当昂贵。
2 Lustre
Lustre是一种并行分布式文件系统,广泛应用于超级计算机。它在GNU通用公共许可证(GPLv2)下获得许可,可以进行扩展和改进。由于其高性能,Lustre被应用于全球100台最快超级计算机的一半以上。
该文件系统的架构区分为客户端和服务器。客户端使用RPC消息与执行实际I/O操作的服务器进行通信。尽管所有客户端都是相同的,但服务器可以扮演不同的角色:对象存储服务器(OSS)以对象形式管理文件系统的数据;客户端可以访问对象内的字节范围。元数据服务器(MDS)管理文件系统的元数据;在检索到元数据后,客户端可以独立地联系适当的OSS。每个服务器连接到可能有多个目标(OST/MDT),分别存储实际文件数据或元数据。
Lustre在内核空间运行,也就是说,大部分功能已经以内核模块的形式实现,这既有优点也有缺点。一方面,通过使用内核的虚拟文件系统(VFS),Lustre可以提供与现有应用程序兼容的POSIX兼容文件系统。另一方面,每个文件系统操作都需要一个系统调用,在处理高性能网络和存储设备时会有一些开销。
按照其对Lustre开发的开放态度,英特尔资助了五个英特尔并行计算中心,将新特性集成到Lustre中。其中,这些中心正在致力于为I/O性能提供质量服务、文件系统压缩,以及更好地整合TSM存储后端和大数据工作流程等方面的改进。不过后面Intel已经把Lustre卖了给DDN,且前Lustre团队投入了DAOS系统的研发。
3 BeeGFS
并行且与POSIX兼容的集群文件系统BeeGFS是为I/O密集型HPC应用程序而开发的[21]。它的架构采用客户端-服务器设计,由三个关键组件组成:客户端、元数据服务器和存储服务器。通过增加特定用户所需的服务器和磁盘数量,可以简单地实现BeeGFS的可扩展性和灵活性。所有数据透明地分布在多个服务器上,使用分层(根据给定大小的块)进行分块。除数据分布外,元数据也在目录级别上分布在多个元数据服务器上,每个服务器存储完整文件系统树的一部分。通过这种方式,提供了对数据的快速访问。BeeGFS还实现了对元数据的负载均衡。
BeeGFS系统的客户端内核模块是免费的,并且受GPL许可证保护,服务器受BeeGFS最终用户许可协议(EULA)保护。因此,商业支持是可选的。未来,BeeGFS的开发者打算改进监控和诊断工具,并扩展POSIX接口支持。
4 User-Level文件系统
与Lustre等内核空间文件系统不同,用户态文件系统不需要任何内核模块来运行。这通常使得在超级计算机环境中使用此类文件系统更加容易,因为用户通常没有root权限。
OrangeFS是一个完全在用户空间运行的并行分布式文件系统。它是开源的,并在GNU Lesser General Public License (LGPL)下许可。它通过原生的ADIO后端提供出色的MPI-IO支持,并提供多种用户界面,包括几个直接接口库、一个FUSE文件系统和一个可选的内核模块[96]。与其他文件系统类似,OrangeFS有专用的数据和元数据存储服务器。OrangeFS使用任意本地POSIX文件系统进行数据存储,并可以使用Berkeley DB (BDB)或Lightning Memory-Mapped Database (LMDB)进行元数据存储。
IBIO是一个基于InfiniBand的用户级文件系统,旨在作为计算节点和并行文件系统之间的中间层[80]。它旨在提高检查点/重启用例的性能。它讨论了增加可靠性的冗余方案。使用SSD和FDR Infiniband,它在一个服务器上实现了每秒2GB的写入吞吐量和每秒3GB的读取吞吐量。
GlusterFS是另一个POSIX兼容的自由开源分布式文件系统[14]。与其他传统存储解决方案一样,它具有客户端-服务器模型,但不需要专用的元数据服务器。所有数据和元数据存储在多个设备上(称为卷),这些设备专门为不同的服务器提供服务。GlusterFS使用弹性哈希算法来算法性地定位文件。这种无元数据服务器架构确保了更好的性能、线性可扩展性和可靠性。同时,GlusterFS是一个提供基于文件的存储的网络文件系统;块和对象接口必须在其之上构建。
5 文件系统比较
在IO-500中,列出了不同文件系统的数据和元数据基准测试的性能行为。类似于计算架构的TOP500列表,IO-500旨在跟踪多年来的性能增长并分析存储领域的变化。IO-500不仅提供了预期性能的关键指标,还作为社区中培育和共享最佳实践的知识库。基准测试方法利用了MDTest和IOR基准测试。一系列具有预配置参数的严格测试被设计为显示未经优化应用的最坏情况。对于IOR,这意味着随机I/O的47,000个chunks,而对于MDTest,使用了具有3,901字节文件的单个共享目录。用户可以根据需要配置和优化一组简单测试,以展示所测试的存储系统的潜力。对于IOR,简单测试通常是大块的顺序I/O,而对于MDTest,则使用空文件。
图3显示了2017年11月份列表中的节选。它显示IME在IOR hard(随机)性能方面表现出色,但元数据性能比Lustre差。Shaheen上的Data Warp提高了顺序I/O的吞吐量,但随机I/O并没有太多受益。对于BeeGFS和Spectrum Scale的小型配置不足以得出有关吞吐量的结论。然而,对于元数据,与Lustre和IME相比,BeeGFS和最新版本的Spectrum Scale表现出色。(数据比较老了~)
6 HPSS
在1990年代初,能源部的国家实验室和IBM意识到管理数据的呈指数增长所面临的巨大挑战[98]。他们开发了高性能存储系统(HPSS),以提供可扩展的分层存储系统,满足处理未来硬件发展的要求。该架构的主要关注点是分层存储管理(HSM)和数据归档。它是当今存储系统中广泛使用的解决方案,主要用于磁带存档的管理。仅科学数据的总管理数据量就达到2.2 EB [34]。(可见国外的技术研发早了20多年)
7 ECFS和MARS
由欧洲中期天气预报中心(ECMWF)开发的其他专注于数据归档的存储系统是ECMWF的文件存储系统(ECFS)和气象存档和检索系统(MARS)[25]。一个HPSS管理这两个系统的磁带存档,以及ECFS的磁盘缓存,文件可以使用唯一路径访问。MARS是一个提供类似数据库接口的对象存储。通过使用自定义语言中的查询,可以设置一系列相关字段,然后将其组合成一个包并存储在系统中。字段数据库(FDB)缓存经常访问的字段。ECFS只包含相对较少的并发使用的文件,主要进行写操作。然而,MARS中的文件同样重要,主要进行读操作[87]。因此,这两个系统为对天气建模感兴趣的研究人员提供了强大的存储管理。MARS允许高性能计算(HPC)用户访问过去30年来只存储在GRIB和BUFR格式中的大量气象数据。更多关于ECFS的描述可以参考前面的文章分析。
8 Ceph
Ceph是一个免费且开放源代码的平台,提供在单个分布式集群上进行文件、块和对象数据存储的功能[100]。该系统在可靠自主分布式对象存储(RADOS)系统的基础上实现了分布式对象存储[101]。它负责将数据迁移、复制、故障检测和故障恢复到集群中。Ceph还集成了符合近POSIX规范的CephFS文件系统,使许多应用程序能够利用可扩展环境的优势和功能。Ceph利用智能对象存储设备(OSD)。这些单元为与它们进行交互的所有客户端提供文件I/O(读取和写入)功能。数据和元数据是分离的,因为所有元数据修改操作都由元数据服务器(MDS)执行。Ceph动态地在数十个甚至数百个MDS之间分配元数据管理和文件系统目录层次结构的责任。
然而,Ceph仍然存在一些缺点。其中之一是在一个集群中只能部署一个CephFS的限制(比较老的结论了),以及可靠性在实际应用场景中的当前测试阶段。某些功能和实用工具仍处于实验阶段。例如,使用快照可能会导致客户端节点或MDS意外终止。此外,Ceph设计的基础是HDD,需要在将磁盘替换为SSD并且数据访问模式是随机时进行性能改进。