MFS原理
MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个服务器上,而呈现给用户的则是一个统一的资源。
MFS文件系统的组成架构:
- 元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据;
- 元数据日志服务器(Metalogger):备份Master服务器的变化日志文件,文件类型为changlog_ml.*.mfs。当Master服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行恢复;
- 数据存储服务器(Chunk Server):真正存储的数据的服务器。存储文件时,会把文件分块保存,并在数据服务器之间进行复制。数据服务器越多,能够使用的容量则越大,可靠性就越高,性能也就越好;
客户端(Client):可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。
MFS读取数据的过程:
- 客户端向元数据服务器发出读请求;
- 元数据服务器把所需数据存放的位置(ChunkServer的IP地址和Chunk编号)告知客户端;
客户端向已知的ChunkServer请求发送数据;- Chunkserver向客户端发送数据。
MFS写入数据的过程:
- 客户端向元数据服务器发送写入请求;
- 元数据服务器与ChunkServer进行交互,但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由ChunkServers告知元数据服务器操作成功;
- 元数据服务器告知客户端,可以在哪个ChunkServer的哪些Chunks吸入数据;
- 客户端向指定的ChunkServer写入数据;
- 该ChunkServer与其他ChunkServer进行数据同步,同步成功后ChunkServer告知客户端数据写入成功;
- 客户端告知元数据服务器本次写入完毕。
系统环境:
主机 | 操作系统 | IP地址 | 软件 |
---|---|---|---|
Master Server | CentOS 7.4 X86_64 | 192.168.100.131 | mfs-1.6.27-5.tar.gz |
MetaLogger Server | CentOS 7.4 X86_64 | 192.168.100.132 | mfs-1.6.27-5.tar.gz |
Chunk Server 1 | CentOS 7.4 X86_64 | 192.168.100.136 | mfs-1.6.27-5.tar.gz |
Cunk Server 2 | CentOS 7.4 X86_64 | 192.168.100.138 | mfs-1.6.27-5.tar.gz |
Client | CentOS 7.4 X86_64 | 192.168.100.135 | mfs-1.6.27-5.tar.gz、fuse-2.9.2.tar.gz |
操作步骤如下所示:
1.搭建Master Server
(1)下载源码包及安装包
#关闭防火墙及Selinux
systemctl stop firewalld.service
setenforce 0
#安装相关依赖包
yum -y install gcc gcc-c++ zlib-devel
(2)创建用户
useradd -s /sbin/nologin -M mfs
(3)安装源码包
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver \ #禁用mfschunkserver功能
--disable-mfsmount #禁用mfsmout功能
make && make install
(4)复制文件
cd /usr/local/mfs/etc/mfs
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfsexports.cfg.dist mfsexports.cfg #被挂载目录及权限配置文件
cp mfstopology.cfg.dist mfstopology.cfg #角色分布文件
(5)防溢出
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
(6)主配置文件mfsmaster.cfg和被挂载目录及权限配置文件mfsexports.cfg配置文件不需要修改
(7)启动Master Server
/usr/local/mfs/sbin/mfsmaster start
停止Master Server的命令是/usr/local/mfs/sbin/mfsmaster -s
2.搭建MetaLoggerServer
(1)下载源码包及安装包
#关闭防火墙及Selinux
systemctl stop firewalld.service
setenforce 0
#安装相关依赖包
yum -y install gcc gcc-c++ zlib-devel
(2)创建用户
useradd -s /sbin/nologin -M mfs
(3)安装源码包
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver \ #禁用mfschunkserver功能
--disable-mfsmount #禁用mfsmout功能
make && make install
(4)复制文件
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfstopology.cfg.dist mfstopology.cfg
(5)修改配置文件mfsmetalogger.cfg
vim /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
MASTER_HOST=192.168.100.131 #修改为Master Server的IP地址
(6)启动mfsmetalogger Server
/usr/local/mfs/sbin/mfsmetalogger start
3.搭建Chunk Server
两台搭建Chunk Server的步骤是相同的,其步骤如下所示:
(1)下载源码包及安装包
#关闭防火墙及Selinux
systemctl stop firewalld.service
setenforce 0
#安装相关依赖包
yum -y install gcc gcc-c++ zlib-devel
(2)创建用户
useradd -s /sbin/nologin -M mfs
(3)安装源码包
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster\ #禁用mfsmaster功能
--disable-mfsmount #禁用mfsmount功能
make && make install
(4)复制文件
cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
(5)修改配置文件mfschunkserver.cfg和mfshdd.cfg
vim /usr/local/mfs/etc/mfs/mfschunkserver.cfg
MASTER_HOST=192.168.100.131 #修改为Master Server的IP地址
..... #省略部分内容
vim /usr/local/mfs/etc/mfs/mfshdd.cfg
..... #省略部分内容
/data #添加一行/data,作为MFS的分区.生产环境最好使用独立分区或磁盘挂载到此目录
(6)创建数据目录
mkdir /data
chown -R mfs:mfs /data
(7)启动mfschunk Server
/usr/local/mfs/sbin/mfschunkserver start
4.搭建客户端
(1)下载源码包及安装包
#关闭防火墙及Selinux
systemctl stop firewalld.service
setenforce 0
#安装相关依赖包
yum -y install gcc gcc-c++ zlib-devel
(2)安装FUSE
MFS客户端依赖于FUSE
tar xzvf fuse-2.9.2.tar.gz
cd fuse-2.9.2
./configure
make && make install
设置环境变量:
vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
(3)安装MFS客户端
useradd -s /sbin/nologin -M mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster \ #禁用mfsmaster功能
--disable-mfschunkserver \ #禁用mfschunkserver功能
--enable-mfsmount #启用mfsmount功能
make && make install
(4)挂载MFS文件系统
mkdir /mnt/mfs #创建挂载点
modprobe fuse #加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.100.131 #挂载mfs
df -TH #查看挂载情况
(5)MFS常用操作
为了方便使用MFS的命令,将/usr/local/mfs/bin加入到环境变量中。
vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH #添加
source /etc/profile
mfssetgoal命令用来设置文件被复制的份数。
创建文件测试如下:
分别去2个chunkserver上查看数据目录/data,结果如下所示:
5.MFS监控
Mfscgiserv使用python编写的一个web服务器,其监听端口是9425,可以在Master Server上通过命令/usr/local/mfs/sbin/Mfscgiserv来启动,用户利用浏览器可以全面监控所有客户挂载、Chunk Server、Master Server,以及客户端的各种操作等。
在客户端上通过浏览器访问http://192.168.100.131:9425
原文地址:http://blog.51cto.com/11134648/2153228
时间: 2024-11-07 12:09:15