MFS分布式文件系统简介及部署

一、MFS分布式文件系统说明

1、MFS文件系统共有4个角色,分别是
管理服务器 — MasterServer
元数据日志服务器 — Metalogger
数据存储服务器 — ChunkServer
客户端 — Client
2、角色作用
管理服务器–mfsmaster:有时也称为元数据服务器,负责管理各个数据存储服务器,调度文件读写,回收文件空间以及恢复多节点拷贝。

元数据服务器-mfsmetalogger:负责备份管理服务器的变化日志,文件类型为changelog_ml.*.mfs,以便于在管理服务器出现问题时接替期进行工作。这类服务器是在mfs1.6版本后新增的服务,可以把元数据日志保留在管理服务器中,也可以单独存在一台服务器中。为保证数据的安全性和可靠性,建议单独使用一台服务器来存放元数据日志,需要注意的是,元数据日志守护进程跟管理服务器在同一个服务器,备份元数据日志服务器作为它的客户端,从管理服务器取得日志文件进行备份。实际生产环境中mfsmetalogger占用的资源非常少,可以把它装在mfschunkserver上,数量够用就行,装太多也会消耗资源。

数据存储服务器-mfschunkserver:这类是真正存储用户数据的服务器。在存储文件时,首先把文件分成块,然后把这些块在数据存储服务器之间互相复制,同时,数据存储服务器还负责连接管理服务器,听从管理服务器调度,并为客户提供数据传输。数据存储服务器可以有多个,并且数量越多,可靠性越高。MFS可用的磁盘空间也越大。

客户端-mfsclient:客户端通过fuse内核接口挂载远程服务器上所管理的数据存储服务器,使共享的文件系统和使用本地linux文件系统的效果看起来一样的。

二、环境说明

1、关闭防火墙、selinux
2、所有节点配置时间同步服务器
3、节点说明
192.168.45.11 MfsMaster
192.168.45.12 Metalogger
192.168.45.13 MfsChunkServer
192.168.45.14 MfsChunkServer
192.168.45.21 MfsClient
4、源码包下载地址:源码包下载地址是:http://ppa.moosefs.com/src/moosefs-3.0.84-1.tar.gz

三、MFS分布式文件系统搭建流程

1、MasterServer节点部署时间同步服务器;
vim /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=dhcp
ntpdate -u ntp1.aliyun.com
#n跟aliyun时间同步服务器同步时间
yum -y install chrony
#没有rpm包的话先上传
vim /etc/chrony.conf
server 192.168.45.11 iburst
#当前的授权节点
allow 192.168.45.0/24
#允许哪些客户端来同步
local stratum 10
#取消注释,当前时间授权同步服务器的权重,当有多台时间授权服务器时以谁为准
service chronyd start
chkconfig chronyd on

2、其他服务器和客户端安装chrony,启动服务;
yum -y install chrony
vim /etc/chrony.conf
server 192.168.45.11 iburst
#授权节点为时间同步服务器
service chronyd start && chkconfig chronyd on && date && date
#查看一下当前时间是否同步,第一次错误的话再date一下

3、masterserver节点部署;
rz -E
#上传MFS软件包
tar -zxf moosefs-3.0.84-1.tar.gz
yum -y install pcre pcre-devel zlib zlib-devel gcc*
#安装软件依赖
cd /root/moosefs-3.0.84
useradd mfs -s /sbin/nologin -M
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && echo $?
make && make install && echo $?
chown -R mfs.mfs /usr/local/mfs/
chmod a+x /usr/local/mfs/sbin/* && chmod a+x /usr/local/mfs/bin/*
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/ && ln -s /usr/local/mfs/bin/* /usr/local/bin/
cd /usr/local/mfs/etc/mfs
cp -a mfsmaster.cfg.sample mfsmaster.cfg
#配置文件已经很合理,所以无需修改配置文件说明
提示:在/usr/local/mfs/etc/mfs下有一堆的子配置文件,对于mfs软件不同的角色定义安装过程都是一致的,角色取决于开启什么配置文件,启动什么样的服务就是什么样的角色。

4、在masterserver指定客户端登录后的权限;
cp /usr/local/mfs/etc/mfs/mfsexports.cfg.sample /usr/local/mfs/etc/mfs/mfsexports.cfg
#复制权限配置文件
vim /usr/local/mfs/etc/mfs/mfsexports.cfg
#在文件末行添加以下内容
192.168.45.0/24 . rw,alldirs,maproot=0
#当前网段,点带面mfs根文件系统。rw.alldirs,maproot=0 表示客户端拥有的权限,权限为rw,alldirs 允许挂载任何指定的子目录,maproot 映射为root用户,password 指定客户端密码

5、添加metadata.mfs模板,启动服务,浏览器测试;
cp -a /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs
#由于mfs服务启动之前会先加载metadata.mfs文件到内存中,所以先拷贝一个模板,虽然这个文件是空的,但只要能告诉 masterserver 能加载就行,只不过是空的
mfsmaster start
#启动服务
mfscgiserv
#查看服务启动的端口和根目录所在路径
192.168.45.11:9425/mfs.cgi

说明:停止master server,安全停止master server是非常必要的,千万不要kill,而是利用自带的命令mfsmaster来安全停止master server,
mfsmaster stop,我们安装后采用默认的配置,没有做任何更改,所以默认的日志是写入/var/log/messages。

6、Metalogger节点部署
rz -E
#上传MFS软件包
tar -zxf moosefs-3.0.84-1.tar.gz
yum -y install pcre pcre-devel zlib zlib-devel gcc*
#安装软件依赖
cd /root/moosefs-3.0.84
useradd mfs -s /sbin/nologin -M
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && echo $?
make && make install && echo $?
chown -R mfs.mfs /usr/local/mfs/
chmod a+x /usr/local/mfs/sbin/*
chmod a+x /usr/local/mfs/bin/*
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
cd /usr/local/mfs/etc/mfs
cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
vim mfsmetalogger.cfg
#打开配置文件,注释并修改以下内容
META_DOWNLOAD_FREQ = 2
#元数据备份文件下载请求频率,默认是 元 24小时。值为2代表每2小时从master server上下载一个 metadata.mfs文件,当元数据服务器关闭或者故障的时候,metadata.mfs.back文件将消失,此时需要从元数据日志服务器中取得这个文件。注意,这个文件和日志文件共同使用才能恢复整个已损坏的分布式文件系统。
MASTER_HOST = 192.168.45.11
#masterserver地址
MASTER_PORT = 9419
#开启端口
mfsmetalogger start
#启动mfsmetalogger服务
cd /usr/local/mfs/var/mfs && ls
#查看是否生成增量日志和上次的完整备份
[root@CentOS-62 mfs]# cd /usr/local/mfs/var/mfs
[root@CentOS-62 mfs]# ls
changelog_ml_back.0.mfs changelog_ml_back.1.mfs metadata.mfs.empty metadata_ml.mfs.back

7、 ChunkServer节点部署
shutdown -h 0
#关机添加新硬盘
fdisk /dev/sdb
#给硬盘分区,n==>p==>1==>w
mkfs.ext4 /dev/sdb1
partprobe /dev/sdb1
#刷新,让内核重新识别新格式化的硬盘分区
mkdir /mnt/mfs
#创建挂载目录
mount -t ext4 /dev/sdb1 /mnt/mfs
#挂载
echo “/bin/mount -t ext4 dev/sdb1 /mnt/mfs” >> /etc/rc.local
#开启自动挂载
rz -E
#上传MFS软件包
tar -zxf moosefs-3.0.84-1.tar.gz
yum -y install pcre pcre-devel zlib zlib-devel gcc*
#安装软件依赖
cd /root/moosefs-3.0.84
useradd mfs -s /sbin/nologin -M
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && echo $?
make && make install && echo $?
chown -R mfs.mfs /usr/local/mfs/
chmod a+x /usr/local/mfs/sbin/*
chmod a+x /usr/local/mfs/bin/*
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
cd /usr/local/mfs/etc/mfs
cp -a mfschunkserver.cfg.sample mfschunkserver.cfg
vim mfschunkserver.cfg
MASTER_HOST = 192.168.45.11
# 指明指 masterserver 服务器地址
# MASTER_PORT = 9420
#指明指 masterserver 端口
HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg
#取消注释,这个文件中指定谁给ChunkServer提供存储
cp -a mfshdd.cfg.sample mfshdd.cfg
vim mfshdd.cfg
/mnt/mfs
#末行指定/mnt/mfsChunkServer提供存储,如果有多个写多个即可,但要换行写
chown -R mfs.mfs /mnt/mfs
#使/mnt/mfs属者属组均为mfs
mfschunkserver start
#启动mfschunkserver,可以在浏览器端mfs主页查看disk有新增

8、Client节点部署;
rz -E
#上传MFS软件包
tar -zxf moosefs-3.0.84-1.tar.gz
yum -y install fuse fuse-devel fuse-libs gcc*
#安装软件依赖,用户空间文件系统、用户空间文件系统库文件及lib库文件
yum -y install pcre pcre-devel zlib zlib-devel gcc*
cd /root/moosefs-3.0.84
useradd mfs -s /sbin/nologin -M
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver && make && make install && echo $?
chown -R mfs.mfs /usr/local/mfs/
chmod a+x /usr/local/mfs/sbin/*
chmod a+x /usr/local/mfs/bin/*
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
mkdir /mfsclient
mfsmount /mfsclient -H 192.168.45.11
#将mfs共享出来的存储空间挂载到192.168.45.21的/mfsclient目录下,-H指定指master server IP
mount
#查看挂载

9、客户端第一阶段测试;
cd /mfsclient
#切换到挂载目录
while 2>1;do echo “1” >> a.txt;done
#在此目录下循环不断写入文件
du -h && cat a.txt
#开启新的远程连接,查看文件大小及内容
mfsgetgoal a.txt
#显示当前mfs文件系统中a.txt文件默认的副本数量
mfsfileinfo a.txt
#查看当前a.txt文件实际副本数量
[root@localhost mfsclient]# mfsgetgoal a.txt
a.txt: 2
[root@localhost mfsclient]# mfsfileinfo a.txt
a.txt:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 192.168.45.13:9422 (status:VALID)

提示:因为当前文件系统只部署了1台ChunkServer节点,虽然默认goal值是2,也只能保存1个,这也提醒我们goal值不能大于ChunkServer节点数。

10、第2个ChunkServer节点部署,演示mfs文件系统无痕扩容;
shutdown -h 0
#关机添加新硬盘
fdisl /dev/sdb
#给硬盘分区,n==>p==>1==>w
mkfs.ext4 /dev/sdb1
partprobe /dev/sdb1
#刷新,让内核重新识别新格式化的硬盘分区
mkdir /mnt/mfs
#创建挂载目录
mount -t ext4 /dev/sdb1 /mnt/mfs
#挂载
echo “/bin/mount -t ext4 dev/sdb1 /mnt/mfs” >> /etc/rc.local
#开启自动挂载
rz -E
#上传MFS软件包
tar -zxf moosefs-3.0.84-1.tar.gz
yum -y install pcre pcre-devel zlib zlib-devel gcc*
#安装软件依赖
cd /root/moosefs-3.0.84
useradd mfs -s /sbin/nologin -M
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && echo $?
make && make install && echo $?
chown -R mfs.mfs /usr/local/mfs/
chmod a+x /usr/local/mfs/sbin/*
chmod a+x /usr/local/mfs/bin/*
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
cd /usr/local/mfs/etc/mfs
cp -a mfschunkserver.cfg.sample mfschunkserver.cfg
vim mfschunkserver.cfg
MASTER_HOST = 192.168.45.11
# 指明指 masterserver 服务器地址
# MASTER_PORT = 9420
#指明指 masterserver 端口
HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg
#这个文件中指定谁给ChunkServer提供存储
cp -a mfshdd.cfg.sample mfshdd.cfg
vim mfshdd.cfg
/mnt/mfs
#末行指定/mnt/mfsChunkServer提供存储,如果有多个写多个即可,但要换行写
mkdir /mnt/mfs
chown -R mfs.mfs /mnt/mfs
#使/mnt/mfs属者属组均为mfs
mfschunkserver start
#启动mfschunkserver,可以在浏览器端mfs主页查看disk有新增

11、客户端第二阶段测试;
mfsgetgoal /mfsclient/a.txt
#显示当前mfs文件系统中a.txt文件默认的副本数量
mfsfileinfo /mfsclient/a.txt
#查看当前a.txt文件实际副本数量
[root@localhost mfsclient]# mfsgetgoal a.txt
a.txt: 2
[root@localhost mfsclient]# mfsfileinfo a.txt
a.txt:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 192.168.45.13:9422 (status:VALID)
copy 2: 192.168.45.14:9422 (status:VALID)

mfssetgoal 1 /mfsclient/a.txt
#将a.txt文件goal值改为1
mfsfileinfo /mfsclient/a.txt
[root@localhost mfsclient]# mfssetgoal 1 a.txt
a.txt: goal: 1
[root@localhost mfsclient]# mfsfileinfo a.txt
a.txt:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 192.168.45.13:9422 (status:VALID)

提示:goal值为期望值,一旦文件系统中有足够多的资源支持满足期望值,少增多减,会倾向于实现期望值。

12、一些运维操作补充;
1)客户端误删除处理,垃圾回收站机制;
mfsgettrashtime /mfsclient/a.txt
#客户端查看当前mfs文件系统被删除文件的保留时间
mfssettrashtime 99999 /mfsclient/a.txt
#设置a.txt的保留时间为99999,系统以分钟为单位去检查,会自动补全至100800(1680min)
rm -rf a.txt
#客户端模拟删除文件
mkdir /back
#客户端创建找回目录,目录名自定义即可
chown mfs.mfs /back
mfsmount -m /back -H 192.168.45.11
#使用mfsmount命令挂载时,用了一个“-m” 或“-o mfsmaster”的选项,这样可以挂载一个辅助的文件系统mfsmeta,辅助文件系统可以恢复丢失的数据
cd /back && ls
#trash目录就是垃圾箱
yum -y install tree
cd /back/trash
tree . > /root/file.info
vim /root/file.info
├── 003
│ ├── 00000003|a.txt

#找到文件的所属块
cd /back/trash/
mv 003/00000003|a.txt /back/trash/undel/
cd /mfsclient && ls
[root@localhost trash]# mv 003/00000003|a.txt /back/trash/undel/
[root@localhost trash]# cd /mfsclient && ls && cat
a.txt
1

提示:批量化找回使用脚本即可

2)快照功能,可以理解为mfs中的硬链接;
mkdir bb
chown mfs.mfs bb/
mfsmakesnapshot a.txt bb/
cd bb && ls

3)冗余 goal 设置
mfssetgoal 3 /mnt/mfs/a.txt
mfssetgoal /mnt/mfs/test1
mfsfileinfo /mnt/mfs/test1

4)恢复快照模拟master数据丢失,还原 master主机;
vim /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=dhcp
ntpdate -u ntp1.aliyun.com
yum -y install chrony
vim /etc/chrony.conf
server 192.168.45.11 iburst
allow 192.168.45.0/24
local stratum 10
service chronyd start
chkconfig chronyd on
rz -E
tar -zxf moosefs-3.0.84-1.tar.gz
yum -y install pcre pcre-devel zlib zlib-devel gcc*
cd /root/moosefs-3.0.84
useradd mfs -s /sbin/nologin -M
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && echo $?
make && make install && echo $?
chown -R mfs.mfs /usr/local/mfs/
chmod a+x /usr/local/mfs/sbin/*
chmod a+x /usr/local/mfs/bin/*
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
cd /usr/local/mfs/etc/mfs
cp -a mfsmaster.cfg.sample mfsmaster.cfg
cp /usr/local/mfs/etc/mfs/mfsexports.cfg.sample /usr/local/mfs/etc/mfs/mfsexports.cfg
vim /usr/local/mfs/etc/mfs/mfsexports.cfg
#在文件末行添加以下内容
192.168.45.0/24 . rw,alldirs,maproot=0

rm -rf /usr/local/mfs/var/mfs/*
#master端删除空的备份文件
scp /usr/local/mfs/var/mfs/* root@192.168.45.11:/usr/local/mfs/var/mfs
#Metalogger端传送完整备份给master
chown mfs.mfs *
mfsmaster -a
#修复并启动服务,测试查看之前的文件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值