拓冰建站拓冰建站
首页 / 资讯中心 / 正文

MooseFs

一、部署分布式文件系统添加moosefs的repo源每个节点都需要[rootserver1 ~]# curl https://repository.moosefs.com/RPM-GPG-KEY-MooseFS /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS[rootserver1 ~]# curl https://repository.moosefs.com/MooseFS-4-el9.repo /etc/yum.repos.d/MooseFS.repo每个节点分别安装每个节点需要的软件master节点[rootserver1 ~]# yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-clichunkserver节点[rootserver2 ~]# yum install install moosefs-chunkserver[rootserver3 ~]# yum install install moosefs-chunkserverclient节点[rootserver4 ~]# yum install moosefs-client每个节点都添加解析方便后面挂载和操作1.1 master节点部署先开启gui再开启master[rootserver1 ~]# systemctl enable --now moosefs-gui.service[rootserver1 ~]# systemctl enable --now moosefs-master.service浏览器访问没有问题1.2 chunkserver节点部署chunkserver分别添加一块新的硬盘记得关机添加否则会将引导硬盘换成你新添加的硬盘新添加的硬盘然后进行分区格式化挂载格式化[rootserver2 ~]# mkfs.xfs /dev/nvme0n2p1UUID进行挂载[rootserver2 ~]# mkdir /mnt/ssd01[rootserver2 ~]# blkid[rootserver2 ~]# vim /etc/fstab[rootserver2 ~]# systemctl daemon-reload[rootserver2 ~]# mount -a修改权限属性否则服务会起不来[rootserver2 ~]# chown mfs.mfs /mnt/ssd01/添加文件内容[rootserver2 ~]# cd /etc/mfs[rootserver2 mfs]# lsmfschunkserver.cfg mfschunkserver.cfg.sample mfshdd.cfg mfshdd.cfg.sample[rootserver2 mfs]# vim mfshdd.cfg启动服务[rootserver2 mfs]# systemctl enable --now moosefs-chunkserverserver3是相同的步骤1.3 client节点部署server4[rootserver4 ~]# mkdir /mnt/mfs[rootserver4 ~]# mfsmount /mnt/mfs -H mfsmaster #后面替换成自己的解析域名1.4 自定义副本策略Storage Class存储类MooseFS可以自定义副本策略不再使用全局默认副本数针对目录 / 文件单独指定副本数量、存储节点实现不同数据差异化存储。进入MFS挂载目录须进入MooseFS挂载点所有mfs管理命令只对挂载点内文件生效创建自定义存储类 hot_1cp返回ok代表存储类创建成功该策略注册到MFS元数据服务[rootserver4 ~]# cd /mnt/mfs[rootserver4 mfs]# mfsscadmin create -K 1* hot_1cpstorage class make hot_1cp: ok[rootserver4 mfs]# mkdir dir1[rootserver4 mfs]# cd dir1/[rootserver4 dir1]# cp /etc/hosts .[rootserver4 dir1]# lshosts[rootserver4 dir1]# mfsfileinfo hosts创建测试目录上传测试文件建立测试环境拷贝/etc/hosts作为测试文件此时文件继承MFS全局默认副本策略默认 2 副本。给目录递归应用存储类执行这条命令仅仅修改元数据信息告诉master这里的文件要遵守 hot_1cp 策略磁盘上的chunk副本不会立刻删除master后台异步任务慢慢调整副本数量。[rootserver4 dir1]# mfssclass set hot_1cp -r .查询文件绑定的存储类[rootserver4 dir1]# mfssclass get hosts执行完策略后异步删除其中一份只剩1份真正实现hot_1cp1 副本。[rootserver4 dir1]# mfsfileinfo hosts命令查看对象作用mfssclass get hosts元数据看文件绑定哪个存储类模板只是标记不代表磁盘实际状态mfsfileinfo hosts底层磁盘数据看真实副本几份、存哪些服务器用来确认策略真正落地1.5 标签 (LABELS) 按标签分配存储类新增server5作为chunkserver节点创建/mnt/hdd01是server5这台chunkserver用来存放MooseFS数据块的本地目录。moosefs‑chunkserver服务运行身份是mfs用户目录权限必须属于mfs否则服务启动失败无法读写磁盘[rootserver5 ~]# mkdir /mnt/hdd01[rootserver5 ~]# chown mfs.mfs /mnt/hdd01/[rootserver5 ~]# cd /etc/mfs[rootserver5 mfs]# vim mfshdd.cfgmfshdd.cfg指定chunkserver使用哪些本地磁盘目录存储数据一行代表一个存储目录。[rootserver5 mfs]# systemctl enable --now moosefs-chunkserver给所有chunkserver节点打LABELS标签[rootserver2 ~]# cd /etc/mfs[rootserver2 mfs]# vim mfschunkserver.cfgS表示固态盘H表示机械盘server2server3添加一台server5要重启服务存储类指定只存标签A的节点server2的IP是192.168.159.152标签为Aserver3的IP是192.168.159.153标签为B[rootserver4 dir1]# mfsscadmin create -K A 1CP_A[rootserver4 mfs]# mfssclass set -r 1CP_A dir1/[rootserver4 dir1]# mfsfileinfo hosts原先文件副本在server3(153)应用存储类‑K A之后master后台迁移数据块副本迁移到带 A 标签的server2192.168.159.152。存储类的‑K 参数可以根据标签约束副本存放节点。存储类同时指定A、C两个标签保存2份副本[rootserver4 mfs]# mkdir dir2[rootserver4 mfs]# cd dir2[rootserver4 dir2]# cp /etc/passwd .2份副本一份放在标签A(server2 SSD)一份放在标签C(server5 HDD 机械盘)。[rootserver4 dir2]# mfsscadmin create -K A,C 2CP_AC[rootserver4 dir2]# mfssclass set -r 2CP_AC dir2/[rootserver4 dir2]# mfsfileinfo passwd1.6 pacemaker高可用server1对server5进行免密server1和server5都将repo源中的高可用打开[rootserver1 ~]# cd /etc/yum.repos.d[rootserver1 yum.repos.d]# vim rocky-addons.repo部署集群只需要在1 干[rootserver1 ~]# pcs host auth server1 server5 -u hacluster -p 123456设置密码[rootserver5 yum.repos.d]# passwd hacluster[rootserver1 ~]# pcs cluster setup mycluster server1 server5解决警告[rootserver1 ~]# pcs property set stonith-enabledfalse[rootserver1 ~]# pcs property set no-quorum-policyignore[rootserver1 ~]# pcs resource create VIP ocf:heartbeat:IPaddr2 ip192.168.159.100 cidr_netmask24 op monitor interval30smaster解析指向VIP[rootserver1 ~]# vim /etc/hosts二、pacemaker与iscsi存储配合实现MooseFS Master高可用target服务端提供磁盘server4把本地磁盘对外发布initiator客户端server1、server5通过网络远程挂载这块共享磁盘。后续交给 pacemaker 高可用集群管理这个iSCSI存储资源。2.1 iSCSI Target服务端配置给server4添加新的磁盘安装target服务端工具包[rootserver4 ~]# yum install -y targetcli[rootserver4 ~]# systemctl start target[rootserver4 ~]# targetcli进入targetcli交互 shelliscsi底层存储创建后端存储绑定server4本地磁盘分区/dev/nvme0n2命名my_disk/ /backstores/block create my_disk /dev/nvme0n2创建iSCSI target定义对外共享的iqn名称/iscsi create iqn.2026-08.com.example:mfsdata在target下创建lun把后端磁盘my_disk映射给iSCSI共享/iscsi iqn.2026-08.com.example:mfsdata/tpg1/luns create /backstores/block/my_disk添加访问ACL允许指定iqn名称的客户端接入访问磁盘/iscsi iqn.2026-08.com.example:mfsdata/tpg1/acls create iqn.2026-08.com.example:client2.2 iSCSI Initiator客户端配置通过网络发现并挂载server4共享出来的iSCSI磁盘server1和server5安装步骤一样[rootserver1 ~]# yum install -y iscsi-initiator-utils[rootserver1 ~]# vim /etc/iscsi/initiatorname.iscsi[rootserver1 ~]# systemctl restart iscsid #文件编辑后需要重启[rootserver1 ~]# iscsiadm -m discovery -t st -p 192.168.159.154[rootserver5 ~]# yum install -y iscsi-initiator-utils[rootserver5 ~]# vim /etc/iscsi/initiatorname.iscsi #文件编辑后需要重启[rootserver5 ~]# systemctl restart iscsid[rootserver5 ~]# iscsiadm -m discovery -t st -p 192.168.159.154修改客户端initiatorname必须和服务端ACL里面写的iqn完全一致[rootserver5 ~]# yum install -y iscsi-initiator-utils[rootserver5 ~]# vim /etc/iscsi/initiatorname.iscsi #文件编辑后需要重启[rootserver5 ~]# systemctl restart iscsid[rootserver5 ~]# iscsiadm -m discovery -t st -p 192.168.159.154发现iSCSI target服务端server4 IP192.168.159.154iSCSI客户端登录target存储iscsiadm -m node -l如果做错了有缓存以下操作[rootserver1 ~]# iscsiadm -m node -o delete -T 你创建的iqn名称2.3 磁盘分区、格式化迁移MooseFS Master元数据提前手动停掉moosefs‑master服务不能让旧元数据目录还在读写。对iSCSI磁盘/dev/sda做分区[rootserver1 ~]# fdisk /dev/sda格式化为XFS文件系统[rootserver1 ~]# mkfs.xfs /dev/sda1临时挂载到/mnt用来迁移原有元数据[rootserver1 ~]# mount /dev/sda1 /mnt/moosefs‑master运行身份mfs目录权限必须匹配[rootserver1 ~]# chown mfs.mfs /mnt/进入原有master元数据存放目录[rootserver1 ~]# cd /var/lib/mfs/完整拷贝全部元数据到iSCSI磁盘‑p保留权限、时间属性[rootserver1 mfs]# cp -p * /mnt/[rootserver1 mfs]# umount /mnt/iSCSI磁盘挂载到mfs master真实工作目录[rootserver1 ~]# mount /dev/sda1 /var/lib/mfs[rootserver1 ~]# chown mfs.mfs /var/lib/mfs[rootserver1 ~]# umount /var/lib/mfs2.4 Pacemaker创建集群资源先挂载文件系统 (mfsdata) → 再启动 moosefs‑master (mfsmaster)资源组统一管理故障整体漂移组内已经预先存在VIP虚拟IP资源。#创建Filesystem资源挂载iSCSI分区/dev/sda1到/var/lib/mfsxfs文件系统[rootserver1 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device/dev/sda1 directory/var/lib/mfs fstypexfs op monitor interval1min#创建moosefs‑master系统服务资源[rootserver1 ~]# pcs resource create mfsmaster systemd:moosefs-master op monitor interval30s#将VIP、mfsdata、mfsmaster加入同一个资源组 mfscluster[rootserver1 ~]# pcs resource group add mfscluster VIP mfsdata mfsmaster最开始在server5上将server5休眠后会回到server1让server5成为备机访问MooseFS WEB页面使用集群VIP地址192.168.159.100无论资源漂移到哪台主机访问地址不变。WEB界面Metadata server显示的IP就是VIP。如果发现有错误导致VIP或mfsmaster一直是stopped状态可以清理一下纪录缓存[rootserver1 ~]# pcs resource cleanup mfsmaster[rootserver1 ~]# pcs resource cleanup VIP三、Pacemaker SBD磁盘隔离集群脑裂风险两个节点网络断开两边都认为对方挂掉同时挂载iSCSI共享磁盘直接损坏 MooseFS元数据。SBD通过一块共享磁盘做 “投票板”节点收不到对方心跳就向磁盘写reset指令把故障机器强制重启保证同一时间只有一个节点接管业务。3.1 Windows端VMware命令创建共享磁盘以管理员身份运行cmd进入VMware安装目录创建100MB的SBD共享磁盘sbd.vmdkcd D:\Program Files (x86)\VMware\VMware Workstation.\vmware-vdiskmanager.exe -c -s 100MB -a lsilogic -t 2 E:\vm\sbd.vmdk创建虚拟磁盘修改之前mfsdata资源替换为by‑uuid路径防止新添加的磁盘造成漂移集群起不来[rootserver1 ~]# ll /dev/disk/by-uuid/# 更新Filesystem资源把原来device/dev/sda1换成uuid路径[rootserver1 ~]# pcs resource update mfsdata device/dev/disk/by-uuid/6e502f00-32f2-4ee5-a941-c32c81651290[rootserver1 ~]# pcs resource clear mfscluster[rootserver1 ~]# pcs resource debug-start mfsdata[rootserver1 ~]# pcs resource enable mfscluster[rootserver1 ~]# pcs status添加虚拟磁盘选择1:0并且是独立、永久如果有快照则是灰色的无法选择将引导磁盘放在新添加的磁盘前面否则会进入单机引导界面编辑.vmx文件记事本打开添加三行查看是否识别到新加的虚拟磁盘保证server1和server5上的id要一致3.2 加载看门狗模块# 安装sbd隔离代理包[rootserver1 ~]# dnf install -y sbd fence-agents-all# 加载内核软看门狗softdogSBD隔离依赖看门狗设备/dev/watchdog[rootserver1 ~]# modprobe softdog# 设置开机自动加载softdog模块[rootserver1 ~]# echo softdog /etc/modules-load.d/softdog.conf# 验证看门狗设备是否生成[rootserver1 ~]# ls /dev/watchdog确认内核模块加载成功[rootserver1 ~]# lsmod | grep softdog3.3 初始化SBD共享磁盘用刚才的id初始化用自己本机真实的uuid[rootserver1 ~]# sbd -d /dev/disk/by-id/scsi-36000c29e9fc1cf4aafb997fc68715d52 create查看SBD磁盘头部信息确认初始化成功[rootserver1 ~]# sbd -d /dev/disk/by-id/scsi-36000c29e9fc1cf4aafb997fc68715d52 dump3.4 Pacemaker创建STONITH SBD隔离资源创建stonith隔离资源fence_sbd[rootserver1 ~]# pcs stonith create sbd-fence fence_sbd devices/dev/disk/by-id/scsi-36000c29e9fc1cf4aafb997fc68715d52 op monitor interval30s timeout20s op start timeout20s op stop timeout20s全局开启stonith隔离功能[rootserver1 ~]# pcs property set stonith-enabledtrue重启整个集群加载SBD隔离配置[rootserver1 ~]# pcs cluster stop --all[rootserver1 ~]# pcs cluster start --allstonith 资源 → fence 代理 → sbd 底层。[rootserver1 ~]# pcs cluster stop --all[rootserver1 ~]# systemctl unmask sbd[rootserver1 ~]# systemctl enable sbd[rootserver1 ~]# systemctl daemon-reload[rootserver1 ~]# pcs cluster start --all3.5 SBD 隔离功能测试实验[rootserver1 ~]# sbd -d /dev/disk/by-id/scsi-36000c29e9fc1cf4aafb997fc68715d52 list查看SBD磁盘slot槽位状态两个节点都是clear正常状态执行完server5会重启[rootserver1 ~]# sbd -d /dev/disk/by-id/scsi-36000c29e9fc1cf4aafb997fc68715d52 message server5 resetserver5执行stonith隔离强制重启server1[rootserver5 ~]# pcs stonith fence server1server1强制重启资源被server5接管四、提醒与坑点VMware环境必须修改vmx的4行参数关闭磁盘锁、开启共享SCSI总线两台虚拟机都改。SBD磁盘只需要100M不需要大空间。全部磁盘配置禁止写/dev/sda这种设备名统一使用/dev/disk/by‑id防止开机磁盘顺序漂移集群瘫痪。虚拟机没有硬件看门狗必须加载softdog内核模块生成/dev/watchdog否则SBD隔离失效。磁盘模式必须【独立‑永久】有快照会灰色无法勾选先删除快照。STONITH 隔离作用集群高可用不允许关闭stonith‑enabled没有隔离的集群生产环境不安全。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门