MooseFS的工作原理分析
MooseFS(下面统一称为MFS)由波兰公司Gemius SA于2008年5月30日正式推出的一款Linux下的开源存储系统,是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、高可靠性和持久性。它能够将文件分布存储于不同的物理机器上,对外却提供的是一个透明的接口的存储资源池。它还具有在线扩展、文件切块存储、节点无单点故障、读写效率高等特点。
MFS分布式文件系统由元数据服务器(Master Server)、元数据日志服务器(Metalogger Server)、数据存储服务器(Chunk Server)、客户端(Client)组成。
MFS文件系统结构图
(1)元数据服务器:MFS系统中的核心组成部分,存储每个文件的元数据,负责文件的读写调度、空间回收和在多个chunk server之间的数据拷贝等。目前MFS仅支持一个元数据服务器,因此可能会出现单点故障。针对此问题我们需要用一台性能很稳定的服务器来作为我们的元数据服务器,这样可以降低出现单点故障的概率。
(2) 元数据日志服务器:元数据服务器的备份节点,按照指定的周期从元数据服务器上将保存元数据、更新日志和会话信息的文件下载到本地目录下。当元数据服务器出现故障时,我们可以从该服务器的文件中拿到相关的必要的信息对整个系统进行恢复。
此外,利用元数据进行备份是一种常规的日志备份手段,这种方法在某些情况下并不能完美的接管业务,还是会造成数据丢失。此次将采用通过iSCSI共享磁盘对元数据节点做双机热备。
(3) 数据存储服务器:负责连接元数据管理服务器,听从元数据服务器的调度,提供存储空间,并为客户端提供数据传输,MooseFS提供一个手动指定每个目录的备份个数。假设个数为n,那么我们在向系统写入文件时,系统会将切分好的文件块在不同的chunk server上复制n份。备份数的增加不会影响系统的写性能,但是可以提高系统的读性能和可用性,这可以说是一种以存储容量换取写性能和可用性的策略。
(4) 客户端:使用mfsmount的方式通过FUSE内核接口挂接远程管理服务器上管理的数据存储服务器到本地目录上,然后就可以像使用本地文件一样来使用我们的MFS文件系统了。
MFS读写原理
1.MFS读数据过程
MFS读过程
MFS读文件工作步骤:
① MFS客户端向系统的元数据管理服务器提交读取文件的任务请求;
② 元数据服务器检索自己的数据并把数据所存放的位置发给客户端;
③ 客户端接收到元数据管理服务器返回的信息后,向已知的数据存储服务器发送数据请求。
2.MFS写数据过程
MFS写文件工作步骤:
① MFS的客户端有数据写需求时,首先向元数据管理服务器提交些文件的任务请求;
② 元数据管理服务器接收到客户端请求后在数据服务器创建新的Chunk文件块;
③ 数据服务器将创建成功的消息返回给元数据管理服务器;
④ 元数据管理服务器将数据服务器的地址返回给客户端;
⑤ 客户端直接向已知的数据服务器写数据;