CentOS 8 安装 MooseFS 4 指南

在 CentOS 8 上从零部署 MooseFS 4.59.2 单机文件系统的完整指南,覆盖官方 yum 仓库在线安装与 tar.gz 源码编译离线安装两种方式、master/metallogger/chunkserver/gui 四组件配置、systemd 开机自启动、FUSE 挂载与读写验证、重启持久化与常见排障,全部命令与输出经真实环境实测

MooseFSMooseFS 分布式文件系统文件存储CentOS 8systemd开自启动单机部署2026/10/06

CentOS 8 安装 MooseFS 4 指南

目标:在 CentOS 8 服务器上从零完成 MooseFS 4 单机部署——配置官方 yum 仓库、安装 master/metallogger/chunkserver/gui 四个守护进程组件与客户端、创建存储目录、用 systemd 开机自启动、挂载 FUSE 文件系统并完成读写与持久化验证,同时提供 tar.gz 源码编译离线安装流程。文中所有命令与输出均在 CentOS 8(x86_64)真实环境实测。

一、环境信息

  • 操作系统:CentOS 8(x86_64),内核 4.18+
  • MooseFS 版本:4.59.2-1.rhsystemd(社区开源版;官方仓库同时提供收费 Pro 版,5.1.0 起仅有 Pro 包)
  • 服务器 IP:192.168.110.11,主机名 mfs-server
  • 内核 FUSE 组件:fuse3 3.2.1-12.el8(fuse3 与 fuse3-libs)

MooseFS 采用「master + chunkserver + metalogger + client」四类角色。单机部署时四角色同机运行:master 管理元数据(端口 9419/9420/9421)、chunkserver 存储数据块(端口 9422)、metalogger 实时备份元数据、GUI 提供 Web 管理界面(端口 9425)。

二、在线方式:官方 yum 仓库安装

2.1 安装依赖

首先安装 FUSE 与 Python 依赖(yum 仓库包依赖这两个运行时):

dnf install -y fuse3 fuse3-libs python3

安装输出(节选):

Installed:
  fuse3-3.2.1-12.el8.x86_64
  fuse3-libs-3.2.1-12.el8.x86_64
  python3-3.6.8-...

2.2 配置官方仓库

MooseFS 官方仓库域名是 repository.moosefs.com(注意:旧地址 install.moosefs.com 已下线,返回 502)。导入 GPG 公钥并添加 yum 仓库源:

curl "https://repository.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
curl "https://repository.moosefs.com/MooseFS-4-el8.repo" > /etc/yum.repos.d/MooseFS.repo

生成的 /etc/yum.repos.d/MooseFS.repo 内容:

[MooseFS]
name=MooseFS $releasever - $basearch
baseurl=https://repository.moosefs.com/moosefs-4/yum/el8
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
enabled=1

注:MooseFS-4-el8.repo 指向 MooseFS 4 开源仓库;MooseFS-5-el8.repo 指向 MooseFS 5 仓库(该版本仅有收费 Pro 包,文档采用 4.59.2 社区版)。

2.3 安装组件

dnf install -y moosefs-master moosefs-chunkserver moosefs-metalogger moosefs-client moosefs-cli moosefs-gui

安装结果(节选):

Installed:
  moosefs-master-4.59.2-1.rhsystemd.x86_64
  moosefs-chunkserver-4.59.2-1.rhsystemd.x86_64
  moosefs-metalogger-4.59.2-1.rhsystemd.x86_64
  moosefs-client-4.59.2-1.rhsystemd.x86_64
  moosefs-cli-4.59.2-1.rhsystemd.x86_64
  moosefs-gui-4.59.2-1.rhsystemd.x86_64
Complete!

各组件提供的守护进程与工具:

包守护进程/二进制角色
moosefs-master/usr/sbin/mfsmaster、mfsmetadump、mfsmetarestore、mfsmetasearch元数据管理
moosefs-chunkserver/usr/sbin/mfschunkserver、mfschunktool数据块存储
moosefs-metalogger/usr/sbin/mfsmetalogger元数据实时备份
moosefs-client/usr/bin/mfsmount、/sbin/mount.moosefs、mfs* 工具族挂载与文件管理
moosefs-cli/usr/bin/mfscli集群监控
moosefs-gui/usr/sbin/mfsguiWeb 管理界面

三、初始化配置

3.1 复制配置样例

RPM 包只安装 .sample 样例文件,需手动复制为正式配置文件:

cd /etc/mfs
cp mfsmaster.cfg.sample mfsmaster.cfg
cp mfsexports.cfg.sample mfsexports.cfg
cp mfschunkserver.cfg.sample mfschunkserver.cfg
cp mfshdd.cfg.sample mfshdd.cfg
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
cp mfsmount.cfg.sample mfsmount.cfg
cp mfsgui.cfg.sample mfsgui.cfg

所有 .sample 文件的行均以 # 注释,保留默认值即可运行,无需手动填写。

3.2 创建数据目录

chunkserver 将数据块写入 mfshdd.cfg 中列出的挂载点。创建存储目录并指定属主为 mfs 用户:

mkdir -p /mnt/hdd1/mfschunks
chown -R mfs:mfs /mnt/hdd1
echo "/mnt/hdd1/mfschunks" > /etc/mfs/mfshdd.cfg
cat /etc/mfs/mfshdd.cfg

输出:

/mnt/hdd1/mfschunks

3.3 配置主服务器地址

单机部署时,chunkserver 与 metalogger 需要告知 master 的地址。追加配置(注意两者差异):

echo "MASTER_HOST = 127.0.0.1" >> /etc/mfs/mfsmetalogger.cfg
echo "MASTER_HOST = 192.168.110.11" >> /etc/mfs/mfschunkserver.cfg

⚠️ 关键差异:metalogger 允许使用 127.0.0.1,但 chunkserver 不允许。若 chunkserver 配置 MASTER_HOST = 127.0.0.1,启动会报错 master connection module: localhost (127.0.0.1) can't be used for connecting with master (use ip address of network controller)——必须填写本机网卡实际 IP(此处为 192.168.110.11)。

3.4 导出规则

/etc/mfs/mfsexports.cfg 控制客户端挂载授权。默认内容已允许全量访问:

*       /       rw,alldirs,admin,maproot=0:0
*       .       rw

第一行含义:任何客户端(*)可读写挂载根目录(/),允许访问所有子目录(alldirs)、具备管理权限(admin)、将 root 映射为 root(maproot=0:0)。

四、启动服务器(命令方式)

可先用命令行方式手动启动验证,确认无误后再改用 systemd 托管。

4.1 启动 master

mfsmaster start

启动日志(节选):

topology file has been loaded
loading metadata ...
metadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly

4.2 启动 metalogger 与 chunkserver

mfsmetalogger start
mfschunkserver start

输出:

mfsmetalogger daemon initialized properly
mfschunkserver daemon initialized properly

4.3 启动 GUI

mfsgui start

输出:

guiserv: listen on *:9425
mfsgui daemon initialized properly

五、挂载客户端

5.1 创建挂载点并挂载

mkdir -p /mnt/mfs
mfsmount /mnt/mfs -H 192.168.110.11

挂载成功提示:

mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root ; sclass groups allowed: ALL

5.2 验证挂载与容量

df -hT /mnt/mfs

输出:

Filesystem              Type  Size  Used Avail Use% Mounted on
mfs#192.168.110.11:9421 fuse  751G  267G  485G  36% /mnt/mfs

显示容量 751G 来自 chunkserver 汇报的磁盘聚合容量(/mnt/hdd1/mfschunks 所在分区实际大小)。

5.3 读写验证

echo "hello moosefs" > /mnt/mfs/hello.txt
cat /mnt/mfs/hello.txt
dd if=/dev/zero of=/mnt/mfs/10m.bin bs=1M count=10

输出:

hello moosefs
10485760 bytes (10 MB, 10 MiB) copied, 0.0241162 s, 435 MB/s

六、systemd 托管与开机自启动

6.1 启用四个服务

RPM 包已提供 systemd 单元(moosefs-master.service、moosefs-chunkserver.service、moosefs-metalogger.service、moosefs-gui.service)。开启并设置开机自启动:

systemctl enable --now moosefs-master
systemctl enable --now moosefs-metalogger
systemctl enable --now moosefs-chunkserver
systemctl enable --now moosefs-gui

每个 service 单独一行执行。底层会自动解除前面用命令行启动的进程(若已手动启动,先 mfsmaster stop 等停止)。

6.2 验证服务状态

systemctl is-active moosefs-master
systemctl is-active moosefs-metalogger
systemctl is-active moosefs-chunkserver
systemctl is-active moosefs-gui

输出:

active
active
active
active

6.3 查看服务详情

systemctl status moosefs-master --no-pager

输出(节选):

● moosefs-master.service - MooseFS Master server
   Loaded: loaded (/usr/lib/systemd/system/moosefs-master.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2026-10-06 05:07:58 UTC; 9s ago
  Process: 284 ExecStart=/usr/sbin/mfsmaster start (code=exited, status=0/SUCCESS)
 Main PID: 287 (mfsmaster)
    Tasks: 2
   Memory: 290.7M

master 单元要点(/usr/lib/systemd/system/moosefs-master.service):

[Unit]
Description=MooseFS Master server
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=forking
ExecStart=/usr/sbin/mfsmaster start
ExecStop=/usr/sbin/mfsmaster stop
ExecReload=/usr/sbin/mfsmaster reload
PIDFile=/var/lib/mfs/.mfsmaster.lock
TimeoutStopSec=1800
TimeoutStartSec=1800
Restart=no

[Install]
WantedBy=multi-user.target

Type=forking + PIDFile 是 MooseFS 的标准启动模型:ExecStart=... start 快速返回,守护进程 fork 后台并写 PID。GUI 单元的 Restart=on-abnormal 可在异常退出时自动拉起。

6.4 重启持久化验证

systemctl restart moosefs-master
systemctl is-active moosefs-master
ls /mnt/mfs/
cat /mnt/mfs/hello.txt
md5sum /mnt/mfs/10m.bin

输出:

active
10m.bin  hello.txt
hello moosefs
f1c9645dbc14efddc7d8a322685f26eb  /mnt/mfs/10m.bin

master 重启后元数据完整加载,已写入文件与校验和均保持不变。

七、离线方式:tar.gz 源码编译安装

无外网环境可从 GitHub 源码编译安装。

7.1 获取源码包

cd /root
curl -L https://github.com/moosefs/moosefs/archive/refs/tags/v4.59.2.tar.gz -o moosefs-4.59.2.tar.gz
tar xzf moosefs-4.59.2.tar.gz
cd moosefs-4.59.2

7.2 安装编译工具链

dnf install -y gcc gcc-c++ make automake autoconf libtool zlib-devel fuse3-devel pkgconfig

7.3 配置与编译

源码自带 configure(无 autogen.sh,已有 Makefile.in)。执行配置:

./configure --prefix=/usr --mandir=/share/man --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs

配置输出(节选):

BUILD_CLIENT ........................ yes
    MOUNT ........................... yes
    BDEV ............................ yes

编译并安装:

make -j4
make install

7.4 验证版本

mfsmaster -v
mfsmetalogger -v

输出:

version: 4.59.2-1 ; build: 2106
version: 4.59.2-1 ; build: 2106

编译产物安装位置与 RPM 包一致:/usr/sbin/mfsmaster、/usr/sbin/mfschunkserver、/usr/sbin/mfsmetalogger、/usr/sbin/mfsgui、/usr/bin/mfsmount。

八、卸载

systemctl disable --now moosefs-master moosefs-metalogger moosefs-chunkserver moosefs-gui
umount /mnt/mfs
dnf remove -y moosefs-master moosefs-chunkserver moosefs-metalogger moosefs-client moosefs-cli moosefs-gui

如需彻底清理数据:

rm -rf /mnt/hdd1/mfschunks /var/lib/mfs

九、常见问题

Q1:mfsmount 时报 can't resolve master host/port (mfsmaster:9419)?

默认 MASTER_HOST 是主机名 mfsmaster。单机无该 DNS 名时挂载必须显式指定 -H,或修改 /etc/mfs/mfsmount.cfg 增加 MASTER_HOST = 192.168.110.11;生产环境建议在 DNS 或 /etc/hosts 配置 mfsmaster 别名。

Q2:chunkserver 启动报 ... can't be used for connecting with master?

参见 3.3 节:chunkserver 的 MASTER_HOST 不能填 127.0.0.1/localhost,必须填本机网卡实际 IP。

Q3:为什么用 mfsgetgoal 报 deprecated?

MooseFS 4 已将旧版 goal 概念升级为 storage class(存储类)。mfsgetgoal/mfssetgoal/mfscopygoal 均标记弃用,改用 mfsgetsclass/mfssetsclass/mfscopysclass。详见《MooseFS 4 常用 CLI 命令与运维指南》。

Q4:非 GUI 环境也能用 mfscli 吗?

可以。mfscli 是纯命令行集群监控工具,无需 GUI。例如 mfscli -SIG -H 192.168.110.11 -n 查看集群概要。

Q5:单机也想扩容怎么办?

新增一台服务器安装 chunkserver 并指向同一 master 即可形成集群,数据块自动跨节点分布。详见《MooseFS 集群模式部署指南》。