Lustre可靠性增强系统MTFS:第4篇 下层文件系统支持
来源:互联网 发布:淘宝版权怎么投诉 编辑:程序博客网 时间:2024/05/22 13:12
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.csdn.net/fsdev/article
- Lustre可靠性增强系统MTFS:第4篇 下层文件系统支持
- Lustre可靠性增强系统MTFS:第5篇 在Lustre文件系统中的使用
- Lustre可靠性增强系统MTFS:第3篇 系统结构
- Lustre可靠性增强系统MTFS:第1篇 简介
- Lustre可靠性增强系统MTFS:第2篇 安装
- Lustre可靠性增强系统MTFS:第6篇 编程风格
- 欢迎共同参与开源内核文件系统开发项目:Lustre可靠性增强系统MTFS
- 深入理解Lustre文件系统-第8篇 基础结构支持
- 深入理解Lustre文件系统-第1篇 跟踪调试系统
- 深入理解Lustre文件系统-第4篇 LDLM:Lustre分布式锁管理
- 深入理解Lustre文件系统-第3篇 lustre lite
- 深入理解Lustre文件系统-第10篇 LNET:Lustre网络
- 深入理解Lustre文件系统-第3篇 LNET:Lustre网络
- 深入理解Lustre文件系统-第4篇 LOV和OSC
- MTFS文件系统
- 文件系统那些事-第4篇 并行文件系统之开源解决方案Lustre
- 深入理解Lustre文件系统-第11篇 Lustre一般化文件系统封装层:fsfilt
- 深入理解Lustre文件系统-第12篇 Lustre磁盘文件系统:ldiskfs
- 高可用之3——DG基础知识
- Java AIO初探(异步网络IO)
- SQL Server Join Example
- Sicily 2499
- 简单的AsyncTask使用例子
- Lustre可靠性增强系统MTFS:第4篇 下层文件系统支持
- Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean
- 截取《C专家编程》中的语言声明优先级规则
- java中hashcode()和equals()的详解
- PHP+MySql和ASP中获取新添加记录的ID值
- mongodb_数据类型(null/字符串/数字/日期/内嵌文档/数组等)
- 黑马程序员学习日记------openFileialog的用法
- Android AlertDialog 对话框添加、属性
- python paramiko ssh远程连接