资讯详情

存储调研:Lustre并行文件系统体系结构

Lustre架构是一种集群存储系统结构,其核心部件是Lustre文件系统。该文件系统可在Linux在操作系统上运行并提供一致性POSIX标准的UNIX文件系统接口。

Lustre架构用于许多不同种类的集群。众所周知,它服务于许多全球最大的高性能计算(HPC)提供数万个客户端的集群,PB每秒数百和每秒数百GB吞吐量HPC站点使用Lustre作为全站范围内的全局文件系统,文件系统为数十个群提供服务。

Lustre文件系统具有按需扩展容量和性能的能力,降低了部署多个独立文件系统(如每个计算组部署一个文件系统)的必要性,避免了复制计算组之间的数据,简化了存储管理。Lustre文件系统不仅可以聚合许多服务器的存储容量,还可以聚合它I / O吞吐量聚合,通过添置服务器扩展。通过动态添加服务器,可以轻松提高整个集群的吞吐量和容量。

虽然Lustre文件系统可以在许多工作环境中运行,但并非所有应用程序的最佳选择。当单个服务器无法提供所需容量时,使用Lustre文件系统集群无疑是最合适的。在某些情况下,即使在单个服务器环境下,由于其强大的定性和数据一致性Lustre文件系统也比其他文件系统更好。

目前,Lustre文件系统不特别适用于端对端用户模式。在这种模式下,客户端和服务器在同一节点运行,每个节点共享少量存储。由于Lustre缺乏软件级数据副本。如果客户端或服务器出现故障,节点上存储的数据将在节点重启前无法访问。

Lustre文件系统可以在各种制造商的核心上运行。Lustre文件系统扩大或缩小客户端节点数量、磁盘存储容量和带宽。可扩展性和性能取决于系统中可用磁盘、网络带宽和服务器的处理能力。

Lustre文件系统可以部署多种配置,其可扩展性远远超过生产系统的规模和性能。下表列出了一些Lustre可扩展性和性能:

:Lustre文件系统使用改进版本ext存储数据和元数据的4日志文件系统。这个版本被命名为ldiskfs,不仅提高了性能,还提供了性能Lustre文件系统所需的附加功能。

Lustre 2.4或更高的版本可以使用ZFS作为Lustre的MDT,OST和MGS存储后备文件系统。Lustre能够利用ZFS实现单个存储目标的可扩展性和数据完整性特性。

:通过完整的POSIX测试集就像测试本地文件系统Ext4一样,测试Lustre文件系统客户端只有少数例外。在集群中,大多数操作都是原子操作,因此客户端永远不会看到损坏的数据或元数据。 Lustre软件支持mmap()文件I / O操作。

:Lustre该软件支持各种高性能、低延迟的网络,可以使用远程直接内存访问(RDMA)实现方式InfiniBand、Intel OmniPath高级网络上的快速高效网络传输。Lustre多个路由桥接RDMA获得最佳性能的网络。Lustre该软件还集成了网络诊断。

:Lustre通过文件系统OSTs(OSS targets)的共享存储分区实现主动/主动故障切换。 Lustre 2.使用33或更早的版本MDT(MDS target)共享存储分区实现主动/被动故障切换。 Lustre可用性高(HA)管理器共同工作,实现自动故障切换,消除单点故障(NSPF)。这使得应用程序的透明恢复成为可能。多重吊载保护(MMP)在高可用性系统中提供错误的综合保护,避免文件系统损坏。

Lustre 2.4或更高的版本可以配置多个版本MDT主动/主动故障切换。这允许添加MDT存储设备和MDS节点来扩展Lustre元数据性能的文件系统。

:默认情况下,TCP只允许授权端口通过连接。 UNIX成员身份在MDS验证。

:Lustre遵循安全模型UNIX使用文件系统原则POSIX ACL增强。还有一些额外的功能,比如root squash。

:Lustre文件系统可以在各种文件系统中运行CPU架构和大小端混合的群集上,连续发布的Lustre保持主软件版本之间的互操作性。

:客户端与磁盘文件结构隔离,存储系统结构可以升级而不影响客户端。

:许多客户可以同时阅读和修改相同的文件或目录。 Lustre分布式锁管理器(LDLM)确保文件系统中所有客户端和服务器之间的文件一致。MDT锁管理器负责管理inode权限和路径名OST它们都有自己的锁管理器来锁定存储在其上的文件条带,其性能可以随着文件系统的大小而扩展。

:用户、组和项目配额(User、Group、Project Quota)可用于Lustre文件系统。

:通过向集群添加新的OST和MDT,不中断服务可以增加Lustre集群总带宽是文件系统的大小。

:跨跨文件、目录或文件系统可以在每个文件、目录或文件系统的基础上配置OST文件布局。这允许在单个文件系统中调整文件I/O适应特定的应用程序要求。 Lustre使用文件系统RAID-0进行条带化并可在OST调整空间之间的大小。

:从客户端发送到OSS在传输过程中,验证所有数据,防止数据损坏。

:Lustre有专门的架构MPI ADIO层,并行优化I/O匹配基本文件系统架构。

:可以使用NFS(通过Linux knfsd)或CIFS(通过Samba)将Lustre重新导出文件,使其与非Linux客户端(如Microsoft Windows和Apple Mac OS X)共享。

:Lustre文件系统提供在线分布式文件系统检查(LFSCK),存储组件之间的一致性误时,恢复存储组件之间的一致性。 Lustre当文件系统不一致时,文件系统也可以运行,LFSCK当文件系统正在使用时,它可以运行LFSCK文件系统恢复生产前无需完成。

:Lustre文件系统为检查性能和调整提供了多种机制。

:为在Linux操作系统运行,Lustre软件使用GPL 2.0许可证。

一个Lustre安装实例包括管理服务器(MGS)和一个或多个和Lustre网络(LNet)互连的Lustre文件系统。Lustre如下图所示:

MGS所有存储集群Lustre文件系统配置信息,并向其他人提供信息Lustre组件。每个Lustre目标(target)通过联系MGS和Lustre联系客户MGS获取信息。MGS为了独立管理,最好有自己的存储空间。但同时,MGS可以与MDS放在一起,共享存储空间,如上图所示。

: MDS存储在一个或多个MDT可供中元数据Lustre使用客户端MDS管理Lustre文件系统中的名称和目录是一个或多个地方MDT提供网络请求处理。

: 在Lustre 2.在3或更早的版本中,每个文件系统只有一个MDT。 MDT在MDS存储元数据(如文件名、目录、权限和文件布局)。虽然共享存储目标上的MDT可用于多个MDS,但一次只能有一个MDS可以访问。如果当前MDS发生故障,备用MDS可以为MDT并向客户端提供服务。这被称为MDS故障切换。

在Lustre 2.4.空间环境的分布式命名(DNE)多个可以支持MDT。除保存文件系统根目录的主要目录外MDT此外,还可以添加其他内容MDS节点,每个MDS节点都有自己的MDT,子目录树用于保存文件系统。

在Lustre 2.8中,DNE文件系统还允许将单个目录的文件分配到多个目录MDT多个节点MDT上述目录称为条带化目录。

:OSS一个或多个地方OST提供文件I / O处理服务和网络请求。OSS服务两到八个OST,每个最多16TB;配置专用节点MDT;在每个OSS两个或两个以上的节点OST;在大量计算节点上配置客户端。

:存储在一个或多个对象中的用户文件数据Lustre单独的文件系统OST中。每个文件的对象数由用户配置,并可根据工作负载情况调试到最优性能。

:Lustre客户端在运行Lustre客户端软的计算、可视化或桌面节点,可挂载Lustre文件系统。

      Lustre客户端软件为Linux虚拟文件系统和Lustre服务器之间提供了接口。客户端软件包括一个管理客户端(MGC),一个元数据客户端(MDC)和多个对象存储客户端(OSC)。每个OSC对应于文件系统中的一个OST。

       逻辑对象卷(LOV)通过聚合OSC以提供对所有OST的透明访问。因此,挂载了Lustre文件系统的客户端会看到一个连贯的同步名字空间。多个客户端可以同时写入同一文件的不同部分,而其他客户端可以同时读取文件。

      与LOV文件访问方式类似,逻辑元数据卷(LMV)通过聚合MDC提供一种对所有MDT透明的访问。这使得了客户端可将多个MDT上的目录树视为一个单一的连贯名字空间,并将条带化目录合并到客户端形成一个单一目录以便用户和应用程序查看。

Lustre Networking(LNet)是一种定制网络API,提供处理Lustre文件系统服务器和客户端的元数据和文件I/O数据的通信基础设施。

在规模上,一个Lustre文件系统集群可以包含数百个OSS和数千个客户端(如下图所示)。 Lustre集群中可以使用多种类型的网络,OSS之间的共享存储启用故障切换功能。

在 Lustre 2.0 中引入了Lustre文件标识符(FID)来替换用于识别文件或对象的UNIX inode编号。 FID是一个128位的标识符,其中,64位用于存储唯一的序列号,32位用于存储对象标识符(OID),另外32位用于存储版本号。序列号在文件系统(OST和MDT)中的所有Lustre目标中都是唯一的。这一改变使未来支持多种 MDT 和ZFS(均在Lustre 2.4中引入)成为了可能。

同时,在此版本中也引入了一个名为FID-in-dirent(也称为Dirdata)的ldiskfs功能,FID作为文件名称的一部分存储在父目录中。该功能通过减少磁盘I/O显著提高了ls命令执行的性能。 FID-in-dirent是在创建文件时生成的。

在 Lustre 2.4 中,LFSCK文件系统一致性检查工具提供了对现有文件启用FID-in-dirent的功能。具体如下:

  • 为1.8版本文件系统上现有文件生成IGIF模式的FID。

  • 验证每个文件的FID-in-dirent,如其无效或丢失,则重新生成FID-in-dirent。

  • 验证每个linkEA条目,如其无效或丢失,则重新生成。 linkEA由文件名和父类FID组成,它作为扩展属性存储在文件本身中。因此,linkEA可以用来重建文件的完整路径名。

       有关文件数据在OST上的位置信息将作为扩展属性布局EA,存储在由FID标识的MDT对象中(具体如下图所示)。若该文件是普通文件(即不是目录或符号链接),则MDT对象1对N地指向包含文件数据的OST对象。若该MDT文件指向一个对象,则所有文件数据都存储在该对象中。若该MDT文件指向多个对象,则使用RAID 0将文件数据划分为多个对象,将每个对象存储在不同的OST上。

当客户端读写文件时,首先从文件的MDT对象中获取布局EA,然后使用这个信息在文件上执行I / O,直接与存储对象的OSS节点进行交互。具体过程如下图所示。

Lustre文件系统的可用带宽如下:

网络带宽等于OSS到目标的总带宽。

磁盘带宽等于存储目标(OST)的磁盘带宽总和,受网络带宽限制。

总带宽等于磁盘带宽和网络带宽的最小值。

可用的文件系统空间等于所有OST的可用空间总和。

Lustre文件系统高性能的主要原因之一是能够以轮询方式跨多个OST将数据条带化。用户可根据需要为每个文件配置条带数量,条带大小和OST。当单个文件的总带宽超过单个OST的带宽时,可以使用条带化来提高性能。同时,当单个OST没有足够的可用空间来容纳整个文件时,条带化也能发挥它的作用。

如图下图所示,条带化允许将文件中的数据段或“块”存储在不同的OST中。在Lustre文件系统中,通过RAID 0模式将数据在一定数量的对象上进行条带化。一个文件中处理的对象数称为stripe_count。每个对象包含文件中的一个数据块,当写入特定对象的数据块超过stripe_size时,文件中的下一个数据块将存储在下一个对象上。stripe_count和stripe_size的默认值由为文件系统设置的,其中,stripe_count为1,stripe_size为1MB。用户可以在每个目录或每个文件上更改这些值。

下图中,文件C的stripe_size大于文件A的stripe_size,表明更多的数据被允许存储在文件C的单个条带中。文件A的stripe_count为3,则数据在三个对象上条带化。文件B和文件C的stripe_count是1。OST上没有为未写入的数据预留空间。

最大文件大小不受单个目标大小的限制。在Lustre文件系统中,文件可以跨越多个对象(最多2000个)进行分割,每个对象可使用多达16 TB的ldiskfs,多达256PB的ZFS。也就是说,ldiskfs的最大文件大小为31.25 PB,ZFS的最大文件大小为8EB。Lustre文件系统上的文件大小受且仅受OST上可用空间的限制,Lustre最大可支持2 ^ 63字节(8EB)的文件。

注意: Lustre 2.2之前,单个文件的最大条带数为160个OST。尽管一个

标签: mgs203磁性接近传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台