企业运维实战--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/hosts172.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 -ylsof -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/hosts172.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.cfgserver2:LABELS = Aserver3:LABELS = Bserver4: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.cfgserver2:LABELS = A S
server3:LABELS = B H
server4:LABELS = A Hsystemctl 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天 名字为classabshmfssetsclass -r classABSH fstab #将fstab转换存储为ABSH方式mfsfileinfo fstab #查看文件fstab存储方式
在 storage class一栏中可以看到设定变化,七天后将会改变存储方式。
5.共享文件iscsi实现mfs高可用
server4:为iscis主机,为其添加虚拟磁盘
fdisk /dev/vdb
n
p
一直enterfdisk -l #查看
设置iscis
yum install -y targetcli
systemctl start target
targetclicd 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.iscsiInitiatorName=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 *****
wmkfs.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.iscsiInitiatorName=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.serviceExecStart=/usr/sbin/mfsmaster start -a
重新加载文件
systemctl daemon-reloadsystemctl 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状态,显示开启
企业运维实战--MFS分布式文件系统相关推荐
- 《VMware vSphere企业运维实战》——2.6 使用vCenter Converter迁移物理机到虚拟机
本节书摘来自异步社区<VMware vSphere企业运维实战>一书中的第2章,第2.6节,作者:王春海著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.6 ...
- 《VMware vSphere 6.5企业运维实战》已经出版
<VMware vSphere 6.5企业运维实战>已经由人民邮电出版社出版,购买链接: https://item.jd.com/26391828617.html 本书以vSphere 6 ...
- 企业运维实战--自动化运维Saltstack(上)之saltstack的安装部署、远程执行、grains和pillar详解以及Jinja模板的使用
企业运维实战--自动化运维Saltstack(上) 前言 一.Saltstack安装部署 二.sls文件远程执行 saltstack安装httpd并启动 saltstack源码编译安装nginx 启动 ...
- 企业运维实战--Zabbix监控之结合nginx、mysql、java应用、proxy分布式、睿象云报警、API批量操作、替换mysql为tidb数据库
一.zabbix server的nginx监控 nginx部署 在server5上进行: tar zxf nginx-1.20.1.tar.gz cd nginx-1.20.1 yum install ...
- 企业运维实战--lvs之DR模式负载均衡、keepalived、lvs高可用
LVS 介绍 lvs 负载均衡( linux virtual server),linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求 ...
- 企业运维实战之k8s(HPA、Helm)初学者必看,点赞关注后期不迷路
文章目录 HPA 运行 php-apache 服务器并暴露服务 创建 Horizontal Pod Autoscale 增加负载 停止负载 Helm Helm安装 设置helm命令补齐 chart库 ...
- 企业运维实战--k8s学习笔记 k8s网络通信、Flannel vxlan模式简介、calico网络插件替换、网络策略范例总结
1.k8s网络通信 k8s通过CNI接口接入其他插件来实现网络通讯.目前比较流行的插件有flannel,calico等. CNI插件存放位置:# cat /etc/cni/net.d/10-flann ...
- 重磅!由Linux面试出发,看清华大佬教你如何企业级运维实战
其实当时没有想到去面试,只是在智联上更新了一下简历,就陆陆续续接到很多公司的邮件和电话,闲话少说,下面就分享给大家面试Linux的经历: 首先,公司HR会把公司的介绍及岗位要求发到你邮箱(或者QQ.微 ...
- 《大企业云桌面运维实战》v1.13
<大企业云桌面运维实战>-培训大纲 v1.1.3 <大企业云桌面运维实战>-授课计划 v1.1.3 链接:http://pan.baidu.com/s/1b6LxL0 密码:5 ...
- 大数据运维实战第一课 大话 Hadoop 生态圈
你好,欢迎来到<大数据运维实战>专栏. 入行以来,我从事大数据运维也有十多年了,期间我做过系统运维.DBA,也做过大数据分析师,最后选择了大数据运维方向,曾设计并管理超过千台.PB 级的数 ...
最新文章
- Linux绝对权限和相对权限法,Linux基础学习笔记
- ORACLE学习笔记--性能优化2
- 小程序完整对接 pingpp支付
- springboot的核心
- 你所不知道的 JavaScript
- Linux综合练习——课件分发
- LeetCode(1002)——查找常用字符(JavaScript)
- Win10桌面上:[ 我的电脑 ] 图标不见了
- 恒定湿热试验条件及标准-环境试验中的湿热试验报告
- 网卡,交换机和路由器
- (原創) 如何設計除頻器? (SOC) (Verilog) (MegaCore)
- Emacs footnote 自动排序
- SQL SERVER 经典语句大全必学(3)——技巧篇
- 常见路由器开源系统(固件)简介
- 让你一步步成为运维专家之各种运维脚本
- 1949. 坚定的友谊
- js html占位符,JavaScript占位符
- matlab二维三维图形绘制和坐标轴范围设置
- 新一代超高精度双回路张力控制器
- 获取UNIX系统时间
热门文章
- r语言nonzerocoef函数_文献汇报||Lasso方法在肿瘤基因位点筛选中的应用
- 树莓派开启SSH、VNC远程桌面、开启root账号以及换国内镜像源码等
- 老板杜绝员工上班不务正业
- WIN10下删除Hiberfil.sys文件
- php强类型作用,强类型php性能很彪悍
- Financial crime in times of Covid-19 – AML and cyber resilience measures 整理
- Crime and Punishment
- Windows软件之——RocketDock之无法拖放图标到dock栏
- 计算机体系结构 第一章 计算机系统结构的基础知识(2)
- 大学生php实训总结_php实训报告.doc