几台Web服务器通过NFS共享一个存储,在业务功能上满足需求,但在性能与容量上NFS无法胜任更高的要求。MFS即moosefs,可以提供容量PB级别的共享存储,无需昂贵的专业硬件服务器,自身拥有冗余功能及动态扩容功能,保证数据的安全性。

工作原理:

分布式原理

分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,用户要访问这些文件夹的时候,只要打开一个文件夹,就可以的看到所有链接到此文件夹内的共享文件夹。分布式文件系统的好处是集中访问、简化操作、数据容灾、提高文件存取性能

MFS原理

MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。

(1)MFS文件系统的组成

元数据服务器(Master:在整个体系中负责管理文件系统,维护元数据,目前不支持高可用。

元数据日志服务器(MetaLogger:备份Master服务器的变化日志文件,文件类型为change_ml.*.mfs。当master服务器损坏,可以从日志服务器中取得文件恢复。

数据存储服务器(Chunk Server真正存储数据的服务器。存储文件时,会把文件分块保存,并在服务器之间复制,数据服务器越多,容量就越大,可靠性越高,性能越好。

客户端(Client: 可以像挂载NFS一样 挂载MFS文件系统。

MFS分布式文件系统_第1张图片


(2)MFS读取数据的出路过程

   客户端向元数据服务器发出读请求

   元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端

   客户端向已知的Chunk Server请求发送数据

   Chunk Server向客户端发送数据

(3)MFS写入数据的处理过程

   客户端向元数据服务器发送写入请求

   元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Servers告    知元数据服务器操作成功

   元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据

   客户端向指定的Chunk Server写入数据

   该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功

   客户端告知元数据服务器本次写入完毕

案例实施

实验拓扑

MFS分布式文件系统_第2张图片

实验过程

  1. 搭建Master Server

(1)关闭防火墙、安装支持软件

2018-03-04_155830.png

(2)创建用户

2018-03-04_155857.png

(3)安装源码包

MFS分布式文件系统_第3张图片

(4)复制文件

MFS分布式文件系统_第4张图片


2018-03-04_160607.png

(5)配置文件

需要用到的配置文件有两个:mfsmaster.cfg(主配置文件)和mfsexports.cfg(被挂载目录及权限配置文件)

mfsmaster.cfg文件常用参数如下

MFS分布式文件系统_第5张图片

MFS分布式文件系统_第6张图片

mfsexports.cfg文件参数合适如下

MFS分布式文件系统_第7张图片

该文件,每一个条目分为三个部分

 第一部分:客户端IP地址

 第二部分:被挂载的目录

 第三部分:客户端拥有的权限

地址可以指定几种表现形式

  *代表所有的IP地址

  n.n.n.n单个ip地址

  n.n.n.n/b IP网络地址/位数掩码

  n.n.n.n/m.m.m.m IP网络地址/子网掩码

  f.f.f.f-t.t.t.t IP

目录部分的标示如下

 / 标示MFS

 . 表示MFSMETA文件系统

权限部分如下所示

 ro——只读模式共享

 rw——读写模式共享

 alldirs——允许挂载任何指定的子目录

 maproot——映射为root,还是普通用户

 password——指定客户端的密码

以上就是对mfsmaster.cfgmfsexport文件的解释,默认就是最好的,不需要做任任何修改。

(6)启动Master Server

第一遍启动的时候,可能会出现以下错误信息

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  start

loading sessions ... file not found         

         如果出现以上信息,则关闭服务并重新启动就可以了

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  -s

         -s 表示停止服务

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  start

         再启动就不会出现任何信息

MFS分布式文件系统_第8张图片


停止Master Server的命令是/usr/local/mfs/sbin/mfsmaster -s

2.搭建Metalogger Server

(1)关闭防火墙、安装支持软件,创建用户、安装源码包

MFS分布式文件系统_第9张图片

(2)复制文件

MFS分布式文件系统_第10张图片

(3)修改配置文件

2018-03-04_161457.png

MFS分布式文件系统_第11张图片

(4)启动服务

MFS分布式文件系统_第12张图片

停止Metalogger Server的命令是/usr/local/mfs/sbin/mfsmetalogger -s

3.搭建Chunk Server(两台Chunk Server操作一样)

(1)关闭防火墙、安装支持软件,创建用户、安装源码包

MFS分布式文件系统_第13张图片

(2)复制文件

MFS分布式文件系统_第14张图片

(3)修改配置文件

2018-03-04_162040.png

MFS分布式文件系统_第15张图片


2018-03-05_120110.png

MFS分布式文件系统_第16张图片

(4)创建文件,并设置权限

2018-03-05_120254.png

(5)开启服务

MFS分布式文件系统_第17张图片

停止Chunk Server的命令是/usr/local/mfs/sbin/mfschunkserver -s

4.客户端设置

2018-03-04_171017.png

(1)安装fuse

2018-03-04_171027.png

然后设置环境变量

2018-03-04_171130.png

MFS分布式文件系统_第18张图片

立即生效

2018-03-04_171236.png

(2)安装MFS客户端

MFS分布式文件系统_第19张图片

(3)挂载MFS文件系统

MFS分布式文件系统_第20张图片

MFS分布式文件系统_第21张图片

如果要卸载MFS,使用命令umount /mnt/mfs即可

(4)MFS常用操作

MFS客户端安装完毕后,会生成/usr/local/mfs/bin/目录,在这个目录下有很多命令是用户所需的。为了方便使用这些命令,可将/usr/local/mfs/bin加入到环境变量中。

2018-03-04_171130.png

MFS分布式文件系统_第22张图片

2018-03-04_171236.png

mfsgetgoal命令用来查看文件被复制的分数,利用-r命令可以对整个目录进行递归,goal是指文件比复制的分数

2018-03-04_172023.png

命令mfssetgoal用来设置文件被复制的分数,生产环境下Chunk server节点数量应大于2,文件副本数小于等于Chunk server服务器的数量。

MFS分布式文件系统_第23张图片

创建文件测试如下

MFS分布式文件系统_第24张图片

分别打开两台Chunk Server,查看/data文件,都产生了加密数据,说明成功了

MFS分布式文件系统_第25张图片


5.MFS监控

mfscgiserv是用python编写的一个web服务器,其监听端口是9425,可以再masster server 上通过 /usr/local/mfs/sbin/mfscgiserv来启动,用户利用浏览器就可以完全监控所有客户挂接、Chunk serverMaster server,以及客户端的各种操作等。

在Master Server开启Mfscgiserv

2018-03-04_172332.png

在客户端上通过浏览器访问http://192.168.1.1:9425

MFS分布式文件系统_第26张图片

其中各部分的含义如下:

Info部分:显示了MFS的基本信息

Server部分:列出现有Chunk Server

Disks部分:列出现有Chunk Server硬盘信息

Exports部分:列出可被挂载的目录

Mounts部分:列出被挂载的目录

Operations部分:显示正在执行的操作

Master charts部分:显示Master Server的操作情况,读、写、删除等操作

Server charts部分:显示Chunk Server的操作情况、数据传输率及系统状态

6.MFS维护及灾难恢复

1).MFS集群的启动与停止

MFS集群的启动顺序如下

1)启动mfsmaster进程

2)启动所有的mfsChunkserver进程

3)启动mfsmetalogger进程

4)在所有客户端上挂载NFS文件系统

MFS集群的停止顺序如下

1)在所有客户端卸载MFS文件系统

2)用mfschunkserver -s停止Chunkserver进程

3)用mfsmetalogger -s停止mfsmetalogger进程

4)用mfsmaster -s停止mfsmaster进程

2).MFS灾难恢复

整个MFS体系中,直接断电只有master server进程有可能无法启动,可以在master上使用命令/usr/local/mfs/sbin/mfsmetarestore -a修复

MFS元数据通常有两部分的数据,分别如下

(1)主要元数据文件metadata.mfs,当mfsmaster运行时会被命名为metadata.mfs.back。

(2)元数据改变日志 changelog.*.mfs,存储了过去N小时的文件变更。

在Master发生故障时,可以从Metalogger中恢复Master,步骤如下

(1)安装一台mfsmaster,利用同样的配置来配置这台mfsmaster,mfsmaster进程先不要启动

(2)将metalogger上/usr/local/mfs/var/mfs/目录下所有文件复制到mfsmaster相应的目录中

MFS分布式文件系统_第27张图片

(3)利用mfsmetarestore命令合并元数据changelogs

MFS分布式文件系统_第28张图片

(4)开启Master Server

注意:如果是全新安装的master,恢复数据后,需要更改metaloggerchunkserver,配置MASTER_HOSTip地址,客户端也需要重新挂载mfs目录。