CentOS7环境下搭建MFS分布式文件系统
MFS原理
MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
MFS文件系统组成介绍
角色 | 作用 |
元数据服务器(Master) | 一台管理整个文件系统的独立主机,存储着每个文件的元数据(文件的大小、属性、位置信息,包括所有非常规文件的所有信息,例如目录、套接字、管道以及设备文件)。 |
元数据日志服务器 (Metalogger) | 任意数量的服务器,用来存储元数据变化日志并周期性下载主要元数据文件,以便用于管理服务器意外停止时好接替其位置。 |
数据存储服务器(chunk servers) | 任意数目的商用服务器,用来存储文件数据并在彼此之间同步(如果某个文件有超过一个备份的话)。 |
客户端(Client) | 任意数量的主机,可以通过mfsmount进程与管理服务器(接收和更改元数据)和数据服务器(改变实际文件数据)进行交流。 |
MFS文件系统组成图示
MFS读取数据处理过程:
Client向Master发出读请求
Master把所需的数据存放位置(Chunk IP&Chunk No.)告知Client
Client向Chunk发送数据请求
Chunk向Client发送数据
MFS写入数据处理过程:
Client向Master发出写入请求
Master与Chunk进行交互,但Master只在某些服务器创建新的分块Chunks,创建成功后由Chunk告知Master创建成功
Master告知Client可以在哪个Chunk的哪些Chunks写入数据
Client向指定的Chunk写入数据
Chunk与其他Chunk进行数据同步,同步成功后Chunk告知Client写入数据成功
Client告知Master本次写入完毕
实验环境介绍:
192.168.218.156
主机 | IP地址 |
Master Server | 192.168.218.130 |
MetaLogger Server | 192.168.218.157 |
Chunk1 Server | |
Server | 192.168.218.145 |
Client Server | 192.168.218.139 |
实验步骤:
安装master server:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \ #禁用Chunk功能
--disable-mfsmount #禁用Client功能
make && make install
cd /usr/local/mfs/etc/mfs/
cp mfsexports.cfg.dist mfsexports.cfg #使挂载权限配置文件生效
cp mfsmaster.cfg.dist mfsmaster.cfg #使master主配置文件生效
cp mfstopology.cfg.dist mfstopology.cfg #使拓扑架构感知配置文件生效
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs # 使防断链文件生效
/usr/local/mfs/sbin/mfsmaster start
systemctl stop firewalld.service
setenforce 0
netstat -ntap | grep mfs
#/usr/local/mfs/sbin/mfsmaster -s #停止服务
搭建MetaLogger server:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/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 #使日志配置文件生效
vim mfsmetalogger.cfg
MASTER_HOST = 192.168.218.130 #指定Master服务器地址
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs #使防断链文件生效
/usr/local/mfs/sbin/mfsmaster start
systemctl stop firewalld.service
setenforce 0
搭建两台Chunk服务器:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/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 #使chunk配置文件生效
cp mfshdd.cfg.dist mfshdd.cfg #使硬盘提供存储空间配置文件生效
vim mfschunkserver.cfg
MASTER_HOST = 192.168.218.130
vim mfshdd.cfg
/data
mkdir /data
chown -R mfs.mfs /data/
/usr/local/mfs/sbin/mfschunkserver start #启动服务
systemctl stop firewalld.service
setenforce 0
netstat -ntap | grep mfs
Client配置
systemctl stop firewalld.service
setenforce 0
yum install gcc gcc-c++ zlib-devel -y
tar zxvf fuse-2.9.2.tar.gz -C /opt #内核加载包
cd /opt/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
安装mfs客户端
useradd -s /sbin/nologin mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/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 /opt/mfs
modprobe fuse #加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.218.130 #挂载MFS服务
优化客服端
vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
source /etc/profile
echo 'this is test!' > /opt/mfs/abc.txt
mfssetgoal -r 2 /opt/mfs #设置文件被复制的份数,-r表示递归
/opt/mfs:
inodes with goal changed: 2
inodes with goal not changed: 0
inodes with permission denied: 0
mfsgetgoal -r /opt/mfs #查看复制文件的份数
/opt/mfs/abc.txt: 2
mfsfileinfo /opt/mfs/abc.txt #查看实际副本份数及其所在的节点
/opt/mfs/abc.txt:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 192.168.218.145:9422
copy 2: 192.168.218.156:9422
MASTER-Server----------------启动监控程序
[root@master mfs]# /usr/local/mfs/sbin/mfscgiserv
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)
访问:http://192.168.218.130:9425查看MFS监控网页