MFS分布式存储搭建详解
MFS分布式存储服务
MFS的作用:
MFS分布式存储的目的是为了解决在NFS的短板,多台服务器通过NFS的方式挂载共享
一个服务器的存储空间,使得NFS服务器不堪重负,经常出现超时的现象,而且NFS存在单点故障,
尽管可以使用rsync同步数据到另一台服务器上做备份,但对提高系统性能并无帮助。因此解决方案
采取MFS分布式文件系统,服务器之间的数据访问不再是一对多的关系,而是多对多的关系。
什么是分布式存储:
分布式原理:通过计算机网络和节点相连,简单的说就是把一些分散的共享文件夹集合到一个虚拟文
件夹内。对于用户来说,访问这些共享文件夹只是打开了一个虚拟文件夹,用户感受不到这些共享文件夹是分
布于各个计算机上的。分布式文件系统的好处是集中访问,简化操作,数据容灾,以及提高文件的存取性能。
MFS原理:
1)MFS文件系统的组成。
● 元数据服务器(master):在整个体系中负责管理文件系统,维护元数据。
● 元数据日志服务器(metaLogger):当MAster服务器数据丢失或者损坏是,可以从日志服务器中取得文件,进行恢复。
● 数据存储服务器(chunkserver):真正存储数据的服务器。存储文件时会把文件分块保存。
● 客户端:可以像挂载MFS文件系统一样,其操作相同。
2)MFS读取数据的处理过程。
● 客户端向元数据服务器发出请求。
● 元数据服务器把所需数据存放位置告知客户端。
●客户端向已知Chunk server请求发送数据。
●Chunk Server向客户端发送数据。
3)MFS写入数据的出来过程
● 客户端向元数据服务器发送写入请求
● 元数据服务器与Chunk Server进行交互,会在Chunk Server上创建新分块Chunks并告知元服务器。
● 元数据服务器告知客户端,可以在哪个Chunk Server的哪个分块Chunks上写入数据。
● 客户端指定Chunk Server写入数据。
● 该Chunk Server与其他Chunk Server进行数据同步,同步成功告知客户端写入成功。
● 客户端告知元数据服务器本次写入完毕。
实验拓扑如下:
本实验使用5台服务器模拟搭建MFS文件系统
实验环境:
角色类型 | 操作系统 | ip地址 | 主要软件 |
Master Server | Centos7 | 192.168.60.141 | moosefs-3.0.100-1.tar.gz |
MetaLogger Server | Centos7 | 192.168.60.136 | moosefs-3.0.100-1.tar.gz |
Chunk Server1 | Centos7 | 192.168.60.143 | moosefs-3.0.100-1.tar.gz |
Chunk Server2 | Centos7 | 192.168.60.144 | moosefs-3.0.100-1.tar.gz |
Client | Centos7 | 192.168.60.130 | fuse-2.9.2.tar.gz 、moosefs-3.0.100-1.tar.gz |
一、搭建Master Server服务器
1、解压、安装环境包
tar zxf moosefs-3.0.100-1.tar.gz -C /opt
yum install gcc gcc-c++ zlib-devel -y
2、创建用户、编译
cd /opt/moosefs-3.0.100/
useradd -s /sbin/nologin mfs #创建mfs管理用户
./configure --prefix=/usr/local/mfs \ #编译
--with-default-user=mfs \ #指定管理用户
--with-default-group=mfs \ #指定管理组
--disable-mfschunkserver \ #禁用节点
--disable-mfsmount #禁用客户端挂载
make && make install
3、复制配置文件
cd /usr/local/mfs/etc/mfs
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfstopology.cfg.dist mfstopology.cfg
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
4、优化、启动服务检测端口
ln -s /usr/local/mfs/sbin/* /usr/local/sbin #将mfs的命令放到系统中识别
mfsmaster start #启动mfsmaster
[root@localhost mfs]# netstat -ntap | grep mfs #看三个监听端口
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 42551/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 42551/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 42551/mfsmaster
二、搭建MetaLogger Server服务器
1、解压缩、安装环境包
tar zxf moosefs-3.0.100-1.tar.gz -C /opt
yum install gcc gcc-c++ zlib-devel -y
2、创建用户、编译
cd /opt/moosefs-3.0.100/
useradd -s /sbin/nologin mfs
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \ #禁用节点
--disable-mfsmount #禁用客户端挂载
make && make install
3、复制配置文件并修改
cd /usr/local/mfs/etc/mfs/
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
vim mfsmetalogger.cfg
MATER_HOST = 192.168.60.141 #找到MATER_HOST模板,ip地址指向master
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
4、优化、启动服务检测端口
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/ #将mfs的命令放到系统中识别
mfsmetalogger start #启动服务
[root@localhost mfs]# netstat -ntap | grep mfs #看下状态有没有起来
tcp 0 1 192.168.60.136:55894 220.250.64.225:9419 SYN_SENT 42707/mfsmetalogger
三、搭建Chunk节点服务器
1、解压、安装环境包
tar zxf moosefs-3.0.100-1.tar.gz -C /opt
yum install gcc gcc-c++ zlib-devel -y
2、创建用户,编译
cd /opt/moosefs-3.0.100/
useradd -s /sbin/nologin mfs
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \ #禁用master模式
--disable-mfsmount #禁用用户挂载
make && make install
3、复制配置文件并修改
cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
vim mfschunkserver.cfg
MASTER_HOST = 192.168.60.141 #找到MASTER_HOST模板,IP地址指向master
vim mfshdd.cfg
#etc.
/data #设置共享目录data,需要创建
4、创建共享目录,更改数组属主
mkdir /data
chown -R mfs.mfs /data/
5、优化、启动服务查看端口
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/ #将mfs的命令放到系统中识别
mfschunkserver start #启动服务
[root@localhost mfs]# netstat -ntap | grep mfs #看下状态有没有起来
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 42714/mfschunkserve
tcp 0 0 192.168.60.144:41774 192.168.60.141:9420 ESTABLISHED 42714/mfschunkserve
两台节点服务器的配置相同,重复操作即可。
四、搭建客户端
1、解压、安装环境包
tar zxf moosefs-3.0.100-1.tar.gz -C /opt
tar zxf fuse-2.9.2.tar.gz -C /opt/
yum install gcc gcc-c++ zlib-devel -y
2、安装配置fuse
cd /opt/fuse-2.9.2/
./configuer #编译fuse
make & make install
sed -i '$a export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' /etc/profile
source /etc/profile
cd /opt/moosefs-3.0.100/ #编译mfs
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmater \ #禁用master
--disable-mfschunkserver \ #禁用节点
--enable-mfsmount #开启用户挂载
make && make install
3、挂载
mkdir /opt/mfs #创建挂载目录
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.60.141 #挂载
df -h #查看挂载状态
192.168.60.141:9421 33G 0 33G 0% /opt/mfs
4、客户端一些简单操作
sed -i '$a export PATH=/usr/local/mfs/bin:$PATH' /etc/profile #mfs优化
source /etc/profile #刷新环境变量
cd /opt/mfs
echo "this is test" > test.txt
mfsgetgoal -r /opt/mfs #mfsgetgoal命令用来查询文件被复制的分数
mfssetgoal -r 3 /opt/mfs #mfssetgoal命令用来设置文件被复制的份数
五、MFS监控
在主服务器上开启监控
[root@localhost 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.60.141:9425 #用它给你的端口进行访问
六、yum安装MFS扩展
MFS也可以用yum进行安装,需要配置yum源
https://moosefs.com/download/ 官网各个系统的介绍,这里我介绍一下centos的安装
curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
以上两句话是配置yum仓库
master服务器yum安装操作:
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli
chunkserver服务器yum安装的操作:
yum install moosefs-chunkserver
MetaLogger Server服务器yum安装的操作:
yum install moosefs-metalogger
client端yum安装的操作:
yum install moosefs-client
修改配置文件的操作和手工编译的操作相同