ThinkParQ成立于2013年底,由BeeGFS背后的一些关键人物组成,为BeeGFS客户提供专业的支持,服务和咨询。BeeGFS原名为FhGFS,是由Fraunhofer Institute为工业数学计算而设计开发,由于在欧洲和美国的中小型HPC系统性能表现良好,在2014年改名注册为BeeGFS并受到科研和商业的广泛应用。
BeeGFS既是一个网络文件系统也是一个并行文件系统。客户端通过网络与存储服务器进行通信(具有TCP/IP或任何具有RDMA功能的互连,如InfiniBand,RoCE或Omni-Path,支持native verbs 接口)。通过BeeGFS添加更多的服务器,其容量和性能被聚合在单个命名空间中。
BeeGFS是遵循GPL的“免费开源”产品,文件系统没有许可证费用。无论谁想要自己使用,都可以从www.beegfs.com下载并安装使用。由ThinkParQ提供专业支持,系统集成商可以为客户构建使用BeeGFS的解决方案。
BeeGFS操作系统兼容性
BeeGFS具备良好的兼容性,支持包括x86,x86_64,ARM和OpenPower等硬件平台和RHEL、Scientific Linux、CentOS、SuSE Linux Enterprise Server、SuSE Linux Enterprise Desktop、OpenSuSE、Debian和Ubuntu在内的Linux操作系统版本。
BeeGFS系统架构
BeeGFS实现了ObjectData和MetaData的分离。ObjectData是用户希望存储的数据,而MetaData是包括访问权限、文件大小和位置的“关于数据的数据”,MetaData中最重要的是如何从多个文件服务器中找到具体对应的文件,这样才能使客户端获取特定文件或目录的MetaData后,可以直接与ObjectData服务器对话以检索信息。
BeeGFS可以面向需要大型或快速存储的每个人服务,如传统领域是高性能、高吞吐量计算和大型研究数据。Object Storage Servers和MetaData Servers的数量可以弹性伸缩。因此,可以通过扩展到适当数量的服务器来满足不同性能要求。
BeeGFS是一个基于Linux的文件系统,BeeGFS所有的部分(如客户端,服务器)都在Linux操作系统下运行,到目前为止还不支持其他平台。搭建一套BeeGFS至少需要管理服务器(MS)、对象存储服务器(OSS)、元数据服务器(MDS)和文件系统Client四个主要组件和有两个守护进程。
- Helper-daemon守护进程,文件系统客户端需要一个“helper-daemon”才能在客户端上运行。
- Admon守护进程在存储集群中运行,并让系统管理员更好地了解发生了什么,但它不是必需的组件,BeeGFS在没有它的情况下也是完全可运行操作的。
在设计上,BeeGFS旨在与符合POSIX标准的本地文件系统(例如ext4,xfs或zfs)一起用于数据存储。 这样系统管理员可以选择他们喜欢和熟练的本地文件系统,减少其他系统或工具的学习成本。
Management Server(MS)
系统中必须要有一个MS, BeeGFS安装的所有配置文件必须指向同一个MS。MS维护所有文件系统组件的列表,包括Client,MetaData Servers,MetaData Targets,Storage Servers和Storage Targets。此外,MS具有正常、低和关键三个标签选项来标记Storage Targets和MetaData Targets。当创建新文件时,这些标签会影响目标选择的方式,标签是根据目标可用空间分配的。运行在MetaData Server上目标选择器将优选标记为正常的目标。
MetaData Server(MDS)
MDS包含系统中Meta Data的信息。MetaData服务器无限制可扩展。每个MDS都有一个MetaData Target(MDT,存储MDS的Meta Data)。MDT上文件系统的推荐选择是ext4,因为它对小文件和小文件操作提供很好性能。MDT通常由SSD组成并推荐采用RAID1或RAID10进行RAID保护,选择RAID5/6对元数据随机小IO访问模式将导致MetaData性能严重下降。
BeeGFS全局文件系统中的每个目录都附加到处理其内容的一个MDS。如果目录A的MetaData由MDS#1处理,则位于A中的文件的MetaData存储在存储#1上。由于将目录分配给MDS是随机BeeGFS可以有效利用大量的MDS。只要目录数量明显大于MDS的数量,则每个MDS上的分配的目录数量和大致相等。
有一个例外,根级别目录始终在MDS#1上,这样就定义了一个入口点。顶级目录具有指向MDS的链接,其中包含有关子目录的信息。有了这个信息,客户端可以走路径目录树,找到负责特定目录的MDS。与机械驱磁盘相比,SSD可以降低时延并提供大量的随机IOPS,强烈推荐把SSD使用在MetaDataTarget上。
对于不同应用场景来说,线程的数量的选择有没有完美的建议,一方面,如果线程太多将浪费系统内存和CPU资源,并且可能会因为许多任务切换而对性能产生负面影响。 另一方面,线程太少限制了系统的性能。
ObjectStorage Server(OSS)
OSS是存储文件内容的主要服务。每个OSS可能具有一个或多个Object Storage Targets(OST),OST可以是本地文件系统(如xfs,ext4或zfs)或LUN。典型的OST推荐6到12个硬盘并采用RAID6级别,因此具有36个驱动器的OSS可能会组成3个OST,每个OST都是带有12个磁盘。
OSS是用户空间启动的完全多线程的守护进程。它将适用于任何符合POSIX标准的本地文件系统,底层文件系统可能根据工作负载或个人喜好和经验来挑选。OSS线程数量取决于OSS服务的OST的性能和数量。与MDS不同,OST上的IO通常是大的顺序IO。
BeeGFS的主要功能之一就是条带,在BeeGFS文件系统中,每个目录都有两个非常重要的属性,定义了这些目录中的文件的处理方式。
- numtargets定义文件创建的目标数量。如果选择4,则每个文件将获得4个OST,分配给该文件的数据存储在这些OST中。
- chunksize指定在客户端移动到下一个目标之前,在该分配的目标OST上存储多少数据。
文件条带的目标是提高单个文件的性能以及容量,假设OST容量大小为30 TB,提供500MB/s性能,那么4个OST目标之间的文件大小可以增长到120TB,并以2 GB/s进行访问。
文件系统客户端(Client)
BeeGFS客户端是在Linux中运行的一个内核模块,必须编译以匹配使用的内核。客户端是GPL提供的开源产品。BeeGFS客户端服务提供了一个正常的挂载点,使您的应用程序可以直接访问BeeGFS存储系统,客户端包含两个守护进程服务。
- beegfs-helperd守护程序为beegfs-client提供了一些辅助功能(DNS和写日志文件功能等),它是由同一主机上运行的beegfs-client访问,不需要任何其他配置。
- beegfs-client加载客户端内核模块,如果需要,它将重新编译内核模块。重新编译使用自动构建过程完成,该过程在内核版本更改时启动。
为了展示BeeGFS存储集群中通常存在哪些服务,前面分析都是基于所有服务都在不同的主机上运行 。
一般在小型应用场景,BeeGFS的相关服务(Client和Server组件)的任意组合(如上图)也可以在同一台机器上一起运行。当BeeGFS完全使用没有独立的专用存储服务器时,我们称之为“融合设备”。
BeeGFS安装和设置
有两种方式可以安装BeeGFS,一种是基于GUI(使用图形化Java界面),另一种是手动(使用shell命令)。
图形化安装是基于图形化Java界面连接到BeeGFS Admon(Administration and Monitoring)服务实现。一般来说,无经验的用户建议基于GUI的安装,但对老司机来说,手动安装是最佳选择,因为GUI不能提供手动安装的完全灵活性。
BeeGFS调优和配置
BeeGFS的调优包含了存储服务器格式化调优、元数据服务器调优、客户端调优、条带化、网络(Infiniband和以太网)调优和高速缓存调优,具体请参考BeeGFS配置指导,这里不再赘述。
beegfs-ctl工具从默认位置读取BeeGFS的配置文件(beegfs-client.conf),虽然该工具也可以在没有客户端配置文件的情况下使用,但在相应机器上存在这样的基本客户端配置时,通常更方便。
BeeOND Burst Buffer
BeeOND(BeeGFS On Demand)用来创建一个或多个BeeGFS实例来满足云环境中临时工作文件系统需求。另外,BeeOND在计算节点内部聚本地SSD或硬盘的性能和容量提供了额外的性能和Burst Buffer能力。
如今,大多数HPC集群系统使用专用全局并行文件系统提供高吞吐量,但是计算节点通常配备(或可以轻松配备)本地硬盘或固态硬盘,BeeOND就是很好利用特定计算任务的计算节点磁盘资源来提供更高的系统性能。
Beeond可以独立于全局共享并行文件系统,这就意味着无论并行文件系统是BeeGFS还是其他技术都可以使用Beeond。Beeond使用时需要创建一个新的单独文件系统挂载点。任何如cp或rync标准工具都可将数据写入和迁出BeeOND,但Beeond软件包本身包含一个并行copy工具,用于在BeeOND实例和另一个文件系统之间传输数据。
由于BeeOND启动非常简单,所以可以轻松将BeeOND与Torque或Slurm工作负载管理器集成,可以通过一个命令启动和停止新的BeeGFS实例,所以当计算作业启动时,您可以轻松地添加脚本命令,以便在作业完成时停止。另外,在计算节点使用BeeOND带来了以下几方面的优势:
- BeeOND很容易消除全局并行文件系统的IO重载和令人难以接受的浪涌性IO。无论如何,在作业运行时创建的临时数据不必一定需要移动到全局持久并行文件系统中。即使在作业结束后,应该持久化保存的数据也可以更好地先存储到Beeond实例中,然后以大块的顺序IO复制到全局持久并行文件系统中,获得最大的带宽。
- 在BeeOND上运行的应用程序不会干扰全局持久并行文件系统中的其他用户,反过来,也可以在不受其他用户影响的情况下获得BeeOND提供的性能。
- 采用运行在SSD之上的BeeOND可以极大地加速高性能计算任务,结合多个计算节点的SSD不仅可以轻松实现高带宽,还可以提供高IOPS性能,以便处理大文件小IO型的IOPS业务。
- BeeOND Burst Buffer软件直接部署在计算节点服务器上,不会增加任何硬件成本。
BeeOND在BeeGFS中呈现为一个标准的软件包,可以通过使用发行版的包管理器进行安装。BeeOND也是依赖BeeGFS服务器和客户端组件,这种依赖体现在相应的包依赖关系,并将自动安装。BeeOND基于计算节点在软件层面实现了Burst Buffer功能,可以广泛兼容不同并行文件系统。
简单总结: BeeGFS的轻量级架构设计和对现在高性能计算中对Burst Buffer技术需求的精确把握,加上对开源趋势和势态的开怀拥抱将力助BeeGFS在商业上获得成功。此外,BeeGFS也具备丰富的企业级软件特性(后续分享)和强大的生态伙伴,这种种迹象表明,BeeGFS无疑将会是下一个高性能计算领域的Lustre。