MFS分布式文件系统:高可用集群部署实战

MFS分布式文件系统

思维导图

📚 一、MFS 基础架构

1. 核心概念与特点
  • 定义:MFS 是一个基于 FUSE(用户空间文件系统)的分布式网络文件系统,支持数据多副本存储(默认 2 份),提供逻辑上的树形文件结构。

  • 优点

    • 高可靠性:数据多副本存储在不同主机。

    • 高可扩展性:动态增加磁盘或主机扩展容量。

    • 高容错性:支持回收站机制,误删文件可恢复。

    • 高一致性:支持文件快照。

  • 缺点

    • 单点风险:社区版 Master 为单点(可通过 Keepalived 解决)。

    • 内存要求:Master 需将元数据全加载至内存。

    • 同步延迟:Metalogger 复制元数据时间较长。

2. 系统组成
  • 元数据服务器(Master):管理文件系统,维护元数据。

  • 元数据日志服务器(MetaLogger):备份 Master 的变化日志。

  • 数据存储服务器(Chunk Server):实际存储数据的服务器。

  • 客户端(Client):通过 FUSE 挂载 MFS 文件系统。

3. 读写处理流程
  • 读取:Client 向 Master 请求位置 -> Master 返回 Chunk Server 信息 -> Client 直接读取数据。

  • 写入:Client 向 Master 请求 -> Master 规划 Chunk -> Client 写入指定 Chunk Server -> Chunk Server 间同步副本 -> 通知 Master 完成。

4. 关键端口
  • 9420:Master 与 Chunk 通信。

  • 9421:Master 与 Client 通信。

  • 9419:Master 与 Metalogger 通信。

  • 9422:Chunk 与 Client 通信。

  • 9425:Master Web 监控界面。

🛠️ 二、MFS 部署应用(MooseFS (MFS) 分布式文件系统集群部署详解)

随着业务量的增加,传统的单点存储已无法满足需求。本文档将详细介绍如何部署 MooseFS(简称 MFS)分布式文件系统。我们将构建一个包含 Master Server、Metalogger、Chunk Servers 和 Client 的高可用、可扩展的分布式存储环境。

摘要:本文详细介绍了在 CentOS 7.9 环境下部署 MooseFS 分布式存储集群的全过程。基于 5 台服务器的规划,涵盖元数据管理(Master)、元数据备份(Metalogger)、数据存储(Chunkserver)及客户端挂载的完整配置步骤,并提供了详细的 IP 规划与故障排查思路。


一、 集群架构与 IP 规划

本方案采用 MooseFS 经典的三层架构,共需 5 台服务器。架构设计遵循高可用与数据冗余原则,确保单点故障不影响业务运行。

集群角色与节点分配规划表:

主机名IP地址角色核心职责
mfs153192.168.30.153mfsmaster集群元数据管理、核心大脑
mfs154192.168.30.154metalogger实时备份元数据,Master故障时可接管
mfs155192.168.30.155chunkserver1实际数据存储节点1(需挂载独立数据盘)
mfs156192.168.30.156chunkserver2实际数据存储节点2(需挂载独立数据盘)
mfs157192.168.30.157client业务接入节点,挂载MFS文件系统

架构逻辑说明:

  1. 元数据层:单 Master + 单 Metalogger 冷备,负责文件命名空间与映射关系。

  2. 存储层:2 台 Chunkserver,默认 2 副本策略,数据分散存储,单节点故障数据不丢失。

  3. 接入层:客户端通过 FUSE 挂载,对业务透明,使用方式与本地磁盘一致。


二、 全节点通用环境准备(5台机器全部执行)

以下步骤需在192.168.30.153192.168.30.157所有节点上执行。

1. 配置主机名与 hosts 解析
# 1. 修改主机名(以153为例,其他节点对应修改) hostnamectl set-hostname mfs153 bash # 2. 配置集群内部 hosts 解析 cat >> /etc/hosts << EOF 192.168.30.153 mfsmaster 192.168.30.154 metalogger 192.168.30.155 chunkserver1 192.168.30.156 chunkserver2 192.168.30.157 mfsclient EOF
2. 关闭防火墙与 SELinux
# 关闭 firewalld systemctl stop firewalld systemctl disable firewalld ​ # 关闭 SELinux setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
3. 配置时间同步与 YUM 源
# 安装 chrony 并配置阿里云时间源 yum install -y chrony sed -i 's/^server.*/server ntp.aliyun.com iburst/' /etc/chrony.conf systemctl start chronyd systemctl enable chronyd date # 配置阿里云 YUM 源及 EPEL 源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo ​ yum makecache
4. 配置 MooseFS 官方 YUM 源

注意:官方源地址已迁移,请使用新域名以避免 301 跳转错误。

# 导入 GPG KEY curl "https://repository.moosefs.com/RPM-GPG-KEY-MooseFS" -o /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS ​ # 下载 Repo 文件 curl "https://repository.moosefs.com/RPM-GPG-KEY-MooseFS" -o /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS ​ # 验证源配置 yum clean all yum makecache yum info moosefs-master moosefs-cli

三、 分角色部署步骤

1. 部署 mfsmaster 主节点(192.168.30.153)

1. 安装核心包

yum install -y moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli

2. 核心配置优化编辑/etc/mfs/mfsmaster.cfg,建议调整以下参数:

# 监听所有网卡 MATOML_LISTEN_HOST = * MATOCL_LISTEN_HOST = * MATOCS_LISTEN_HOST = * ​ # 回收站保留时间(生产建议7天) TRASH_TIME = 604800

3. 启动服务

systemctl start moosefs-master systemctl enable moosefs-master ​ # 启动 Web 可视化监控(端口 9425) systemctl start moosefs-cgiserv systemctl enable moosefs-cgiserv

4. 验证浏览器访问http://192.168.30.153:9425,若能看到 MFS 监控面板即表示启动成功。

2. 部署 metalogger 元数据备份节点(192.168.30.154)

1. 安装包

yum install -y moosefs-metalogger

2. 配置指向 Master编辑/etc/mfs/mfsmetalogger.cfg

MASTER_HOST = mfsmaster DATA_PATH = /var/lib/mfs META_BACKUPS_KEEP = 50

3. 启动服务

systemctl start moosefs-metalogger systemctl enable moosefs-metalogger
3. 部署 chunkserver 存储节点(192.168.30.155, 192.168.30.156)

注意:生产环境严禁使用系统盘存储数据,请为这两台节点分别挂载一块独立的数据盘(如/dev/sdb)。

1. 磁盘规划与格式化(155 和 156 均执行)

# 假设新加硬盘为 /dev/sdb fdisk /dev/sdb # (操作:n -> p -> 1 -> 回车 -> 回车 -> w) ​ # 格式化为 XFS mkfs.xfs /dev/sdb1 ​ # 创建挂载点并挂载 mkdir -p /data/mfschunk echo "/dev/sdb1 /data/mfschunk xfs defaults,noatime,nodiratime 0 0" >> /etc/fstab mount -a

2. 安装与配置

yum install -y moosefs-chunkserver ​ # 配置主服务指向 Master sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster/' /etc/mfs/mfschunkserver.cfg ​ # 配置数据盘路径 echo "/data/mfschunk" >> /etc/mfs/mfshdd.cfg ​ # 授权目录 chown -R mfs:mfs /data/mfschunk ​ # 启动服务 systemctl start moosefs-chunkserver systemctl enable moosefs-chunkserver

3. 验证在 Master 的 Web 界面(http://192.168.30.153:9425)的 "Servers" 标签页中,应能看到 155 和 156 两个 Chunkserver 上线。

4. 部署 client 客户端节点(192.168.30.157)

1. 安装客户端工具

yum install -y moosefs-client fuse

2. 挂载文件系统

# 创建挂载点 mkdir -p /mnt/mfs ​ # 3. 创建软链接 ln -s /usr/local/moosefs/bin/mfsmount /usr/local/bin ln -s /usr/local/moosefs/bin/mfsgetgoal /usr/local/bin ln -s /usr/local/moosefs/bin/mfssetgoal /usr/local/bin ln -s /usr/local/moosefs/bin/mfsfileinfo /usr/local/bin ​ # 临时挂载测试 mfsmount /mnt/mfs -H mfsmaster ​ # 验证挂载 df -h /mnt/mfs

3. 配置开机自动挂载编辑/etc/fstab,添加以下内容:

echo "mfsmount /mnt/mfs fuse defaults,nonempty,allow_other,mfsmaster=mfsmaster 0 0" >> /etc/fstab mount -a

执行mount -a验证配置无误。


四、 功能验证与常用命令

1. 读写测试

在客户端(157)执行:

echo "MFS Test Data" > /mnt/mfs/test.txt cat /mnt/mfs/test.txt

若文件写入成功且能读取,说明集群工作正常。

2. mfscli 常用管理命令

在 Master 节点(153)上使用mfscli工具查看集群状态:

命令说明
mfscli -H mfsmaster -SIN查看集群整体概览信息
mfscli -H mfsmaster -SCS列出所有 Chunkserver 节点状态
mfscli -H mfsmaster -SMS查看当前客户端挂载会话

五、 常见问题与注意事项

  1. 端口连通性:确保各节点间 9420, 9421, 9422, 9425 等 MFS 相关端口互通(若开启防火墙)。

  2. 磁盘权限:Chunkserver 的数据目录必须授权给mfs:mfs用户,否则服务无法启动。

  3. Master 故障切换:若 Master 宕机,需在 Metalogger 节点执行mfsmetarestore -a恢复元数据,并修改配置启动moosefs-master服务接管集群。

  4. 时间同步:分布式存储对时间敏感,务必确保chronyd服务正常运行,时间偏差超过 5 分钟会导致节点失联。