企业运维实战--MFS布式文件系统(上)
前言
本章我们学习MooseFS(MFS)分布式文件管理系统。
MFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。
一、MFS组成简介
Master servers:管理服务器,在整个体系中负责管理文件系统,维护元数据,以及文件空间的回收和恢复,控制多chunk server节点的数据拷贝。
Chunk Servers:数据存储服务器,存放数据文件实体的服务器,真正存储数据的服务器,服务器越多,容量就越大,可靠性越高,性能越好。
Metaloggers:元数据日志服务器,类似Mysql的主从同步,作用是备份管理服务器master的变化的metadata信息日志文件。
Clients:客户端,挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先连接主管理服务器获取数据的metadata信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体。
二、MFS安装和部署
需要准备:
三台虚拟机server1、2、3和本机的真实主机,server1负责master、server2、3负责数据存储,真实主机负责客户端client。
server1:
准备好安装包,采用软件仓库的方式导入
cat /etc/yum.repos.d/mfs.repo
[mfs]
name=mfs
baseurl=file:///root/3.0.115
gpgcheck=0
查看软件仓库是否配置成功
yum list moosefs-*
在master主机上安装moosefs-master、moosefs-cgiserv
yum install -y moosefs-master-3.0.115-1.rhsystemd.x86_64.rpm moosefs-cgiserv-3.0.115-1.rhsystemd.x86_64.rpm
mfs主配置文件存放目录
cd /etc/mfs/
vim /etc/hosts 配置解析,使其解析到mfsmaster
172.25.9.1 mfsmaster
启动服务,查看端口
systemctl start moosefs-master
systemctl start moosefs-cgiserv.service
netstat -antlp
将安装包scp到其余数据存储服务器上
scp -r 3.0.115/ server2:
scp /etc/yum.repos.d/mfs.repo server2:/etc/yum.repos.d/
scp -r 3.0.115/ server3:
scp /etc/yum.repos.d/mfs.repo server3:/etc/yum.repos.d/
测试,firefox:172.25.9.1:9425
待server2、3配置好数据存储服务器时,查看端口使用情况
查看端口使用情况:
yum install lsof -y
lsof -i :9419
lsof -i :9420
lsof -i :9421
server2:
安装相关rpm包
yum repolist
yum install -y moosefs-chunkserver.x86_64
cd /etc/mfs/
修改配置文件,指向挂载目录
vim mfshdd.cfg
tail -n1 mfshdd.cfg
/mnt/chunk1
创建挂载目录
mkdir /mnt/chunk1
创建磁盘,分区并挂载
fdisk -l
fdisk /dev/vdb
格式化磁盘分区,并挂载
mkfs.xfs /dev/vdb1
mount /dev/vdb1 /mnt/chunk1/
df
修改挂载目录用户和用户组
chown mfs.mfs /mnt/chunk1/
编辑解析,使master指向172.25.9.1
vim /etc/hosts
head -n5 /etc/hosts
启动服务
systemctl start moosefs-chunkserver
如出现错误,则检查/mnt/chunk1是否为空文件,不为空则会失败。
测试:
firefox:172.25.9.1:9425 +server 可以看到172.25.9.2
server3操作与server2一样
yum repolist
yum install -y moosefs-chunkserver.x86_64
mkdir /mnt/chunk2
chown mfs.mfs /mnt/chunk2/
vim /etc/hosts
head -n5 /etc/hosts
cd /etc/mfs/
ls
vim mfshdd.cfg
tail -n1 mfshdd.cfg
测试
firefox:172.25.9.1:9425 +server 可以看到172.25.9.3
真实主机client端:
下载rhel8相关的client文件
yum install moosefs-client-3.0.115-1.rhsystemd.x86_64.rpm -y
编辑配置文件,指向挂载目录
cd /etc/mfs/
vim mfsmount.cfg
tail mfsmount.cfg -n1
编辑解析,同server1
vim /etc/hosts
创建目录并mfs命令挂载
mkdir /mnt/mfs
mfsmount
server1查看端口:
测试:进入目录存储文件,查看文件存储内容
cd /mnt/mfs/
mkdir dir1 dir2
ls
将dir1设定到mfs文件系统进行访问
mfssetgoal -r 1 dir1
获取副本数设定
mfsgetgoal dir1/
mfsgetgoal dir2/
查看文件信息
cd dir1
cp /etc/passwd .
mfsfileinfo passwd
cd dir2/
cp /etc/fstab .
mfsfileinfo fstab
三、客户端删除文件并恢复
将源数据挂载到客户端
mkdir /mnt/mfsmeta
mfsmount -m /mnt/mfsmeta/
cd /mnt/mfsmeta/
删除:
cd ../../mfs/dir1
ls
rm -fr passwd
寻找:
cd -
find -name *passwd*
恢复:
mv '00000004|dir1|passwd' undel/
pwd
cd /mnt/mfs/dir1
四、storage class ---->通过标签确定
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 #需要在文件目录中进行
mfssetsclass -r class2A fstab #将fstab转换存储为2A方式
mfsfileinfo fstab #查看文件fstab存储方式
2.
vim /etc/mfs/mfschunkserver.cfg
server2:LABELS = A S
server3:LABELS = B H
server4:LABELS = A H
网页查看端口设定情况
client端:
mfsscadmin create AS,2H[A+B] classAS2HAB #需要在文件目录中进行
mfssetsclass -r classAS2HAB fstab #将fstab转换存储为2A方式
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 #需要在文件目录中进行
mfssetsclass -r classABSH fstab #将fstab转换存储为2A方式
mfsfileinfo fstab #查看文件fstab存储方式
在 storage class一栏中可以看到设定变化,七天后将会改变存储方式。
五、共享文件iscsi实现mfs高可用
server3:为iscis主机,为其添加虚拟磁盘
fdisk -l
设置iscis,
yum install -y targetcli
systemctl start target
targetcli
cd backstores/block
create my_disk /dev/vdb
cd iscsi
create iqn.2021-07.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-07.org.westos:client
server1:master需要备份的机器
yum install -y iscsi-*
cd /etc/iscsi/
vim initiatorname.iscsi
cat initiatorname.iscsi
iscsiadm -m discovery -t st -p 172.25.9.3
iscsiadm -m node -l
登陆成功后会生成以下文件
cd /var/lib/iscsi/
ls
看到 server1中多了一块sda1磁盘
fdisk -l
分区并挂载
fdisk /dev/sda
mkfs.xfs /dev/sda1
mount /dev/sda1 /mnt
查看文件,并将master文件复制到iscsi的挂载目录中
cd /var/lib/mfs/
ls
cp -p * /mnt/
cd /mnt/
ls
ll
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
cat /etc/iscsi/initiatorname.iscsi
连接iscsi主机server3
iscsiadm -m discovery -t st -p 172.25.9.3
iscsiadm -m node -l
查看磁盘,多了一块sda1,将其挂载
fdisk -l
mount /dev/sda1 /var/lib/mfs/
启动master服务
cd /var/lib/mfs/
ls
systemctl start moosefs-master
启动失败,原因:master启动时,/var/lib/mfs/metadata.mfs必须存在,而启动后会变为metadata.mfs.back
修复文件
mfsmaster -a
mfsmaster stop
mfsmaster start
或者 systemctl start moosefs-master
启动成功。server1中的master备份均完成。
六、双机热备份
vim删除光标以后的内容: 大写字母 D
server1中:
修改软件仓库文件,读取镜像中的高可用插件
vim /etc/yum.repos.d/dvd.repo
查看仓库文件是否书写正确。
安装需要的模块
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
server1和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 property set stonith-enabled=false
查看默认功能
设定vip模块 监控时间间隔为30s,此处ip是未占用的ip用于mfsmaster。
pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.9.100 op monitor interval=30s
pcs status #查看状态
查看Filesystem使用方法
pcs resource describe ocf:heartbeat:Filesystem
down掉server1后vip会自动转移到server2
pcs node standby
pcs status
pcs node unstandby #启动server1
查看状态,vip不会回到server1上,配置成功。
若是回到server1上,磁盘会脑裂,坏掉。
设置集群操作前两个master关闭所有mfs服务并关闭开机自启
设定mfsdata
pcs resource create mfsdata ocf:heartbeat:Filesystem device="/dev/sda1" directory="/var/lib/mfs" fstype=xfs op monitor interval=30s
查看状态成功后,会按照状态提示挂载到某个master主机上,此处自动挂载到server1上,
遇到问题:
启动master后,强制结束进程,master不能正常启动,
原因是启动时,需要metadata.mfs 而启动后会改为metadata.mfs.back,强制结束进程无法恢复此文件。
修改启动脚本:
vim /usr/lib/systemd/system/moosefs-master.service
修改后:
reload后启动master成功
查看pcs状态
发现vip、mfsdata、mfsmaster不在同一个主机中,
解决方案:
pcs resource group add mfsgroup vip mfsdata mfsmaster
修改后查看状态
测试:
修改所有mfs主机的解析,使
172.25.9.1 解析到 mfsmaster
server1:
server2:
server3:
server4:
真实主机client:
完成后client端查看文件dir2/fstab 和dir1/passwd
down掉server2
vip mfsdata mfsmaster均迁移到server1中
再次查看文件
文件存储路径未受影响。
冲洗拉起server2,不会有任何影响操作。