MooseFS 分布式存储系统
一、什 么 是 M o o s e FS ?
MooseFS(MFS)是一款开源的分布式文件系统(GPLv3 协议),提供高可用、可扩展的存
储解决方案。其核心设计基于客户机/服务器模式
二、节点类型
三、数据读写流程
1.读数据过程
- 客户端向 Master 请求文件元数据(如存储位置)。
- Master 返回数据所在的 Chunk Server IP、Port 及 Chunk ID。
- 客户端直接与 Chunk Server 通信获取数据。
2.写数据过程
- 客户端向 Master 申请写入权限及存储位置。
- Master 分配新 Chunk 并通知 Chunk Server 创建块。
- 客户端将数据写入指定的 Chunk Server。
- 写入成功后,客户端通知 Master 更新元数据。
3.删除/修改流程
- 删除文件:Master 标记元数据为删除,异步清理 Chunk Server 上的数据块。
- 修改文件:创建临时交换文件(.swp),完成后替换原文件并删除旧数据块。
四、环境准备与部署
1.节点规划
ip地址 | 节点 | 规划 |
130 | Client | nat模式 |
140 | master server | nat模式,建议内存大一点 |
150 | metalogger server | nat模式 |
160 | chunk server 1 | nat模式,加两块硬盘 |
170 | chunk server 2 | nat模式,加两块硬盘 |
180 | chunk server 3 | nat模式,加两块硬盘 |
190 | chunk server 4 | nat模式,加两块硬盘 |
2.拓扑图展示
3.系统基础配置(所有节点)
# 关闭防火墙与 SELinux
$ systemctl disable --now firewalld
$ setenforce 0
$ sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
# 添加 MooseFS 官方仓库
$ curl -o /etc/yum.repos.d/moosefs.repo
http://repository.moosefs.com/MooseFS-4-el9.repo
$ dnf clean all && dnf makecache
五、服务端部署
1.Master Server 安装
# 安装 Master 组件
$ dnf install -y moosefs-master moosefs-cgi moosefs-cgiserv
# 初始化元数据存储
$ mfsmaster init
# 配置客户端访问规则(非必要,可以不改动配置文件)
$ echo "192.168.88.0/24 / rw,alldirs,maproot=0:0" > /etc/mfs/mfsexports.cfg
# 启动服务
$ systemctl enable --now moosefs-master
# 验证端口监听
补充介绍:
- mfsexports.cfg:软件共享配置文件
- mfsmaster.cfg:软件运行配置文件
2.Metalogger Server 配置
注:最好在数据还没有开始写入的时候进行修改
# 安装组件
$ dnf install -y moosefs-metalogger
# 修改配置文件
$ vi /etc/mfs/mfsmetalogger.cfg
---------------------------------
MASTER_HOST = 192.168.66.140
META_DOWNLOAD_FREQ = 1 # 每小时同步元数据
---------------------------------
# 启动服务
$ systemctl enable --now moosefs-metalogger
注:当metalogger节点启动后,再次回到master节点可以看到多了一个监听端口,即metalogger的随机端口连接到了master的9419端口
3.Chunk Server 部署
(1)提前准备好要共享的挂载点(设备的分区,格式化,挂载),创建存储目录chunkdir并授权
(2)注册存储路径
$ echo "/chunkdir" > /etc/mfs/mfshdd.cfg
(3)定义主服务器
$ vi /etc/mfs/mfschunkserver.cfg
MASTER_HOST = 192.168.66.140
(4)启动服务
# 启动服务
$ systemctl enable --now moosefs-chunkserver
注:再次查看master节点的端口连接,发现又多了四个连接,即chunk server的随机端口连接到master节点的9420端口
补充知识点
- chunk server还有一个9422端口专门负责监听客户端
六、客户端挂载与使用
1.安装客户端工具
$ dnf install -y moosefs-client fuse3
# moosefs-client:用来管理和连接mfs的命令
# fuse:用户空间文件系统框架
2.挂载文件系统
注:需要创建两个目录,一个用来挂载虚拟根,一个用来挂载回收站
$ mkdir /mfsdata
$ mkdir /mfsmeta
$ mfsmount /mfsdata/ -H 192.168.66.140
$ mfsmount -m /mfsmeta/ -H 192.168.66.140
# 验证挂载
$ df -hT | grep mfs
注:同一个设备多次挂载的时候,df -h只显示第一次挂载的目录,可以通过mount | grep mfs查看
3.客户端写入数据
注:通过输出重定向在/mfsdata中写入数据,vim写入会产生交换文件,影响实验观察
$ echo "hello world" > a.txt
(1)查看chunk server,可以看到存入了两个文件,一个主,一个副本
注:客户端使用 mfsfileinfo 文件 也可以看到已存在文件的信息
(2)查看master和metalogger设备
(3)客户端再次插入数据,查看chunk server,会发现因为动态平衡机制,数据发生了迁移
注:若通过touch命令创建文件,则在chunk server中不会显示,因为touch创建的是空文件,只有元数据,没有内容
(4)vim写入数据,产生交换文件,可以到/mfsmeta/trash目录下查看,如图即是产生的交换文件