MTFS是一种扇出式的内核层堆叠式文件系统。那么什么是堆叠式文件系统?堆叠式文件系统是一种轻量级的文件系统,它可安装在其他文件系统之上,从而为已有提供了一种增量式开发方法。堆叠式文件系统本身不提供数据存储功能,而是堆叠在下层文件系统之上,调用下层文件系统接口,完成文件系统操作。按照堆叠方式的不同,堆叠式文件系统可分为线性和非线性两类,非线性堆叠式文件系统又可分为扇入式(fan-in)和扇出式(fan-out)两类。其中线性堆叠式文件系统安装在下层文件系统的单个目录之上,而扇出式文件系统则将下层文件系统的多个目录作为分支。线性堆叠式文件系统可提供加密、数据完整性检查和入侵检测、防病毒、压缩、多版本、安全检测、跟踪及重放等各种功能。以扇出式堆叠式文件系统一般用来提供名字空间统一或数据冗余。
图1给出了MTFS执行同步写操作的流程。如图所示,MTFS把下层文件系统的若干目录作为各个分支,而向虚拟文件系统VFS提供普通的文件系统接口,因而实现了对用户进程的完全透明。在用户层执行操作时,MTFS通过调用下层文件系统接口,将操作应用在所有分支上,从而实现了副本的同步更新。
图 MTFS的写操作流程
MTFS采用模块化的设计和实现方式,其软件建构如下图所示。该系统由用户层工具包和内核层文件系统组成。用户层工具包的主要功能包括维护文件系统状态,修复文件无效分支等。内核层文件系统以ioctl、/proc等方式向用户层管理工具包提供管理接口。内核层文件系统由策略引擎、配置枢纽、操作复制器和分支抽象等模块组成。
图 MTFS的软件结构
3.1 策略引擎
策略引擎提供了一种基于策略的副本管理机制。由于文件具有不同的重要性,对所有文件采用一致的副本策略,会造成不必要的存储空间浪费和性能损失。为此,策略引擎实现了文件粒度的副本策略配置方法,可以控制每个文件的副本数目以及副本分布在哪些分支上。MTFS中的每个文件都拥有自己的策略属性,其策略属性是在新建时从父目录自动继承的,也可以被手动设置
策略引擎支持对不同类型的文件自动设置不同的策略属性,应用相应的副本策略,从而达到性能、空间和可靠性之间的平衡,提高存储系统的整体服务质量。例如,为了减少性能损失,可将临时文件设定为单副本方式,将源码、文档等重要文件设定为多副本方式;为了减少空间消耗,可对大小超过某个限度的大文件保存少量副本,而对小文件保存多份副本。
根据后缀名区分文件类型,并应用不同的副本策略,被认为是一种方便有效的方法。因此,MTFS实现了一种基于文件名后缀最长匹配的副本策略机制。该机制提供用户接口,可对不同的文件名后缀设定不同的副本属性。图3给出了该机制在设定了.html、.xhtml、.xml、.htm、.mht和.txt等6个后缀的副本策略之后,所构建的策略树。在新建文件时,该机制将查询这个策略树,匹配文件名的最长后缀,自动设置文件的副本属性,应用对应的副本策略。
图 基于文件名后缀最长匹配的策略树示例
3.2 配置枢纽
配置枢纽是为适应不同的配置而设计实现的一种连接机制。MTFS的安装模式不同,或下层文件系统类型不同,就对应着不同的配置方式。基于MTFS可以实现包括同步副本、异步副本、归档、数据缓存在内的多种功能,分别对应了不同的使用模式。配置枢纽使得在安装MTFS时可以选择不同的使用模式,实现不同的功能。
配置枢纽还使得MTFS可适用于不同类型的下层文件系统。传统的栈式文件系统在实现中通常没有区分下层文件系统的具体差异。然而,不同的文件系统不仅在提供的接口上存在着差异,而且在接口语义上也可能存在细微差异。例如一些文件系统为VFS的file_operations结构体提供了writev方法,而另一些文件系统则只提供了write方法。另外,每种文件系统都各自提供了独特的ioctl接口,这些接口在不同的文件系统之间无法通用。如果在调用这些接口时,没有注意下层文件系统的差异,不仅可能造成性能损失,而且可能造成语义错误。
MTFS的一个安装实例可以组合使用多种类型的下层文件系统。对于每种下层文件系统的类型组合,配置枢纽需要根据其特点,配置适用的文件系统方法。基于类似于VFS的思想,配置枢纽提供了若干一般化的方法。例如,配置枢纽为同步模式提供了mtfs_file_write函数和mtfs_file_write_nonwritev函数,分别适用于在file_operations结构体中定义了和未定义writev方法的下层文件系统。前者将直接调用下层文件系统的writev方法,后者将调用下层文件系统的write方法。通过配置使用MTFS提供的默认方法,可以很容易的增加对新型下层文件系统的支持。
配置枢纽还为定制适应下层文件系统类型的文件系统方法提供了必要的接口。例如,当使用MTFS的同步副本模式来提高并行文件系统Lustre的可靠性时,需要利用Lustre的底层机制来保证一致性语义,因而无法使用MTFS提供的默认方法,而需要通过配置枢纽定制文件系统方法。
MTFS核心模块维持一个配置枢纽列表。为MTFS新添配置支持,都以向内核添加核心模块的方式进行。这些模块会在该列表中注册对应的配置枢纽。在安装MTFS的每个实例时,都将根据下层文件系统的类型和配置的使用模式,匹配合适的配置枢纽,初始化本次安装实例的文件系统超级块。
3.3 操作复制器
操作复制器是在分支间反复进行文件系统操作的软件层。操作复制器根据文件系统操作是否会引起数据或元数据更改,将其分为写操作和读操作。在同步副本模式下,为了保持副本的实时一致,操作复制器将VFS发出的写操作应用到所有的分支上。操作复制器根据分支的数据或元数据是否最新,将其分为有效分支和无效分支。如果所有有效分支写操作失败,那么操作复制器将判定此次写操作失败。如果至少有一个有效分支写成功,操作复制器则判定操作成功,并将所有失败的分支设置为无效分支。在读操作时,操作复制器将连续读取有效分支,直至某次读操作成功,或者所有有效分支读取失败为止。
操作复制器可以根据配置模式的不同而应用不同的操作策略。例如,在异步副本模式下,为了达到性能提升,操作复制器采用与同步模式不同的策略,即在完成单个分支的修改后就返回写操作成功,其他分支则进行异步更新。
3.4 分支抽象
分支抽象是MTFS为屏蔽下层文件系统差异,向上层提供统一的操作接口而设计实现的软件层。一般来说,MTFS的分支是下层文件系统的目录,但通过把其他系统的接口抽象成分支接口,可以构建虚拟分支,实现特殊功能。例如,为了实现对文件系统的跟踪分析,可以实现基于跟踪日志的分支接口,将跟踪日志和待跟踪的目录分别作为MTFS的两个分支,从而可以在用户透明的前提下获得跟踪信息。
MTFS除了调用分支的文件系统接口外,还需要存储分支属性、策略属性等附加信息。一般来说,附加信息是以文件扩展属性的方式存储的。然而,不同的文件系统对扩展属性支持不一样。例如,ext2等文件系统只支持名字以“trusted.”开头的扩展属性,而ntfs-3g等文件系统则只支持名字以“user.”开头的扩展属性。分支抽象可以屏蔽这些差异,向上提供一致的附加信息存储方法。
分享到:
相关推荐
* 高可用性: Lustre 文件系统提供了高可用性和故障恢复机制,确保数据的安全和可靠性。 3. Lustre 文件系统存储与 I/O Lustre 文件系统存储与 I/O 主要包括两部分:条带化和配置简单的 Lustre 文件系统。 * 条带...
* 高可靠性:Lustre文件系统可以提供高可靠性的存储解决方案,满足数据密集型应用的需求。 Lustre文件系统的应用场景: * 高能物理实验 * 北京谱仪 * 羊八井宇宙线实验 * 大型强子对撞机LHC上的ATLAS、CMS实验 * ...
Metadata Server(MDS):元数据服务器存储了文件系统的基本信息,负责管理整个系统的命名空间,维护整个文件系统的目录结构、用户权限,并负责维护文件系统数据的一致性。 Metadata Target(MDT):MDT存储了MDS上...
Lustre 文件系统是一个集群存储体系结构的核心组件,能够提供符合 POSIX 标准的 UNIX 文件系统接口。该文件系统可在 Linux 操作系统上运行,并具有按需扩展容量和性能的能力。 Lustre 文件系统的特点 1. 可扩展...
Lustre 文件系统的优势包括高性能、高可扩展性和高可靠性等。它提供了高性能的文件系统解决方案,满足了高性能计算和数据存储的需求。 8. Lustre 文件系统的挑战 Lustre 文件系统的挑战包括性能瓶颈、可扩展性限制...
Lustre并行文件系统则可以解决这些问题,提供高性能、可扩展性和可靠性的文件系统解决方案。 2. Lustre并行文件系统的架构 Lustre并行文件系统的架构主要由三个部分组成:Metadata Server(元数据服务器)、Object...
《Lustre文件系统资料全集》是一份包含详尽信息的资源集合,专注于Lustre分布式文件系统。Lustre文件系统是一种高性能、可扩展的解决方案,广泛应用于科研、教育和数据中心等领域,以处理海量数据存储和访问需求。这...
- **安装 Lustre 相关 RPM 包**:按照特定顺序安装Lustre的相关RPM包,例如kernel-lustre-smp、kernel-lustre-source、lustre-modules、lustre、lustre-source、lustre-debuginfo 和 lustre-ldiskfs等。 #### 三、...
Lustre是一个开源的、基于对象存储技术的集群并行分布式文件系统,它具有很高的可扩展性、可用性、性能、易用性等,在高性能计算系统中被广泛使用。它主要包括三个部分:元数据服务器MDS (Metadata Server)、对象...
总之,Lustre 1.6分布式文件系统以其卓越的性能、可靠性、扩展性和灵活性,在大规模数据管理和高性能计算领域占据着举足轻重的地位。无论是科研机构、数据中心还是企业级应用,Lustre都能提供稳定、高效的数据存储和...
Lustre 文件系统概述、架构、组件和特点 Lustre 文件系统是一个基于 Linux 集群的并行文件系统...Lustre 文件系统是一个高性能、高可靠性、灵活的分布式并行文件系统,广泛应用于高性能计算系统和大规模数据存储领域。
##### 1.1 Lustre 文件系统结构 - **元数据服务器 (MDS)**:负责管理文件系统的目录和文件元数据。 - **对象存储服务器 (OSS)**:存储实际的数据块。 - **网络通信层 (LNet)**:为 MDS 和 OSS 之间的通信提供高效的...
Lustre 的设计目的是为了克服传统文件系统在扩展性和性能方面的限制,使其成为科学研究、工程分析等领域的理想选择。 #### 二、Lustre 版本与文档 - **版本**: 提供的文档对应的是 Lustre 软件发布版 2.x,这是一个...
- **容错能力**: 支持数据冗余和恢复机制,增强系统的可靠性。 #### 六、参考材料 Lustre手册还提供了丰富的参考资料,包括但不限于: - **API文档**: 描述了Lustre编程接口的详细信息。 - **命令行工具**: 列出...
- **特点:** MDT 可以分布在多个物理设备上,以提高性能和可靠性。 ##### 2.3 OSS (Object Storage Server) - **功能:** 主要负责存储实际的数据块。 - **作用:** 数据存储的核心组成部分。 ##### 2.4 OST ...
《深入理解Lustre文件系统》这一报告由美国橡树岭国家实验室(ORNL)的研究人员撰写,旨在为读者提供一个全面深入的了解Lustre内部结构和技术特性的机会。 #### Lustre文件系统概述 Lustre文件系统是一种并行文件...
3. **客户端(Client)**:Lustre的客户端可以直接访问文件系统,而无需经过传统的网络文件系统(NFS)或其他中间层。客户端直接与MDS和OSS通信,实现高速数据传输。 为了提高系统可用性和容错性,Lustre支持MDS和...
[巴黎高师课程] 同步反应式系统第一课 - 使用Lustre对嵌入式系统编程 内容概要:本文档介绍了用于编程嵌入式系统的同步反应语言Lustre。Lustre是一种声明性的同步数据流编程语言,专为实时系统设计。文档首先概述...
- **稳定性增强**:修复了之前版本中的已知bug,提高了系统的健壮性和可靠性,确保在高负荷工作负载下也能稳定运行。 - **新功能引入**:可能引入了新的API或特性,以适应不断变化的存储需求,例如支持更大文件大小...
Lustre文件系统,作为一款高性能的并行分布式文件系统,自2005年以来,一直在全球超级计算机排名中占据显著地位,至少占据前十大超级计算机的一半以上。这款文件系统广泛应用于各种大规模集群,其设计初衷是为了解决...