CentOS 8 安装 MooseFS 4 指南
在 CentOS 8 上从零部署 MooseFS 4.59.2 单机文件系统的完整指南,覆盖官方 yum 仓库在线安装与 tar.gz 源码编译离线安装两种方式、master/metallogger/chunkserver/gui 四组件配置、systemd 开机自启动、FUSE 挂载与读写验证、重启持久化与常见排障,全部命令与输出经真实环境实测
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/mfsgui | Web 管理界面 |
三、初始化配置
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 集群模式部署指南》。