到日前为止,有数十种以上的分布式文件系统解决方案可供选择,如:Lustre,Hadoop,PNFS等。为什么要选择MooseFS呢?我来说说我的看法:
实施简单。MFS的安装,部署,配置相对于其他几种工具来说,要简单和容易得多。
不停服务扩容。MFS框架做好后,随时可以增加服务器扩充容量;扩充和减少容量皆不会影响现有的服务。
恢复服务容易。除了MFS本身具备高可用特性外,手动恢复服务也是非常快捷的。
MFS的特性
高可靠性(数据能被分成几个副本存储在不同的计算机里)。
通过增加计算机或增加新的硬盘动态扩充可用磁盘空间。
可以设置删除文件的空间回收时间。
为文件创建快照。
MFS文件系统的组成
MFS分布式文件系统由元数据服务器,元数据日志服务器(也称备份服务器),数据存储服务器,客户端(用户主机)等几部分组成。
元数据服务器,它在整个体系中负责管理文件系统。目前MFS只支持一个元数据服务器Master,也就是说MFS对Master服务器有单点依赖,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个Master服务器,进一步提高系统的可靠性。
元数据日志服务器(Metalogger)。备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。当元数据服务器数据丢失或者损毁,可从日志服务器取得文件进行恢复。
数据存储服务器Chunk Server。真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器Chunk Server之间复制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的"磁盘空间"越大,可靠性也越高。
客户端。使用MFS文件系统来存储和访问的主机称为MFS客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。
MFS读写处理过程
MFS读取数据有以下4个步骤:
客户端向元数据服务器发出请求。
元数据服务器把所需数据存放的位置(Chunk Server的IP地址及Chunk编号)告知客户端。
客户端向已知Chunk Server请求发送数据。
客户端取得所需数据。
整个读取数据的过程如下图:
数据传输并不通过元数据服务器。这既减轻了元数据服务器的压力,同时也大大增加了整个系统的吞吐能力。在多个客户端读取数据时,读取点(Chunk Server)有可能被分散到不同的服务器。
写入数据的过程比读取数据要复杂一些,大致分为以下8个步骤 :
客户端向元数据服务器发送写入请求。
元数据服务器与Chunk Server进行如下交互(这个过程是可选项目,只有当所需的Chunks不存在时才进行这个交互)。a. 元数据服务器指示在某些Chunk Server创建分块Chunks。b. Chunk Server告知元数据服务器,步骤a的操作成功。注:Chunk Server是相对于服务器的,而Chunks则是以磁盘分区为对象,一个Chunks就是一个MFS磁盘分配单位。
元数据服务器告知客户端,你可以在哪个Chunk Server的哪个Chunks写入数据。
向指定的Chunk Server写入数据。
与其他Chunk Server进行数据同步。同步的服务器依据设定的副本数而定,副本为2,则需同步一个ChunkServer。
Chunk Server之间同步成功。
Chunk Server告知客户端数据写入成功。
客户端告知元数据服务器本次写入完毕。
整个写入过程如下图:
与读取数据一样,MFS写入数据的过程中,数据的传输仍然不需要经过元数据服务器。