Lustre可靠性增强系统MTFS:第4篇 下层文件系统支持

本文深入探讨了MTFS(Multi-tenant File System)的架构设计,重点阐述了如何为多种下层文件系统提供支持的机制。通过定义`structlowerfs_operations`和`structMTFS_junction`,MTFS能够灵活地处理不同文件系统的差异性。以ext2为例,详细介绍了添加支持的步骤,包括目录创建、源码修改等关键操作。同时,文章还讨论了对Lustre、本地文件系统(如ext2、ext3、ext4、tmpfs、ntfs-3g)和nfs的支持,以及遇到的具体问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.1 为何需要下层文件系统支持?

MTFS的目的是为众多文件系统提供一种通用的高可用框架。为了这个目的,MTFS的大部分实现方式都是通用的。但是下层文件系统千奇百怪,因此还需要一种机制来处理下层文件系统的差异性,这个机制就是枢纽机制。

4.2 如何添加下层文件系统支持?

对于每种作为MTFS的下层文件系统,首先需要定义structlowerfs_operations,在其中给出下层文件系统类型、名字,并给定一些底层操作,以供MTFS调用。

同时MTFS设计了枢纽(junction)机制。通过枢纽机制,可以针对某些文件系统的组合,定制MTFS操作。例如下面几种情况可能需要进行不同的处理:

1. 将ext3作为主分支,将Lustre作为从分支

2. 将lustre作为主分支,将ext3作为从分支

在这种情况下,可以分别定义不同的枢纽struct MTFS_junction。枢纽中提供与默认的MTFS操作不同的操作struct MTFS_operations。对于在struct MTFS_operations中未定制的操作,将使用默认操作。

综上所述,为了对新的下层文件系统提供支持,只需要参考现有源码,根据新文件系统的特性,给定struct lowerfs_operations,然后定制struct MTFS_junction即可。

以添加ext2支持为例.

1. 创建MTFS/ext2目录。可以从MTFS/ext3目录复制过来。

2. 修改MTFS/ext2下的autoMakefile.am和Makefile.in

3. 修改MTFS/autoconf/MTFS-core.m4,添加

4. 修改MTFS/autoconf/MTFS-core.m4中对LC_CONDITIONALS的定义:

5. 修改MTFS/autoconf/MTFS-core.m4中对LC_CONFIG_FILES的定义:

6. 修改MTFS/autoMakefile.am,添加:

7. 修改MTFS/autoMakefile.am中对DIST_SUBDIRS的定义:

8. 修改MTFS/Makefile.in,添加:

9. 修改build/autoconf/MTFS-build.m4中对LB_CONFIGURE的定义,添加

10. 运行源码目录下的rebuild.sh

11. 在MTFS/tests/cfg目录下添加ext2.conf,进行测试。

4.3 对Lustre的支持

MTFS希望能提供对Lustre的支持。然而,由于Lustre是一个分布式文件系统,MTFS仍然需要借助Lustre的底层机制来保证数据一致性。

MTFS提供了对Lustre的补丁,可使用quilt工具将所需补丁打入相应版本的lustre中。具体使用方法为:

>cd luster-1.8.1.1
>ln -s ../mtfs-1.5.31/mtfs/swgfs_support/swgfs_patches/patches/ .
>ln -s ../mtfs-1.5.31/mtfs/swgfs_support/swgfs_patches/series/mtfs_lustre-1.8.1.1.series series
>quilt push -a

4.4 对本地文件系统的支持

支持的本地文件系统包括ext2、ext3、ext4、tmpfs、ntfs-3g等。

其中tmfs没有扩展属性支持。

ntfs-3g的扩展属性需要特殊处理。

4.5 对nfs的支持

对nfs支持存在的问题在于nfs不支持扩展属性。不支持扩展属性,那么就意味着没有好的方法来设置标志。

在提供nfs支持时需要的问题:

Bug

测试描述

问题描述

解决方式

325(posix:31d)

删除一个打开的目录,并访问这个目录

在fchmod已删除的目录时失败,报出的错误是Stale NFS file handle

添加LOWERFS_DIR

_UNREACHEABLE_WHEN

_REMOVED_THOUGH

_OPENED

326(posix:36a)

验证新创建的的文件时间戳处于创建文件前后的系统时间之间

时间戳不对

添加LOWERFS_STRICT_

TIMESTAMP

327(posix:52a)

验证chattr操作是否有效

NFS不支持ioctl

添加LOWERFS

_SUPPORT_CHATTR

4.6 正在实现的支持

Glusterfs、Brtfs、Nilfs


本文章欢迎转载,请保留原始博客链接http://blog.youkuaiyun.com/fsdev/article

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值