1.1 MTFS是什么?
- MTFS(MulTi File System)是一个基于副本的可靠性增强系统。它通过维持文件的多个副本,提高分布式存储系统的可靠性。
- MTFS是一个堆叠式的(stackable)文件系统,它本身不提供数据的存储能力,而直接利用下层文件系统存储数据。因此MTFS可独立于下层文件系统的具体实现,专注于副本策略的设计。MTFS支持包括本地文件系统、网络文件系统、分布式文件系统在内的多种的文件系统。现支持的文件系统包括ext2、ext3、ext4、nfs、ntfs-3g、tmpfs和Lustre。
- MTFS还是一个文件系统开发的综合平台。它运用了模块化的设计思想,具有灵活的系统结构,提供了包含丰富测试用例的文件系统测试框架,不仅可以提供基于同步副本的可靠性增强机制,而且可以在此基础上实现异步副本、归档、数据缓存、名字空间统一等功能。
1.2 MTFS不是什么?
- MTFS不是一个磁盘文件系统。任何实用的磁盘文件系统都需要仔细设计和实现,需要完成复杂的索引节点和数据块管理,确保数据的一致性和安全性,优化各种负载下的性能。只有完成所有这些事情,才能进入市场,才有可能逐渐为大众用户接受。MTFS不拘泥于任何特定的磁盘格式,而直接使用优秀的下层文件系统,完成数据的存储。
- MTFS不是一个网络文件系统。在一个系统中引入网络层势必需要层层抽象,从而大大增加系统复杂度。MTFS本身不具备网络通信能力,但是适用于网络文件系统客户端。
- MTFS不是一个分布式文件系统。已有的分布式文件系统Lustre、GPFS等,是完整、优秀而又复杂的系统。MTFS在体型上无法和这些系统媲美,但是可以为这些系统增加新的功能,增添新的色彩。
- MTFS不是一个凭空构想出来的项目。事实上,MTFS项目是受现实需求的驱动才被发起的项目。其最基本和最主要的目标是解决基于Lustre文件系统的可靠性问题。熟悉Lustre的人都知道,Lustre是一个优秀的高性能分布式并发集群文件系统,然而却缺少数据冗余机制,因而面临严峻的可靠性挑战。
- MTFS不是一个缺少发展空间的项目。由于MTFS不依赖于下层文件系统的具体实现,因此MTFS本身的发展不受Lustre或其他任何下层文件系统应用前景的制约。又由于基于MTFS可以实现多种功能,因而某种功能需求的退化或消失不会影响MTFS的继续发展
- MTFS不是一个尚未成型的项目。历经15个月的成长,MTFS已经拥有超过15000行代码,具备基本的框架和功能。任何有经验的开发人员都可以轻松的构建试用环境,并尝试是否能通过MTFS把内核搞垮。
- MTFS不是一个没有测试的项目。事实上,到目前为止,MTFS是一个测试驱动的项目。新加入的任何子系统,都需要提供足够的测试用例。对现有系统的任何更新,都需要通过数百道回归测试的检验。
- MTFS不是一个没有文档的项目。MTFS的文档受到了高度的重视。文档的编写共耗费了60天,最终形成了50余页,20000余字的开发手册。这些数字还在不断增长中。之所以在开发最关键的时期,进行文档的编写,就是为了让新加入的开发人员更快速、深入地投入到该项目中去。
1.3 MTFS还可以做什么?
MTFS的设计实现综合考虑了性能、灵活性、可移植性、易用性和可维护性等各个方面,提供了包含丰富测试用例的文件系统测试框架,形成了一种开发堆叠式文件系统的综合平台。MTFS不仅可以提供基于同步副本的可靠性增强机制,而且可以在此基础上开发异步副本、归档、数据缓存、名字空间统一等功能。
1.4 为什么要MTFS?
可靠性是存储系统的关键特性之一。随着高性能计算系统、数据中心、云存储服务中心等系统中的存储系统规模越来越大,包含的磁盘阵列和服务器数量越来越多,其可靠性日益成为存储系统面临的重要问题之一。
廉价冗余磁盘阵列(RAID)是在设备层提高可靠性的常见方法,被商业盘阵广泛采用。软RAID可以将多个设备虚拟成单一设备,与硬RAID相比,会造成较大的性能损失,但具有更高的灵活性,是提高存储系统可靠性的另一可选方案。分布式存储系统系统的可靠性不仅取决于磁盘阵列的可靠性,而且涉及到服务器上的存储服务、存储网络的稳定性问题,因而需要更高层的可靠性保障。Lustr假定通过RAID可构建足够可靠的存储设备,因而通过采用服务器间的故障接管来保证存储服务的高可用。然而,在存储系统盘阵数目持续增长的情况下,盘阵失效甚至损坏的情况时有发生。在应对这类问题时,Lustre的服务高可用保障机制存在着明显的不足。许多网络文件系统或文件服务平台则采用多副本或纠删码机制,提高存储系统可靠性。这些系统在数据格式、存储协议上存在着明显差别,它们各自提供的多副本机制往往嵌入到系统的具体实现中,因而难以在其他系统中推广应用。当前的数据中心往往集成多种类型的文件系统[],构成一个异构的大规模分布式网络存储系统。如何为这种复杂、异构系统设计实现一种通用、灵活、高效的可靠性机制,是迫切需要解决的难点问题之一。
堆叠式文件系统(stackable file system)因其独立于下层文件系统的实现细节,具有较高的通用性,逐渐成为一种为现有文件系统新增功能的常用方法[]。MTFS正是采用这一方式,尝试提供一种通用的存储系统可靠性增强方法。
1.5 发展方向
经过长期的设计、编码和测试,MTFS已经基本实现了同步副本的功能,支持ext2、Lustre、ntfs-3g等若干文件系统。在接下来的发展中,MTFS将着着力从以下几个方面进行发展。
- 增强文件系统核心层的稳定性。作为核心层系统软件,稳定性是文件系统的基本要求。为了提高文件系统的稳定性,构建在不同的测试环境,大量需要增加测试用例。
- 丰富用户层管理工具。现在急需完成的是文件系统检查、修复的工具。
- 新增下层文件系统支持。新增下层文件系统支持并不是一个没有积累的工作,已有的支持可以作为新增文件系统支持的参考。其中真正重要的问题在于,如何准确分析文件系统,尤其是新型分布式文件系统的结构特点,提出适应于结构特点的使用模式。
- 优化系统架构。我们需要一个通用的系统架构,这个系统架构不仅可以适用于同步副本模式,而且适用于异步副本模式,不仅适用于副本模式,而且适用于其他功能。所有这些模式或者功能,都按照可配置的方式组合在一起,按照安装实例的不同而进行不同的组合。
在功能上,主要考虑以下几个方面。
1.6 如何参与MTFS项目?
- 参与MTFS软件结构的设计。将MTFS的软件结构进一步模块化、层次化。
- 参与MTFS新功能的设计。MTFS暂时只支持同步副本功能,可以在此基础上设计其他功能,研究新功能的现实需求、应用场景、实现方式等问题。
- 为MTFS设计算法。例如,为MTFS设计可动态更新的文件名最长后缀匹配算法,或可扩展的类型枢纽匹配算法。
- 为MTFS编写内核层代码。将一个系统逐渐推向成熟、稳定将是一种非常有趣的活动。
- 为MTFS编写用户层管理工具。例如,为MTFS实现文件破损分支修复工具。
- 强化MTFS对Lustre的支持。例如,为MTFS添加对Lustre-1.8.x的支持。
- 为MTFS新添下层文件系统支持。这是一个较易上手的活动,可以用来快速地熟悉MTFS。
- 为MTFS编写测试用例。找出MTFS的BUG,并编写短小精悍的回归测试用例。
- 对MTFS发表任何意见、建议。
1.7 网络资源
MTFS是一个以GPL v3发布的开源软件。关于MTFS的源码、文档、指南和最新动态都将发布在网上。
- http://code.google.com/p/mtfs,MTFS的项目网站,可以下载源码。
- http://blog.csdn.net/fsdev,我的博客,整理好的文档将陆续在此发布。
- http://qun.qq.com/#jointhegroup/gid/249858913,MTFS和存储相关讨论群,讨论气氛比较热烈。
- http://groups.google.com/group/mtfs,MTFS的邮件链表,可在此讨论问题。(由于总是访问受限,因此使用较少)
- http://www.multifs.com,MTFS的网站。(正在建设中)
本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article