
摘要本文详细记录了在 CentOS/RHEL 环境下部署 MooseFS 分布式文件系统高可用集群的完整过程。主要内容包括为共享磁盘分区格式化、配置 MooseFS Master 服务、使用 Pacemaker 和 Corosync 创建高可用资源组VIP、文件系统挂载、MooseFS Master 服务以及通过节点 standby/unstandby 操作验证 VIP 漂移和资源自动切换。文章提供了完整的命令行操作步骤和配置示例适合系统管理员和运维工程师参考。目录摘要1. 环境准备与磁盘分区2. 格式化磁盘并挂载3. 备份 MooseFS 元数据4. 配置 MooseFS Master 服务使用共享存储5. 在备用节点安装并配置 MooseFS6. 配置 Pacemaker 高可用资源7. 集群状态检查8. 测试 VIP 漂移与故障切换9. 验证资源切换结果10. 恢复备用节点总结1. 环境准备与磁盘分区首先我们需要为共享存储磁盘/dev/sda进行分区并查看磁盘分区情况。# 为 sda 磁盘分区使用 fdisk /dev/sda [rootserver1 iscsi]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G 0 disk └─sda1 8:1 0 20G 0 part sr0 11:0 1 2.1G 0 rom nvme0n1 259:0 0 20G 0 disk ├─nvme0n1p1 259:1 0 1G 0 part /boot └─nvme0n1p2 259:2 0 19G 0 part ├─rl-root 253:0 0 17G 0 lvm / └─rl-swap 253:1 0 2G 0 lvm [SWAP]2. 格式化磁盘并挂载停止 MooseFS Master 服务格式化/dev/sda1为 XFS 文件系统并挂载到临时目录。[rootserver1 ~]# systemctl stop moosefs-master [rootserver1 ~]# mkfs.xfs -f /dev/sda1 meta-data/dev/sda1 isize512 agcount4, agsize1310656 blks sectsz512 attr2, projid32bit1 crc1 finobt1, sparse1, rmapbt0 reflink1 bigtime1 inobtcount1 nrext640 data bsize4096 blocks5242624, imaxpct25 sunit0 swidth0 blks naming version 2 bsize4096 ascii-ci0, ftype1 log internal log bsize4096 blocks16384, version2 sectsz512 sunit0 blks, lazy-count1 realtime none extsz4096 blocks0, rtextents0 [rootserver1 ~]# mount /dev/sda1 /mnt/ 修改权限 [rootserver1 ~]# chown mfs.mfs /mnt/3. 备份 MooseFS 元数据将 MooseFS 的元数据文件备份到新挂载的磁盘上确保数据安全。[rootserver1 ~]# cd /var/lib/mfs [rootserver1 mfs]# ll total 9004 -rw-r-----. 1 mfs mfs 2622 Aug 22 15:57 changelog.1.mfs -rw-r-----. 1 mfs mfs 2231 Aug 22 14:59 changelog.2.mfs -rw-r-----. 1 mfs mfs 391 Aug 21 19:08 changelog.3.mfs -rw-r-----. 1 mfs mfs 2690 Aug 21 18:59 changelog.4.mfs -rw-r-----. 1 mfs mfs 235 Aug 21 17:59 changelog.5.mfs -rw-r-----. 1 mfs mfs 144 Aug 22 15:58 metadata.crc -rw-r-----. 1 mfs mfs 2352 Aug 22 15:58 metadata.mfs -rw-r-----. 1 mfs mfs 2352 Aug 22 15:00 metadata.mfs.back.1 -rw-r--r--. 1 mfs mfs 8 May 18 18:02 metadata.mfs.empty -rw-r-----. 1 mfs mfs 9182056 Aug 22 15:58 stats.mfs [rootserver1 mfs]# cp -p * /mnt/ [rootserver1 mfs]# cd /mnt/ [rootserver1 mnt]# ll total 9004 -rw-r-----. 1 mfs mfs 2622 Aug 22 15:57 changelog.1.mfs -rw-r-----. 1 mfs mfs 2231 Aug 22 14:59 changelog.2.mfs -rw-r-----. 1 mfs mfs 391 Aug 21 19:08 changelog.3.mfs -rw-r-----. 1 mfs mfs 2690 Aug 21 18:59 changelog.4.mfs -rw-r-----. 1 mfs mfs 235 Aug 21 17:59 changelog.5.mfs -rw-r-----. 1 mfs mfs 144 Aug 22 15:58 metadata.crc -rw-r-----. 1 mfs mfs 2352 Aug 22 15:58 metadata.mfs -rw-r-----. 1 mfs mfs 2352 Aug 22 15:00 metadata.mfs.back.1 -rw-r--r--. 1 mfs mfs 8 May 18 18:02 metadata.mfs.empty -rw-r-----. 1 mfs mfs 9182056 Aug 22 15:58 stats.mfs4. 配置 MooseFS Master 服务使用共享存储将共享磁盘挂载到 MooseFS 的数据目录并启动服务验证配置。[rootserver1 ~]# umount /mnt [rootserver1 ~]# mount /dev/sda1 /var/lib/mfs/ [rootserver1 ~]# systemctl start moosefs-master # 服务开启的时候必须要出现 metadata.mfs.back 文件 [rootserver1 ~]# cd /var/lib/mfs/ [rootserver1 mfs]# ll total 9008 ··· -rw-r-----. 1 mfs mfs 2352 Aug 22 15:58 metadata.mfs.back -rw-r-----. 1 mfs mfs 2352 Aug 22 15:00 metadata.mfs.back.1 -rw-r--r--. 1 mfs mfs 8 May 18 18:02 metadata.mfs.empty -rw-r-----. 1 mfs mfs 9182056 Aug 22 15:58 stats.mfs [rootserver1 mfs]# systemctl stop moosefs-master [rootserver1 mfs]# ll total 9008 ··· -rw-r-----. 1 mfs mfs 2352 Aug 22 16:02 metadata.mfs -rw-r-----. 1 mfs mfs 2352 Aug 22 15:58 metadata.mfs.back.1 -rw-r--r--. 1 mfs mfs 8 May 18 18:02 metadata.mfs.empty -rw-r-----. 1 mfs mfs 9182056 Aug 22 16:02 stats.mfs5. 在备用节点安装并配置 MooseFS在备用节点 server5 上安装 MooseFS 组件并配置共享存储挂载。[rootserver1 ~]# umount /var/lib/mfs [rootserver1 ~]# ls -ld /var/lib/mfs drwxr-xr-x. 2 mfs mfs 4096 Aug 22 15:58 /var/lib/mfs [rootserver5 yum.repos.d]# yum install -y moosefs-master moosefs-cli moosefs-gui [rootserver5 yum.repos.d]# partprobe Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only. [rootserver5 yum.repos.d]# ll /dev/sda1 brw-rw----. 1 root disk 8, 1 Aug 22 16:15 /dev/sda1 [rootserver5 yum.repos.d]# cd [rootserver5 ~]# mount /dev/sda1 /var/lib/mfs/ [rootserver5 ~]# chown -R mfs:mfs /var/lib/mfs [rootserver5 ~]# ls -ld /var/lib/mfs drwxr-xr-x. 2 mfs mfs 299 Aug 22 16:02 /var/lib/mfs [rootserver5 ~]# systemctl start moosefs-master [rootserver5 ~]# systemctl stop moosefs-master [rootserver5 ~]# umount /var/lib/mfs [rootserver1 ~]# systemctl disable moosefs-master Removed /etc/systemd/system/multi-user.target.wants/moosefs-master.service.6. 配置 Pacemaker 高可用资源使用 Pacemaker 创建高可用资源组包括 VIP、文件系统挂载和 MooseFS Master 服务。[rootserver1 ~]# pcs resource describe ocf:heartbeat:Filesystem 创建一个叫 mfsdata 的挂载资源把 /dev/sda1 挂载到 /var/lib/mfs文件系统 xfs每 1 分钟检查挂载状态。 [rootserver1 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device/dev/sda1 directory/var/lib/mfs fstypexfs op monitor interval1min 创建 mfsmaster 资源管理 systemd 的 moosefs‑master 服务每 30 秒监控服务状态。 [rootserver1 ~]# pcs resource create mfsmaster systemd:moosefs-master op monitor interval30s 把 VIP、mfsdata、mfsmaster 三个资源加入 mfscluster 资源组组内按这个顺序启动反向顺序停止。 [rootserver1 ~]# pcs resource group add mfscluster VIP mfsdata mfsmaster7. 集群状态检查检查 Pacemaker 集群状态确认所有资源正常运行。[rootserver5 ~]# pcs status Cluster name: mycluster Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: server1 (version 2.1.10-3.el9_8-5693eaeee) - partition with quorum * Last updated: Sat Aug 22 16:44:08 2026 on server1 * Last change: Sat Aug 22 16:43:46 2026 by hacluster via hacluster on server1 * 2 nodes configured * 3 resource instances configured Node List: Node server5: standby Online: [ server1 server5 ] Full List of Resources: Resource Group: mfscluster: VIP (ocf:heartbeat:IPaddr2): Started server5 mfsdata (ocf:heartbeat:Filesystem): Started server5 mfsmaster (systemd:moosefs-master): Started server5 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled8. 测试 VIP 漂移与故障切换验证 VIP 漂移功能确保高可用性正常工作。[rootserver4 ~]# cd /mnt/mfs [rootserver4 mfs]# ls dir1 dir2 dir3 [rootserver4 mfs]# cd dir2/ [rootserver4 dir2]# mfsfileinfo hostname hostname: chunk 0: 0000000000000004_00000001 / (id:4 ver:1) ; mtime:1787209111 (2026-08-20 14:58:31) copy 1: 192.168.223.147:9422 ; status:VALID copy 2: 192.168.223.148:9422 ; status:VALID [rootserver5 ~]# pcs node standby9. 验证资源切换结果检查资源切换后的集群状态确认资源已成功迁移到 server1。[rootserver1 ~]# pcs resource status * Resource Group: mfscluster: * VIP (ocf:heartbeat:IPaddr2): Started server1 * mfsdata (ocf:heartbeat:Filesystem): Started server1 * mfsmaster (systemd:moosefs-master): Started server1 [rootserver1 ~]# pcs status Cluster name: mycluster Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: server1 (version 2.1.10-3.el9_8-5693eaeee) - partition with quorum * Last updated: Sat Aug 22 16:44:08 2026 on server1 * Last change: Sat Aug 22 16:43:46 2026 by hacluster via hacluster on server1 * 2 nodes configured * 3 resource instances configured Node List: Node server5: standby Online: [ server1 ] Full List of Resources: Resource Group: mfscluster: VIP (ocf:heartbeat:IPaddr2): Started server1 mfsdata (ocf:heartbeat:Filesystem): Started server1 mfsmaster (systemd:moosefs-master): Started server1 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled重新启动 server5 之后资源没有回切符合高可用集群的预期行为。10. 恢复备用节点将 server5 从 standby 状态恢复验证集群恢复正常状态。[rootserver5 ~]# pcs node unstandby [rootserver5 ~]# pcs status Cluster name: mycluster Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: server1 (version 2.1.10-3.el9_8-5693eaeee) - partition with quorum * Last updated: Sat Aug 22 16:45:00 2026 on server5 * Last change: Sat Aug 22 16:44:57 2026 by root via root on server5 * 2 nodes configured * 3 resource instances configured Node List: Online: [ server1 server5 ] Full List of Resources: Resource Group: mfscluster: VIP (ocf:heartbeat:IPaddr2): Started server1 mfsdata (ocf:heartbeat:Filesystem): Started server1 mfsmaster (systemd:moosefs-master): Started server1 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled总结通过以上步骤我们成功部署了 MooseFS 高可用集群并使用 Pacemaker 实现了 VIP、文件系统挂载和 MooseFS Master 服务的高可用管理。关键点包括使用共享存储确保元数据一致性通过 Pacemaker 资源组实现服务的自动故障切换验证了 VIP 漂移和资源切换功能备用节点恢复后资源保持稳定符合高可用设计原则这种架构确保了 MooseFS Master 服务的高可用性避免了单点故障适合生产环境部署。