MFS分布式文件系统

一、实验环境

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

wKioL1mpTbXTtwzVAAAMlhQM-oU062.png

三、Mfs分布式文件系统详解

1、分布式原理

   分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,用户要访问这些文件夹的时候,只要打开一个文件夹,就可以的看到所有链接到此文件夹内的共享文件夹。

2MFS原理

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

3MFS读数据的处理过程

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

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

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

Chunk Server向客户端发送数据

4MFS的组成

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

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

数据存储服务器(Chunk Server):真正存储数据的服务器,服务器越多,容量就越大,可靠性越高,性能越好。

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

5、写入的过程

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

元数据服务器与Chunk Server进行交互,但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Servers告知元数据服务器操作成功

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

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

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

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

四、实验步骤

Master192.168.1.10

MetaLogger192.168.1.20

Chunk  1192.168.1.30

Chunk  2192.168.1.40

搭建Master  server

下载源码包及安装准备

#service   iptables   stop

#yum  -y  install  zlib-devel

创建用户

#useradd  mfs  -s  /sbin/nologin

安装源码包

#cd   /usr/src

#tar   zxf  mfs-1.6.27-5.tar.gz

#cd   mfs-1.6.27

./configure  --prefix=/usr/local/mfs  --with-default-user=mfs  --with-default-group=mfs  --disable-mfschunkserver  --disable-mfsmount  &&  make  &&  make install

复制文件

#cd /usr/local/mfs/etc/mfs

#cp  mfsmaster.cfg.dist  mfsmaster.cfg

#cp  mfsexports.cfg.dist  mfsexports.cfg

#cp  mfstopology.cfg.dist  mfstopology.cfg

#cd  /usr/local/mfs/var/mfs

#cp   metadata.mfs.empty    metadata.mfs

配置文件

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

MFS分布式文件系统_第3张图片做一个软连接

#ln  -s  /usr/local/mfs/sbin/mfsmaster  /usr/local/sbin

启动Master  server

#mfsmaster    start

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

wKiom1mpTn3AFFToAAAVVsVjxfk117.png

#mfsmaster  -s   停止 Master  Server

#ps  -ef  |  grep  mfs             //检查是否启动

搭建MetaLogger  Server

#service   iptables   stop        关闭防火墙

#yum  install  -y  gcc   gcc-c++

创建用户

#useradd  mfs   -s  /sbin/nologin

编译安装mfs

#cd    /usr/src

#tar  zxf  mfs-1.6.27-5.tar.gz

#cd mfs-1.6.27

./configure  --prefix=/usr/local/mfs  --with-default-user=mfs  --with-default-group=mfs  --disable-mfschunkserver  --disable-mfsmount  && make && make install

#cd   /usr/local/mfs/etc/mfs

#cp  mfsmetalogger.cfg.dist  mfsmetalogger.cfg

修改为master  serverIP地址

#echo "MASTER_HOST = 192.168.1.10"  >>  /usr/local/mfs/etc/mfs/mfsmetalogger.cfg

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

做软连接

#ln -s  /usr/local/mfs/sbin/mfsmetalogger  /usr/local/sbin

启动mfsmetaLogger

#mfsmetalogger   start            启动mfsmetalogger 服务

#ps   -ef  | grep  mfs           检查是否启动

wKioL1mpToPx5eE6AABMHcZhZ1M352.png搭建Chunk  Server  1,Chunk  Server  2

#service    iptables   stop

# yum  install   -y   gcc   gcc-c++  zlib-devel

创建用户

#useradd  mfs   -s  /sbin/nologin

编译安装mfs

#cd /usr/src

#tar zxf  mfs-1.6.27-5.tar.gz

#cd   mfs-1.6.27

./configure  --prefix=/usr/local/mfs  --with-default-user=mfs  --with-default-group=mfs  --disable-mfsmaster  --disable-mfsmount  && make && make install

#cd   /usr/local/mfs/etc/mfs

#cp  mfschunkserver.cfg.dist  mfschunkserver.cfg

#cp  mfshdd.cfg.dist  mfshdd.cfg

修改为master  server IP地址

#echo "MASTER_HOST = 192.168.1.10"  >>  /usr/local/mfs/etc/mfs/mfschunkserver.cfg

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

在这里/data是一个给mfs的分区,生产环境最好使用

独立分区或磁盘挂载到此目录

#echo  "/data"  >>  /usr/local/mfs//etc/mfs/mfshdd.cfg

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

创建目录

#mkdir  /data

给目录赋予属主属组的权限

#chown  -R  mfs:mfs  /data

做软连接以便启动不需绝对路径

#ln -s  /usr/local/mfs/sbin/mfschunkserver  /usr/local/sbin

#mfschunkserver  start     启动mfschunkserver服务

mfschunkserver  -s         停止mfschunkserver服务

#ps  -ef  |  grep  mfs

wKioL1mpTrbAtToaAAARuQr66jQ126.png

客户端配置

#service   iptables  stop

#yum  install    -y  gcc  gcc-c++

创建用户

#useradd  mfs   -s  /sbin/nologin

MFS依赖于FUSE,编译安装fuse

#cd    /usr/src

#tar    zxf  fuse-2.9.2.tar.gz

#cd    fuse-2.9.2

./configure  && make  &&  make install

设置环境变量

#echo "expor" PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >> /etc/profie

#source   /etc/profile

编译安装mfs客户端

#cd   /usr/src

#tar   zxf  mfs-1.6.27-5.tar.gz

#cd   mfs-1.6.27

./configure  --prefix=/usr/local/mfs  --with-default-user=mfs  --with-default-group=mfs  --disable-mfsmaster  --disable-mfschunkserver --enable-mfsmount  && make && make install

#mkdir   /zc                  创建挂接点

#modprobe  fuse              加载fuse模块到内核

挂接MFS

#/usr/local/mfs/bin/mfsmount   /zc   -H  192.168.1.10

查看挂载情况

#df -HT

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

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

#echo  "export PATH=/usr/local/mfs/bin:$PATH"   >>  /etc/profile

生产环境Chunk  server节点数量应大于2,文件副本小于等于Chunk server 服务器的数量

#mfssetgoal  -r  2  /zc     

wKioL1mpTtKh1JixAAAOCU73fgQ369.png

#mfsgetgoal   -r   /zc

wKiom1mpTx7y3nRBAAALkttaqjE347.png

创建测试文件

#cd  /zc

#touch   123
#mfsgetgoal  test

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

客户端测试访问:http://192.168.1.10:9425

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

info显示MFS的基本信息

Servers列出现有的Chunk  Server

Disks列出现有的硬盘信息

Exports:列出可被挂载的目录

Mounts列出被挂载的目录

Operations显示正在执行的操作

Master  Charts 显示Master  Server的操作情况,读,写,删除等操作。

Server  Charts显示Chunk  Server的操作情况,数据传输率及系统状态。