MooseFS系统简介

MooseFS是一个高容错性的分布式文件系统,它能够将资源分布存储于几台不同的物理介质,对外只提供给用户一个访问接口。对它的操作与其它文件系统完全一样:

l分层文件结构(目录树结构);

l存储POSIX 文件属性(权限、最后访问、修改时间);

l支持特殊的文件(块文件夹、字符文件及管道和socket )

l软链接(文件名指向目标文件)及硬链接(不同的文件名指向同一块数据);

l仅限于基于IP 地址或密码来访问文件系统。

MoosFS具有以下特征:

l高可靠性:数据可以被存储于几个不同的地方;

l可扩展性:可以动态的添加计算机或磁盘来增加系统的容量产;

l高可控性:系统能够设置删除文件的时间间隔;

l可追溯性:能够根据文件的不同操作(写入/ 访问)生成文件快照。

MooseFS的体系结构

MooseFS体系结构包含以下四个模块:

l管理服务器(master server):它用来管理整个文件系统,用来存储每个文件的元数据(包括文件大小、属性及存储位置,同时也包括的一些非规则性的文件,如目录、socket、管道及设备);

l数据服务器(chunk servers):用于存储文件的服务器,同时它们之间可以同步数据;

l元数据备份服务器(metalogger servers):用于存储元数据变化日志并周期性的下载元数据文件;同时也可以替代管理服务器暂不能工作的情况;

l客户端:用于访问MooseFS中的文件,采用mfsmount来与管理服务器进行交互(接收或修改元数据文件)及与数据服务器交换真正的数据。

mfsmount是基于FUSE机制的(FileSystem in USErspace),因此mooseFS能够工作于任何实现了FUSE的操作系统(LinuxFreeBSDMacOS X等)。

MooseFS读操作

MooseFS写操作

元数据存储在管理服务器的内存及磁盘中(周期性的更新二进制文件及增长的日志文件)。同时二进制文件及日志文件会被同步到元数据服务器。

文件数据被切分成最大不超过64M的不同的片段,每个片段会存储于备选的数据服务器中。可以通过将数据配置在多个不同的数据服务器来保证高可靠性,可以通过mfssetgoal命令来设定最终要将数据存储在几台服务器上。

系统如何工作

在客户端上对挂载在MooseFS上的文件操作与的文件系统完全一样,操作系统内核将文件操作传输至FUSE模块,进而与mfsmount进程进行交互。Mfsmount进程通过网络与管理服务器及数据服务器交互。整个过程对用户来说是完全透明的。

Mfsmount每次与管理服务器交互,以下的操作文件元是必须的:

l创建文件;

l删除文件;

l读取文件目录;

l读取及改变属性;

l改变文件大小;

l开始读取或写入数据;

l访问MFSMETA 上的任何特殊文件。

mfsmount直接连接到数据服务器,用于存储相关片段的文件。当写入一个文件时,写入过程完成后,管理服务器会接收从mfsmount发送回来的信息,用于更新文件的长度及最后的修改时间。

此外,数据服务器间能够相互复制数据,以达到将数据文件存储在不同机器上的目的。

容错性

系统管理员可以通过管理命令将数据文件拷贝至不同的数据服务器上。设置多于一台数据服务器的目标将有利于提高系统的容错性。多份数据文件的存储有利于消除单一数据服务器宕机或网络延迟带来的灾难。

当采用mfssetgoal的目标数为1时,会将数据文件存储在系统中的单一数据服务器中。当有重要数据时,可以将该目标值设置大于2,它能够有效的防止因系统宕机而带来数据无法访问的后果。当然了目标数的设定不能多于数据服务器的数目,否则将无法将数据保存到预定数目的服务器中。当有一个服务器已经存储满时,它将无法再容纳数据存储,在这种情况下,需要重新挂载一台数据服务器,才能够满足预期的目标数。如果有一台数据服务器临时无法访问或网络出现问题,由于之前数据文件至少有两份以上的备份,客户端可以从其它服务器上进行有效访问。
新的数据服务器能够随时挂载到系统中,同时新的存储容量也会立即生效,用来存储新文件或从其它数据服务器复制备份文件。管理工具能够查询文件系统中的状态以及是否在目标值设定的范围之前内,工具也能够用来改变目标值的设置。客户端(运行mfsmount进程)的机器对文件系统的连贯性及其它客户端没有任何影响。最严重的情形也不过是客户端向数据服务器发送的数据失败。

平台

MooseFS能够被应用在实现了FUSE的任何操作系统:

·Linux (Linux 2.6.14及更高,支持FUSE的内核)

·FreeBSD

·OpenSolaris

·MacOS

管理服务器、日志服务器及数据服务器使用Cygwin运行在SolarisWindows上。不幸的是没有FUSE的话是不能将文件系统挂载到操作系统中。