企业运维实战--MFS分布式文件系统

MFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。

1.MFS组成简介

Master servers:管理服务器,在整个体系中负责管理文件系统,维护元数据,以及文件空间的回收和恢复,控制多chunk server节点的数据拷贝。
Chunk Servers:数据存储服务器,存放数据文件实体的服务器,真正存储数据的服务器,服务器越多,容量就越大,可靠性越高,性能越好。
Metaloggers:元数据日志服务器,类似Mysql的主从同步,作用是备份管理服务器master的变化的metadata信息日志文件。
Clients:客户端,挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先连接主管理服务器获取数据的metadata信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体。

2.MFS安装和部署

需要准备:
三台虚拟机server1、2、3和本机的真实主机,server1负责master、server2、3负责数据存储,真实主机负责客户端client。

server1:

进入官网 https://moosefs.com/download/

curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo

编辑他

[MooseFS]
name=MooseFS $releasever - $basearch
baseurl=http://ppa.moosefs.com/moosefs-3/yum/el7
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
enabled=1

在master主机上安装

yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli

vim /etc/hosts 配置解析,使其解析到mfsmaster

172.25.76.1 mfsmaster

启动服务,查看端口

systemctl start moosefs-master
systemctl start moosefs-cgiserv.service
netstat -antlp

在这里插入图片描述

将yum到其余数据存储服务器上

 scp /etc/yum.repos.d/MooseFS.repo server2:/etc/yum.repos.d/
 scp /etc/yum.repos.d/MooseFS.repo server3:/etc/yum.repos.d/

测试,firefox:172.25.76.1:9425
在这里插入图片描述

server2:

安装相关rpm包

yum install -y moosefs-chunkserver.x86_64

修改配置文件,指向挂载目录

cd /etc/mfs/
vim mfshdd.cfg

/mnt/chunk1 #在最下面写下

创建挂载目录

mkdir /mnt/chunk1

创建磁盘,分区并挂载

fdisk -l

在这里插入图片描述
格式化磁盘分区,并挂载

mkfs.xfs /dev/vdb1
mount /dev/vdb1 /mnt/chunk1/
blkid #查看uuid
vim /etc/fstab

在这里插入图片描述
修改挂载目录用户和用户组

chown mfs.mfs /mnt/chunk1/

编辑解析,使master指向172.25.76.1

vim /etc/hosts

172.25.76.1 server1 mfsmaster

启动服务

systemctl start moosefs-chunkserver

如出现错误,则检查/mnt/chunk1是否为空文件,不为空则会失败。

server3操作与server2一样

查看
firefox:172.25.76.1:9425 +server 可以看到172.25.76.3

在这里插入图片描述

server2、3配置好数据存储服务器时,查看端口使用情况
查看端口使用情况:

yum install lsof -y

lsof -i :9419
lsof -i :9420
lsof -i :9421

在这里插入图片描述

真实主机client端:

下载rhel8相关的client文件

yum install moosefs-client -y

编辑配置文件,指向挂载目录

cd /etc/mfs/
vim mfsmount.cfg

/mnt/mfs

编辑解析,同server1

vim /etc/hosts

172.25.76.1 server1 mfsmaster

创建目录并mfs命令挂载

mkdir /mnt/mfs
mfsmount

在这里插入图片描述

server1查看端口:
在这里插入图片描述
测试:进入目录存储文件,查看文件存储内容

cd /mnt/mfs/
mkdir dir1 dir2

将dir1设定到mfs文件系统进行访问

mfssetgoal -r 1 dir1
在这里插入图片描述
获取副本数设定

mfsgetgoal dir1/
mfsgetgoal dir2/

在这里插入图片描述
查看文件信息

cd dir1
cp /etc/passwd .
mfsfileinfo passwd

在这里插入图片描述

cd dir2/
cp /etc/fstab .
mfsfileinfo fstab

在这里插入图片描述

3.客户端删除文件并恢复

将源数据挂载到客户端

mkdir /mnt/mfsmeta
mfsmount -m /mnt/mfsmeta/

在这里插入图片描述
删除:

cd ../mfs/dir1
rm -fr passwd

寻找

cd /mnt/mfsmeta/
cd trash/
find -name *passwd*

在这里插入图片描述
恢复:

mv '00000004|dir1|passwd' undel/
cd /mnt/mfs/dir1
ls

在这里插入图片描述

4.storage class ---->通过标签确定

4.1什么是label

label是可以被分配给chunkserver的字母(a~z,26个字母可选),每个chunkserver可以被打上多个标签(即标记上多个字母,但最多可以打26个label)

完整的label表达式可以由多个子表达式构成,每个子标签之间用逗号分隔。每个子表达式特指文件副本的一种存储模式。子表达式可以为星号*或一个label schema。

label schema可以是一个label或由加法、乘法和括号构成的复杂表达式。

加法是逻辑“或”的含义,即文件的副本可以被存放在任意含有加法元素label的chunkserver上。例如,一个文件的storage class是a+b+c,那么任何含有a、b或c标签的chunkserver都可以用来存储该文件的副本。

乘法是逻辑“与”的含义,即文件的副本仅可以存放在包含所有label的chunkserver上。例如,一个文件的storage class是abc,那么只有当一台chunkserver同时含有abc三个标签时,它才能用于存放该文件的副本。

相同的子表达式可以通过在表达式前加数字的方式来表示,而不用重复显示声明多次。

标签表达式示例:

A,B –文件将有两个副本,一个副本将存储在带有标签A的chunkserver上,另一个位于chunkserver上,标签为B
A,* –文件将有两个副本,一个副本将存储在带有标签A的chunkserver上,任何chunkserver上的另一个
*,*–文件将有两个副本,存储在任何chunkserver上(每个副本存储的chunkserver不同)
AB,C+D–文件将有两个副本,一个副本将存储在具有标签A和B(标签的乘法)的chunkserver上,另一个副本将存储在具有标签A或B(标签的乘法)d的chunkserver上
A,B[X+Y],C[X+Y]–文件将有三个副本,一个副本将存储在任何具有标签A的chunkserver上,第二个副本将存储在任何具有B标签和X或Y标签的chunkserver上,第三个将存储在任何具有C标签和X或Y标签的chunkserver上
A,A表达式等于2A表达式
A,BC,BC,BC表达式等同于A,3BC表达式
*,*表达式等于2*表达式等于2表达式

4.2范例

1.分别设定chunk端的标签

vim /etc/mfs/mfschunkserver.cfg

server2:LABELS = A

server3:LABELS = B

server4:LABELS = A

每次修改都需要reload服务

systemctl reload moosefs-chunkserver.service

client端

mfsscadmin create 2A class2A  #创建StorageClass 需要在文件目录中进行   2A为标签表达式,class2A为名称
#可通过 mfsscadmin list 查看storageclass
mfssetsclass -r class2A fstab #将fstab转换存储为2A方式
mfsfileinfo fstab #查看文件fstab存储方式

在这里插入图片描述
4.2

vim /etc/mfs/mfschunkserver.cfg

server2:LABELS = A S
server3:LABELS = B H
server4:LABELS = A H

systemctl reload moosefs-chunkserver.service

网页查看端口设定情况
在这里插入图片描述

client端:

mfsscadmin create AS,2H[A+B] classAS2HAB   #需要在文件目录中进行

mfssetsclass -r classAS2HAB fstab   #将fstab转换存储为AS2HAB方式

mfsfileinfo fstab #查看文件fstab存储方式

在这里插入图片描述

可以看到fstab根据设定改变了其存储方式

server2:LABELS = A S
server3:LABELS =  A B H S
server4:LABELS = A H

在这里插入图片描述

client端:

mfsscadmin create -C 2AS -K AS,BS -A AH,BH -d 7 classABSH  #需要在文件目录中进行 -C create的设定 设置天数为7天 名字为classabsh
 
mfssetsclass -r classABSH fstab #将fstab转换存储为ABSH方式

mfsfileinfo fstab #查看文件fstab存储方式

在这里插入图片描述

在 storage class一栏中可以看到设定变化,七天后将会改变存储方式。
在这里插入图片描述

5.共享文件iscsi实现mfs高可用

server4:为iscis主机,为其添加虚拟磁盘
在这里插入图片描述

fdisk /dev/vdb
n
p
一直enter

fdisk -l #查看

在这里插入图片描述

设置iscis

yum install -y targetcli
systemctl start target
targetcli

cd backstores/block
create my_disk /dev/vdb
cd iscsi
create iqn.2021-11.org.westos:target1
cd iqn.2021-07.org.westos:target1/tpg1/luns
create /backstores/block/my_disk
/iscsi/iqn.20...et1/tpg1/acls> create iqn.2021-11.org.westos:client

在这里插入图片描述

server1:
master需要备份的机器

yum install -y iscsi-*
cd /etc/iscsi/
vim initiatorname.iscsi

InitiatorName=iqn.2021-11.org.westos:client
iscsiadm -m discovery -t st -p 172.25.76.4
iscsiadm -m node -l

登陆成功后会生成以下文件
cd /var/lib/iscsi/
在这里插入图片描述
看到 server1中多了一块sda1磁盘
分区并挂载

fdisk /dev/sda
n
p
enter *****
w

mkfs.xfs /dev/sda1
mount /dev/sda1 /mnt

查看文件,并将master文件复制到iscsi的挂载目录中
做到这一步实际上mfs系统文件并没有同步过来,因为我们应该先关闭服务,再拷贝文件到目录中再挂载这个目录,因为服务关闭时会生成一个不同的文件metadata.mfs(原始镜像文件)

cd /var/lib/mfs/
cp -p * /mnt/
cd /mnt/
chown mfs.mfs /mnt/ -R
umount /mnt/

server2:负责备份server1中的master信息

yum install -y moosefs-master.x86_64

下载iscsi相关安装包

yum install -y iscsi-*

配置iscsi

vim /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2021-11.org.westos:client

连接iscsi主机server4

iscsiadm -m discovery -t st -p 172.25.76.4
iscsiadm -m node -l

在这里插入图片描述

查看磁盘,多了一块sda1,将其挂载

mount /dev/sda1 /var/lib/mfs/ #挂载mfs的数据目录到共享存储上

启动master服务

cd /var/lib/mfs/
systemctl start moosefs-master

这时如果出现报错则

mv metadata.mfs.back metadata.mfs

开启服务之后/var/lib/mfs里面的文件为:metadata.mfs.back
而关闭服务之后,文件变为metadata.mfs
但是现在关闭服务之后,文件为metadata.mfs.back,所以开启服务的时候会报错,所以改名字,开启服务
启动成功。server1中的master备份均完成。

6.双机热备份

vim删除光标以后的内容: 大写字母 D

server1中:
修改软件仓库文件,读取镜像中的高可用插件

vim /etc/yum.repos.d/dvd.repo

[dvd]
name=rhel7.6
baseurl=http://172.25.76.250/rhel7.6
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.76.250/rhel7.6/addons/HighAvailability
gpgcheck=0

安装需要的模块

yum install -y pacemaker pcs psmisc policycoreutils-python

设置server1与server2免密登陆

ssh-keygen
ssh-copy-id server2

将仓库文件scp给server2,并且在server1中通过ssh远程安装需要的部分,并远程开启服务pcsd

ssh server2 yum install -y pacemaker pcs psmisc policycoreutils-python
systemctl enable --now pcsd.service 
ssh server2 systemctl enable --now pcsd.service 

server1和server2均设定需要认证的用户和密码

echo westos | passwd --stdin hacluster
ssh server2 'echo westos | passwd --stdin hacluster'

认证server1和server2

pcs cluster auth server1 server2

在这里插入图片描述

设置server1和server2为mycluster集群

pcs  cluster setup  --name mycluster server1 server2

在这里插入图片描述

启动集群

pcs cluster  start --all
pcs cluster  enable --all
pcs status #查看状态

在这里插入图片描述

设定后警告取消

pcs property set stonith-enabled=false

查看默认功能

pcs resource standards

设定vip模块 监控时间间隔为30s,此处ip是未占用的ip用于mfsmaster。

pcs resource  create vip ocf:heartbeat:IPaddr2 ip=172.25.76.100 op monitor interval=30s
pcs status #查看状态

在这里插入图片描述

查看Filesystem使用方法

pcs resource describe ocf:heartbeat:Filesystem

在这里插入图片描述

当我们进行 standby unstandby操作时 server不会被调度回去
若是回到server1上,磁盘会脑裂,坏掉。

设置集群操作前两个master关闭所有mfs服务并关闭开机自启
server1:

systemctl stop moosefs-master.service 
systemctl disable moosefs-master.service 

server2:

systemctl stop moosefs-master.service 
umount /var/lib/mfs/

设定mfsdata

pcs resource  create mfsdata ocf:heartbeat:Filesystem device="/dev/sda1" directory="/var/lib/mfs" fstype=xfs  op monitor interval=30s

查看状态成功后,会按照状态提示挂载到某个master主机上,此处自动挂载到server1上,
在这里插入图片描述

pcs resource create mfsmaster systemd:moosefs-master op monitor interval=60s

发现vip、mfsdata、mfsmaster不在同一个主机中,
解决方案:

pcs resource  group  add mfsgroup vip mfsdata mfsmaster

修改后查看状态
在这里插入图片描述

测试:
修改所有mfs主机的解析,使
172.25.76.100 解析到 mfsmaster
server1234 与真机都需要更改

完成后client端查看文件dir2/fstab 和dir1/passwd
在这里插入图片描述

down掉server1
server1:

pcs node standby

vip mfsdata mfsmaster均迁移到server2中
在这里插入图片描述
再次查看文件
文件存储路径未受影响。
冲洗拉起server1,不会有任何影响操作。

pcs node unstandby

7.报错排错

第一天搞完实验直接关机了
第二天在想起mfs 发现起不来并报错
在这里插入图片描述
使用脚本文件启动服务:

/usr/sbin/mfsmaster start -a

查看端口:发现9419/9420/9421的端口都被打开了
在这里插入图片描述

但是此时查看moosefs-master.service状态发现是failed的状态
在这里插入图片描述
进入系统的服务文件

vim /usr/lib/systemd/system/moosefs-master.service

ExecStart=/usr/sbin/mfsmaster start -a

在这里插入图片描述
重新加载文件

systemctl daemon-reload

systemctl start moosefs-master #还是会有报错

查看日志,报错信息
cat’t start :lockfile is already locked by another process

这是因为之前已经使用脚本文件已经启动过一次了,现在使用systemctl start moosefs-master,就会出现报错 但是用脚本文件/usr/sbin/mfsmaster stop-a关闭,他会报错

因此需要查看进程,输入:ps aux ,使用进程直接将其进程杀死:kill -9 【mfsmaster进程号】
再次启动 systemctl restart moosefs-master

此时查看master状态,显示开启
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lll_cf

喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值