Lustre文件系统介绍

news2024/11/27 9:40:50

一、什么是Lustre文件系统

Lustre架构是用于集群的存储架构。Lustre架构的核心组件是Lustre文件系统,它在Linux操作系统上得到支持,并提供了一个符合POSIX *标准的UNIX文件系统接口。

Lustre存储架构用于许多不同类型的集群。它以支持世界上许多最大的拥有数万个客户端系统、pb (PiB)存储和每秒数百GB (GB/sec)的I/O吞吐量的高性能计算(HPC)集群而闻名,许多HPC站点使用Lustre文件系统作为站点范围的全局文件系统,为几十个集群提供服务。

Lustre文件系统能够根据任何需要扩展容量和性能,从而减少了部署许多独立文件系统的需要,例如为每个计算集群部署一个文件系统。通过避免在计算集群之间复制数据,简化了存储管理。除了聚合许多服务器的存储容量外,I/O吞吐量还可以通过额外的服务器进行聚合和扩展。此外,通过动态添加服务器,可以很容易地增加吞吐量和/或容量。

虽然Lustre文件系统可以在许多工作环境中运行,但它不一定是所有应用程序的最佳选择。它最适合于超过单个服务器所能提供的容量的使用,尽管在某些用例中,Lustre文件系统在单个服务器上比其他文件系统执行得更好,因为它具有强锁和数据一致性。

一个Lustre文件系统目前不是特别适合于“点对点”的使用模型,其中客户端和服务器运行在同一个节点上,每个共享少量的存储,因为Lustre软件级别缺乏数据复制。在这种情况下,如果一个客户机/服务器出现故障,那么存储在该节点上的数据将无法访问,直到该节点重新启动。

Lustre特征

Lustre安装可以根据客户端节点、磁盘存储和带宽的数量进行扩展或缩小。可伸缩性和性能取决于可用磁盘和网络带宽以及系统中服务器的处理能力。Lustre文件系统可以部署在各种各样的配置中,这些配置的规模和性能远远超过了迄今为止在生产系统中观察到的。下表显示了Lustre文件系统的一些可伸缩性和性能特征。

特征当前实用范围已知的产品使用情况
客户端可伸缩性100-10000050000+客户端,多在10000 - 20000范围内
客户端性能单客户端:
I/O 90%的网络带宽
聚合:
50 TB/sec I/O,50M IOPS
单客户端:
15 GB/sec I/O (HDR IB), 50000 IOPS
聚合:
10 TB/sec I/O,10M IOPS
OSS可伸缩性单个OSS:
每个OSS1-32个ost
单个OST:
500M个对象,每个OST1024TiB
OSS数量:
1000 OSSs,4000 OSTs
单个OSS:
每个OSS4个ost
单个OST:
1024TiB OSTs
OSS数量:
450个OSSs,900个750TiB HDD OSTs + 450个25TiB NVMe OSTs
1024个OSSs和1024个72TiBOSTs
OSS性能单个OSS:
15 GB/sec,1.5M IOPS
聚合:
50 TB/sec,50M IOPS
单个OSS:
10 GB/sec,1.5M IOPS
聚合:
20 TB/sec,20M IOPS
MDS可伸缩性单个MDS:
每个MDS1-4个MDTs
单个MDT:
40亿个文件,每个MDT16TiB(ldiskfs)
640亿个文件,每个MDT64TiB(ZFS)
MDS数量:
256个MDSs,最多256个MDTs
单个MDS:
40亿个文件
MDS数量:
生产中有40个MDS和40个4TiBMDT
正在测试256个MDS和256个64GiBMDT
MDS性能1M/s的创建操作
2M/s的统计操作
100k/s的创建操作
200k/s的元数据统计操作
文件系统可伸缩性单个文件:
32PiB最大文件大小(ldiskfs)
263字节(ZFS)
聚合:
512PiB空间,一万亿个文件
单个文件:
multi-TiB最大文件大小
聚合:
700PiB空间,250亿个文件

其他Lustre软件特征有:
性能增强的ext4文件系统: Lustre文件系统使用ext4日志文件系统的改进版本来存储数据和元数据。这个名为ldiskfs的版本已经得到了增强,以提高性能并提供Lustre文件系统所需的其他功能。对于MDT、OST和MGS存储,也可以使用ZFS作为Lustre的后备文件系统。这允许Lustre为各个存储目标利用ZFS的可伸缩性和数据完整性特性。

POSIX标准遵从性: 完整的POSIX测试套件以相同的方式传递给本地ext4文件系统,只有在Lustre客户端上有有限的例外。在集群中,大多数操作都是原子的,因此客户端永远不会看到过时的数据或元数据。Lustre软件支持mmap()文件I/O。

高性能异构网络: Lustre软件支持各种高性能,低延迟网络,并允许远程直接内存访问(RDMA) InfiniBand (利用openfabric企业分发(OFED),英特尔OmniPath®,和其他先进的网络,快速和高效的网络传输。多个RDMA网络可以使用Lustre路由桥接,以获得最大的性能。Lustre软件还包括集成的网络诊断。

高可用性: Lustre文件系统支持使用共享存储分区为OSS目标(OSTs)和MDS目标(mdt)进行主/主故障转移。Lustre文件系统可以与各种高可用性(HA)管理器一起工作,以允许自动故障转移,并且没有单点故障(NSPF)。这允许应用程序透明恢复。多重挂载保护(MMP)为高可用性系统中的错误提供了集成的保护,这些错误可能会导致文件系统损坏。

安全: 默认情况下,TCP连接只允许来自特权端口。在MDS上验证UNIX组成员。

访问控制列表(ACL),扩展属性: Lustre安全模型遵循UNIX文件系统,增强了POSIX ACL。值得注意的附加功能包括root squast。

互操作性: Lustre文件系统运行在各种CPU架构和混合端集群上,并且在连续的Lustre主要软件版本之间是可互操作的。

基于对象的架构: 客户端与磁盘上的文件结构隔离,可以在不影响客户端的情况下升级存储架构。

字节粒度文件和细粒度元数据锁定: 许多客户端可以同时读取和修改相同的文件或目录。Lustre分布式锁管理器(LDLM)确保文件系统中所有客户端和服务器之间的文件是一致的。MDT LDLM管理inode权限和路径名上的锁。每个OST对于存储在其上的文件条带上的锁都有自己的LDLM,它会随着文件系统的增长而扩展锁性能。

配额: Lustre文件系统可使用用户和组配额。

容量增长: Lustre文件系统的大小和聚合集群带宽可以通过向集群添加新的ost和mdt来增加,而不会中断。

受控的文件布局: 跨OSTs的文件布局可以在每个文件、每个目录或每个文件系统的基础上配置。这允许根据单个文件系统中的特定应用程序需求对文件I/O进行调优。Lustre文件系统使用RAID-0分条并在ost之间平衡空间使用。

网络数据完整性保护: 客户端发送给OSS的所有数据的校验和可以防止数据传输过程中的损坏。

MPI I/O: Lustre体系结构有一个专用的MPI ADIO层,它优化并行I/O,以匹配底层文件系统体系结构。

NFS和CIFS导出: Lustre文件可以通过NFS协议(通过Linux knfsd或Ganesha协议)或CIFS协议(通过Samba协议)重新导出,以便与非Linux客户端(如Microsoft*Windows、*Apple *Mac OS X *等)共享。

灾难恢复工具: Lustre文件系统提供了在线分布式文件系统检查(LFSCK),在发生重大文件系统错误时可以恢复存储组件之间的一致性。Lustre文件系统甚至可以在存在文件系统不一致的情况下运行,LFSCK可以在使用文件系统时运行,因此在将文件系统返回到生产环境之前不需要完成LFSCK。

性能监视: Lustre文件系统提供了各种机制来检查性能和调优。

开放源码: Lustre软件是根据GPL 2.0许可证授权的,可与Linux操作系统一起使用。

二、Lustre组件

Lustre软件的安装包括一个管理服务器(MGS)和一个或多个Lustre文件系统,这些文件系统通过Lustre网络(LNet)相互连接。Lustre文件系统组件的基本配置如图所示:

在这里插入图片描述

1.管理服务器(MGS)

MGS存储集群中所有Lustre文件系统的配置信息,并将这些信息提供给其他Lustre组件。每个Lustre目标与MGS联系以提供信息,Lustre客户端与MGS联系以检索信息。最好让MGS拥有自己的存储空间,这样就可以独立地管理它。然而,MGS可以与MDS共享存储空间。

2.Lustre文件系统组件

每个Lustre文件系统由以下组成:

  • 元数据服务器(MDS)——MDS使存储在一个或多个MDT中的元数据对Lustre客户端可用。每个MDS管理Lustre文件系统中的名称和目录,并为一个或多个本地MDT提供网络请求处理。
  • 元数据目标(Metadata Targets,MDT)——每个文件系统至少有一个MDT,MDT保存根目录。MDT将元数据(如文件名、目录、权限和文件布局等)存储在MDS的附属存储设备上。每个文件系统有一个MDT。共享存储目标上的MDT可用于多个MDS,但一次只能有一个MDS访问它。当一个主MDS出现故障时,第二个MDS节点可以为该MDT提供服务,并将其提供给客户端使用。这被称为MDS故障转移。DNE (Distributed Namespace Environment)支持多个MDT。除了保存文件系统根的主MDT之外,还可以添加其他MDS节点(每个MDS节点都有自己的MDT)来保存文件系统的子目录树。
  • OSS (Object Storage Servers):为一个或多个本地OSS提供文件I/O服务和网络请求处理。通常,一个OSS服务于2到8个OSS,每个最多16个TiB。典型的配置方式是在一个专用节点上部署一个MDT,每个OSS节点上部署两个或两个以上的OSS,每个计算节点上部署一个客户端。
  • 对象存储目标(OST):用户文件数据存储在一个或多个对象中,每个对象存储在Lustre文件系统中单独的OST上。每个文件的对象数量可以由用户配置,并且可以针对给定的工作负载进行调优以优化性能。
  • Lustre客户端:Lustre客户端是运行Lustre客户端软件的计算、可视化或桌面节点,允许它们挂载Lustre文件系统。Lustre客户端软件提供了Linux虚拟文件系统和Lustre服务器之间的接口。客户端软件包括MGC (management client)、MDC (metadata client)和多个OSCs (object storage client),对应文件系统中的OST。

LOV (logical object volume)将OSC集合起来,提供跨所有OST的透明访问。因此,安装了Lustre文件系统的客户机看到的是单一的、一致的、同步的名称空间。多个客户端可以同时对同一个文件的不同部分进行写操作,而其他客户端可以同时对该文件进行读操作。

逻辑元数据卷(LMV)对MDT进行聚合,以提供跨所有MDT的透明访问,方式与LOV对文件访问的方式类似。这允许客户端将多个MDT上的目录树视为单个一致的名称空间,并且在客户端上合并条带目录,以形成对用户和应用程序来说单个可见的目录。

下表为每个Lustre文件系统组件提供附加存储的要求,并描述所使用的硬件的理想特性:

所需的附加存储理想的硬件特性
MDSs文件系统容量的1-2%足够的CPU功率,充足的内存,fast disk storage
OSSs每个OST1-128TiB,每个OSS1-8个OST良好的总线带宽。建议存储在各个OSS之间均衡分配,并与网络带宽相匹配
Clients不需要本地存储低延迟,高带宽网络

3.Lustre网络(LNet)

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

4.Lustre集群

在规模上,Lustre文件系统集群可以包括数百个OSS和数千个客户端,如下图。在Lustre集群中可以使用多种类型的网络。OSS之间的共享存储支持故障转移功能。

在这里插入图片描述

三、Lustre文件系统存储和I/O

Lustre文件标识符(fid)在内部用于标识文件或对象,类似于本地文件系统中的inode号。FID是一个128位的标识符,包含64位唯一的SEQ (sequence number)、32位的OID (object ID)和32位的版本号。在文件系统(OSTs和mdt)中,所有Lustre目标的序列号都是唯一的。这允许多个MDT和OST唯一地标识对象,而不需要依赖底层文件系统中的标识符(例如inode号),因为这些标识符可能在目标之间重复。FID SEQ号也允许将一个FID映射到一个特定的MDT或OST。

LFSCK文件系统一致性检查工具提供了对现有文件启用FID-in-dirent的功能。它包括以下功能:

  • 验证与每个目录条目一起存储的FID,如果它无效或缺失,则从inode重新生成它。
  • 验证每个inode的linkEA条目,如果无效或缺失,则重新生成它。linkEA存储文件名和父FID。它作为扩展属性存储在每个inode中。因此,可以使用linkEA仅从FID重新构造一个文件的完整路径名。

关于文件数据在OST中的位置的信息被存储为一个扩展属性,称为布局EA,存储在由文件的FID标识的MDT对象中,如下图。如果文件是一个普通文件(不是目录或符号链接),MDT对象指向OST上包含文件数据的1到n个OST对象。如果MDT文件指向一个对象,则所有文件数据都存储在该对象中。如果MDT文件指向多个对象,则文件数据使用RAID 0跨对象进行条带化,每个对象存储在不同的OST上。

在这里插入图片描述

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

在这里插入图片描述

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

  • 网络带宽为OSS到目标的总计带宽。
  • 磁盘带宽是指网络带宽限制下所有OST的磁盘带宽之和。
  • 总计带宽等于磁盘带宽和网络带宽的最小值。
  • 文件系统可用空间等于所有OST的可用空间之和。

Lustre文件系统和条带化

导致Lustre文件系统高性能的一个主要因素是能够以循环方式将数据分条到多个ost。用户可以为每个文件配置条带数量、条带大小和ost。

当聚合到单个文件的带宽超过单个OST的带宽时,可以使用条带化来提高性能。当单个OST没有足够的空闲空间容纳整个文件时,分条功能也很有用。

条带化允许文件中的数据段或“块”存储在不同的ost上,如下图所示。在Lustre文件系统中,使用了一个RAID0模式,其中数据被“条带化”到一定数量的对象上。单个文件中的对象数量称为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个)进行条带化,每个对象使用ldiskfs时的大小可达16 TiB,使用ZFS时的大小可达256PiB。这导致ldiskfs的最大文件大小为31.25 PiB, ZFS的最大文件大小为8EiB。请注意,Lustre文件系统可以支持多达263字节(8EiB)的文件,仅受限于OSTs上可用的空间。

尽管一个文件只能条带2000多个对象,Lustre文件系统可以有数千个ost。访问单个文件的I/O带宽是对文件中对象的聚合I/O带宽,最高可达2000个服务器的带宽。在拥有超过2000个ost的系统上,客户端可以使用多个文件来执行I/O,以充分利用整个文件系统带宽。

扩展属性(xattrs)

Lustre使用lov_user_md_v1/lov_user_md_v3数据结构来维护xattrs下的文件条带化信息。扩展属性在创建文件和目录时创建。Lustre使用受信任的扩展属性来存储它的参数,这些参数只能在根目录下访问。参数如下:

  • trusted.lov:保存普通文件的布局,或存储在目录中的默认文件布局(也可以作为lustre.lov对于非root用户)
  • trusted.lma:保存当前文件的FID和额外的状态标志
  • trusted.lmv:保持条带目录(DNE 2)的布局,否则不显示
  • trusted.link:保存父目录FID +每个文件链接的文件名(对于lfs fid2path)

Xattr存储和显示在文件中,可以使用以下方法验证:

getfattr -d -m - /mnt/testfs/file>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】智慧校园云SaaS平台源码带微信小程序

智慧校园以互联网为基础,以“大数据云服务”为核心,融合校园教学、管理、生活软硬件平台,定义智慧校园新生活。智慧校园管理平台管理者、教师、学生、家长提供一站式智慧校园解决方案,实现校园管理智能化、校园生活一体化、校园设…

在二维矩阵/数组中查找元素 Leetcode74, Leetcode240

这一类题型中二维数组的元素取值有序变化,因此可以用二分查找法。我们一起来看一下。 一、Leetcode 74 Leetcode 74. 搜索二维矩阵 这道题要在一个二维矩阵中查找元素。该二维矩阵有如下特点: 每行元素 从左到右 按非递减顺序排列。每行的第一个元素 …

大数据技能竞赛(需要提供相关答疑私信)

全国职业院校技能大赛模拟题 (平台搭建,离线数据清洗,实时数据分析,可视化,综合分析) 大数据平台搭建 大数据技术与应用技能竞赛题目解析及代码分析实验 Hadoop完全分布式安装配置/伪分布式安装配置 Spark、…

SAP IDOC 开发入门

1, 基本概念 IDOC技术在早起版本的R/3系统就已经集成了,不过国内真正用起来还是05年以后了,其实IDOC是很强大的,在主数据和一些业务数据同步方面,几乎不需要做任何开发就可以配置完成,例如BD11,BD13这些事…

[滑动窗口] (一) LeetCode 209. 长度最小的子数组 和 LCR 016.无重复字符的最长子串

[滑动窗口] (一) LeetCode 209. 长度最小的子数组 和 LCR 016.无重复字符的最长子串 文章目录 [滑动窗口] (一) LeetCode 209. 长度最小的子数组 和 LCR 016.无重复字符的最长子串什么是滑动窗口长度最小的子数组题目解析解题思路代码实现总结 无重复字符的最长子串题目解析解题…

氮化镓功率放大器长期记忆效应的补偿

标题:Compensation of Long-Term Memory Effects on GaN HEMT-Based Power Amplifiers 来源:IEEE TRANSACTIONS ON MICROWAVE THEORY AND TECHNIQUES DPD:数字预失真(Digital Pre-Distortion)RF PA:射频功…

UI设计感专业商业代理服务公司宣传前端网站模板源码

专业商业代理服务公司宣传网站模板是一款适合提供商情分析、报告分析、IT咨询、管理、策略计划等商业代理服务公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。 演示下载 qnziyw点cn/wysc/qdmb/21764点html

CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境

CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境 文章目录 CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境一、前言二、资料收集三、Ubuntu18.04从安装到更换实时内核1、下载安装Ubuntu18.042、下载安装实时内核,解决编…

【Linux】 man命令使用

介绍 man命令是Linux下最核心的命令之一。而man命令也并不是英文单词“man”的意思,它是单词manual的缩写,即使用手册的意思。 man命令会列出一份完整的说明。 其内容包括命令语法、各选项的意义及相关命令 。更为强大的是,不仅可以查看Lin…

Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!

中午时候,在技术交流群里聊起关于Redis创始人的一些趣事,比如离开Redis之后,去写科幻小说之类的。 因为好奇科幻小说,TJ君就去搜索了一下。结果一搜,发现Redis作者最近居然又搞了个新活儿! 世界上最小的聊…

网安新旅程

网安新旅程 将近四个月没发博客了,今天交代一下最近发生的事情和规划。 TryHackMyOffsecBox QQ交流 君羊:751273347 近期的事情 6月开始我进入htb学院学习CPTS,7月左右我完成了95%左右的内容。7-8月份我基本都在做C#相关的开发&#xff0c…

Linux ----------------------- 文本处理工具

(一)绪论 awk、grep、sed和cut 是Linux 操作文本的四大利器,合称文本四大金刚,也是必须掌握的Linux 命令之一。这四个工具的功能各有侧重: awk:功能最强大,用于处理和格式化文本,可…

uniapp原生插件之安卓热敏打印机打印插件

插件介绍 安卓热敏打印机打印插件,自动授权,打印机连接监听,打印文本,条形码,二维码,切纸,打印机状态,打印结果查询等 插件地址 安卓热敏打印机打印插件 - DCloud 插件市场 超级…

信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(九):互连的带宽

如果我们从理想方波的频谱开始,优先衰减高频分量而不是低频分量,则传输信号的带宽(重要的最高正弦波频率)将会减小。我们让波传播的时间越长,高频分量的衰减就越大,带宽就越低。 带宽作为重要的最高正弦波频…

EASYX输出文字

在EASYX中绘制出字符串和字符 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #include <stdlib.h> #include <conio.h> #include <time.h> #define PI 3.14、 //…

CoT: 思路链提示促进大语言模型的多步推理

CoT 总览摘要1 引言2 Chain-of-Thought Prompting3 算术推理 &#xff08;Arithmetic Reasoning&#xff09;3.1 实验设置3.2 结果3.3 消融实验3.4 CoT的鲁棒性 4 常识推理 &#xff08;Commonsense Reasoning&#xff09;5 符号推理 &#xff08;Symbolic Reasoning&#xff0…

SLAM从入门到精通(计算点到直线的距离)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大家一开始看到这个题目的时候&#xff0c;也许比较吃惊。为什么会有这样的题目&#xff1f;但是做过slam的同学&#xff0c;应该就比较熟悉和了解…

Mysql库操作

一&#xff1a;库的操作 1&#xff1a;创建数据库 mysql> create database test1; Query OK, 1 row affected (0.00 sec)mysql> create database test2 charsetutf8;create database test2 character utf8;Query OK, 1 row affected (0.00 sec)mysql> create databa…

Linux学习笔记之二(环境变量)

Linux learning note 1、环境变量1.1、修好PATH环境变量 1、环境变量 环境变量(environment variables)即系统运行的一些环境参数。主要的环境变量有以下这些&#xff1a; PATH&#xff1a;决定了系统查找可执行文件的目录范围。HOME&#xff1a;指定当前用户的主目录路径。U…

【C++心愿便利店】No.11---C++之string语法指南

文章目录 前言一、 为什么学习string类二、标准库中的string类 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到我的乱七八糟小星球&#x1f31d; &#x1f4cb;专栏&#xff1a;C 心愿便利店 &#x1f511;本章内容&#xff1a;str…