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地址 | 角色 | 核心职责 |
|---|---|---|---|
| mfs153 | 192.168.30.153 | mfsmaster | 集群元数据管理、核心大脑 |
| mfs154 | 192.168.30.154 | metalogger | 实时备份元数据,Master故障时可接管 |
| mfs155 | 192.168.30.155 | chunkserver1 | 实际数据存储节点1(需挂载独立数据盘) |
| mfs156 | 192.168.30.156 | chunkserver2 | 实际数据存储节点2(需挂载独立数据盘) |
| mfs157 | 192.168.30.157 | client | 业务接入节点,挂载MFS文件系统 |
架构逻辑说明:
元数据层:单 Master + 单 Metalogger 冷备,负责文件命名空间与映射关系。
存储层:2 台 Chunkserver,默认 2 副本策略,数据分散存储,单节点故障数据不丢失。
接入层:客户端通过 FUSE 挂载,对业务透明,使用方式与本地磁盘一致。
二、 全节点通用环境准备(5台机器全部执行)
以下步骤需在192.168.30.153至192.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 | 查看当前客户端挂载会话 |
五、 常见问题与注意事项
端口连通性:确保各节点间 9420, 9421, 9422, 9425 等 MFS 相关端口互通(若开启防火墙)。
磁盘权限:Chunkserver 的数据目录必须授权给
mfs:mfs用户,否则服务无法启动。Master 故障切换:若 Master 宕机,需在 Metalogger 节点执行
mfsmetarestore -a恢复元数据,并修改配置启动moosefs-master服务接管集群。时间同步:分布式存储对时间敏感,务必确保
chronyd服务正常运行,时间偏差超过 5 分钟会导致节点失联。
