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

1)MFS文件系统的组成

  • 元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据。
  • 元数据日志服务器(MetaLogger):备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。当Master服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行恢复。
  • 数据存储服务器(Chunk Server):真正存储数据的服务器。存储文件时,会把文件分块保存,并在数据服务器之间进行复制。数据服务器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。
  • 客户端(Client):可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。

2)MFS读取数据的处理过程。

  • 客户端向元数据服务器发出读请求。
  • 元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端。
  • 客户端向已知的Chunk Server请求发送数据。
  • Chunk Server向客户端发送数据。

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

  • 客户端向元数据服务器发送写入请求。
  • 元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Servers告知元数据服务器操作成功。
  • 元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据。
  • 客户端向指定的Chunks Server写入数据。
  • 该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功。
  • 客户端告知元数据服务器本次写入完毕。

实验环境

主机 IP地址 主要软件
Master Server 192.168.58.10 mfs
MetaLogger Server 192.168.58.11 mfs
Chunk Server1 192.168.58.12 mfs
Chunk Server2 192.168.58.13 mfs
Client 192.168.58.14 mfs/fuse

包下载

链接:https://pan.baidu.com/s/1rUBd1S2PNWFypk4DOBjXWQ

提取码:9ac6

搭建Master Server

环境准备

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install zlib-devel gcc gcc-c++

创建用户

[root@localhost ~]# useradd -s /sbin/nologin -M mfs

解压mfs包

[root@localhost ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfschunkserver --disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install

调整配置文件

[root@localhost ~]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@localhost mfs]# cp mfsexports.cfg.dist mfsexports.cfg 
[root@localhost mfs]# cp mfstopology.cfg.dist mfstopology.cfg
[root@localhost mfs]# cd /usr/local/mfs/var/mfs/
[root@localhost mfs]# cp metadata.mfs.empty metadata.mfs

启动Master Server

mfsmaster -s停止服务

[root@localhost ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@localhost ~]# mfsmaster start
[root@localhost ~]# netstat -anput | grep mfs
tcp      0      0 0.0.0.0:9419      0.0.0.0:*   LISTEN      9222/mfsmaster      
tcp      0      0 0.0.0.0:9420      0.0.0.0:*   LISTEN      9222/mfsmaster      
tcp      0      0 0.0.0.0:9421      0.0.0.0:*   LISTEN      9222/mfsmaster 

搭建MetaLogger Server

环境准备

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install zlib-devel gcc gcc-c++

创建用户

[root@localhost ~]# useradd -s /sbin/nologin -M mfs

解压mfs包

[root@localhost ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfschunkserver --disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install

调整配置文件

[root@localhost ~]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@localhost mfs]# vim mfsmetalogger.cfg
# 修改为master的ip
MASTER_HOST = 192.168.1.10
MASTER_PORT = 9419

启动metalogger

mfsmetalogger -s停止服务

[root@localhost ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@localhost ~]# mfsmetalogger start
[root@localhost ~]# netstat -anput | grep mfs
tcp    0   0 192.168.1.11:54654    192.168.1.10:9419   ESTABLISHED 72820/mfsmetalogger 

搭建Chunk Server1、Chunk Server2

环境准备

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install zlib-devel gcc gcc-c++

创建用户

[root@localhost ~]# useradd -s /sbin/nologin -M mfs

解压mfs包

注意这里的编译过程和之前的选项不一样

[root@localhost ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfsmaster --disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install

调整配置文件

[root@localhost ~]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@localhost mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@localhost mfs]# vim mfschunkserver.cfg
# 修改为master的ip
MASTER_HOST = 192.168.1.10
MASTER_PORT = 9419
[root@localhost mfs]# vim mfshdd.cfg
# 末尾添加
/data
# 这里的/data是一个给MFS的分区
[root@localhost mfs]# mkdir /data
[root@localhost mfs]# chown -R mfs:mfs /data

启动chunkserver

mfschunkserver -s停止服务

[root@localhost ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@localhost ~]# mfschunkserver start
[root@localhost mfs]#  netstat -anput | grep mfs
tcp   0   0 0.0.0.0:9422         0.0.0.0:*           LISTEN      16869/mfschunkserve 
tcp   0   0 192.168.1.12:37532   192.168.1.10:9420   ESTABLISHED 16869/mfschunkserve

两台chunk server的操作一模一样

Client配置

环境准备

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install zlib-devel gcc gcc-c++

创建用户

[root@localhost ~]# useradd -s /sbin/nologin -M mfs

安装FUSE

[root@localhost ~]# tar zxf fuse-2.9.2.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/fuse-2.9.2/
[root@localhost fuse-2.9.2]# ./configure && make && make install

调整环境变量

[root@localhost ~]# vim /etc/profile
# 末尾添加
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
[root@localhost ~]# source /etc/profile

安装MFS客户端

[root@localhost ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs \
--with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
[root@localhost mfs-1.6.27]# make && make install

创建挂载点并挂载

[root@localhost ~]# mkdir /opt/mfs
[root@localhost ~]# modprobe fuse  # 加载fuse到内核
[root@localhost ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@localhost ~]# ln -s /usr/local/mfs/bin/* /usr/local/bin/
# 将挂载点挂载到master主机,回映射到根目录
[root@localhost ~]# mfsmount /opt/mfs -H 192.168.1.10
[root@localhost ~]# df -hT | grep mfs
192.168.1.10:9421       fuse.mfs   83G     0   83G   0% /opt/mfs

启动监控程序

在master主机上

[root@localhost ~]# mfscgiserv 

访问master ip:9425

http://192.168.1.10:9425

mfs

上述测试访问到的MFS监控表中各部分的含义如下:

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

Server部分:列出现有的Chunk Server

Disks部分:列出每一台Chunk Server的磁盘目录及使用量

Exports部分:列出被共享的目录,即可被挂载的目录

Mounts部分:显示被挂载的情况

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

Master Charts部分:显示Master Server的操作情况,包括读取、写入、创建目录、删除目录等

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0