千家信息网

mfs分布式存储搭建应用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,MFS 分布式存储的运行方式MFS工作原理MooseFS是一款具有冗余容错功能的分布式文件系统。它把数据分散在多台服务器上,确保一份数据多个备份副本,对外提供统一的结构。功能特性对于标准的文件操作,M
千家信息网最后更新 2026年10月31日mfs分布式存储搭建应用

MFS 分布式存储的运行方式

MFS工作原理

MooseFS是一款具有冗余容错功能的分布式文件系统。它把数据分散在多台服务器上,确保一份数据多个备份副本,对外提供统一的结构。

功能特性

对于标准的文件操作,MooseFS表现与其他类Unix文件系统一致。支持的通过文件系统特性:

· 层次结构(目录树)

· 兼容POSIX文件属性

· 支持特殊文件

· 符号链接和硬链接

· 基于IP地址和密码的访问控制

独有特性

· 高可靠性(数据的多个副本存储在不同服务器)

· 容量动态扩展(添加新硬盘或者服务器)

· 可以回收在制定时间内删除的文件,类似回收站功能

· 可以对整个文件甚至是正在被写入的文件创建文件快照

MFS整体架构的四种角色

· Master(元数据服务器)负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复,多节点拷贝。存储着每个文件的元数据(文件的大小、属性、位置信息,包括所有非常规文件的所有信息,例如目录、套接字、管道以及设备文件)

· Metalogger(元数据日志服务器)负责备份Master服务器的changelog。文件类型为 changelog.*.mfs ,以便在Master出问题时接替其工作

· Chunk(数据存储服务器)负责连接Master,听从Master调度,提供存储空间,并为客户端提供数据传输

· Client(客户端挂载)通过FUSE内核接口挂载远程管理服务器(master)上所管理的数据存储服务器,使用起来和本地文件系统一样

·

## MFS读处理过程:
1、客户端向元数据服务器发出读请求。
2、元数据服务器把所需数据存放的位置(Chunk Server的IP地址和chunk编号)告知客户端。
3、客户端向已知的Chunk Server请求发送数据。
4、Chunk Server向客户端发送数据。

## MFS写处理过程:
1、客户端向元数据服务器发送写入请求。
2、元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行这个交互):
a、元数据服务器只是在某些服务器创建新的分块chunks。
b、Chunk Servers告知元数据服务器,步骤a已经操作成功。
3、元数据服务器告知客户端,你可以在哪个Chunk Server的哪些Chunks写入数据。
4、客户端向指定的Chunk Server写入数据
5、Chunk Server与其他Chunk Server进行数据同步。
6、Chunk Server之间同步成功。
7、Chunk Server告知客户端数据写入成功。
8、客户端告知元数据服务器本次写入完毕。

实验拓扑

一、搭建master server

1.安装依赖包

[root@centos1 ~]# yum -y install zlib-devel

2.创建用户

[root@centos1 ~]# useradd mfs -s /sbin/nologin

3.安装源码包

[root@centos1 ~]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src

[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/

[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

[root@centos1 mfs-1.6.27]# make&&make install

4.复制文件

[root@centos1 mfs-1.6.27]# cd /usr/local/mfs/etc/mfs

[root@centos1 mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg

[root@centos1 mfs]# cp mfsexports.cfg.dist mfsexports.cfg

[root@centos1 mfs]# cp mfstopology.cfg mfstopology.cfg

[root@centos1 mfs]# cd /usr/local/mfs/var/mfs/

[root@centos1 mfs]# cp metadata.mfs.empty metadata.mfs

5.配置文件(只需了解,不用改动)

①// mfsmaster.cfg(主配置文件)/usr/local/mfs/etc/mfs目录下

# WORKING_USER = mfs 运行 master server 的用户

# WORKING_GROUP = mfs 运行 master server 的组

# SYSLOG_IDENT = mfsmaster master server 在 syslog中的标识,说明是由 master serve 产生的

# LOCK_MEMORY = 0 是否执行 mlockall()以避免 mfsmaster 进程溢出(默认为 0)

# NICE_LEVEL = -19 运行的优先级(如果可以默认是 -19; 注意: 进程必须是用 root启动)

# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被挂接目录及其权限控制文件的存放位置

# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg

# DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,此目录下大致有三类文件,changelog,sessions和 stats;

# BACK_LOGS = 50 metadata 的改变 log 文件数目(默认是 50);

# BACK_META_KEEP_PREVIOUS = 1

# REPLICATIONS_DELAY_INIT = 300 延迟复制的时间(默认是 300s);

# REPLICATIONS_DELAY_DISCONNECT = 3600 chunkserver 断开的复制延迟(默认是 3600);

# MATOML_LISTEN_HOST = * metalogger 监听的 IP 地址(默认是*,代表任何 IP);

# MATOML_LISTEN_PORT = 9419 metalogger 监听的端口地址(默认是 9419);

# MATOML_LOG_PRESERVE_SECONDS = 600

# MATOCS_LISTEN_HOST = * 用于 chunkserver 连接的 IP 地址(默认是*,代表任何 IP);

# MATOCS_LISTEN_PORT = 9420 用于 chunkserver 连接的端口地址(默认是 9420);

# MATOCU_LISTEN_HOST = * 用于客户端挂接连接的 IP 地址(默认是*,代表任何 IP);

# MATOCU_LISTEN_PORT = 9421 用于客户端挂接连接的端口地址(默认是 9421);

# CHUNKS_LOOP_MAX_CPS = 100000

# CHUNKS_LOOP_MIN_TIME = 300 chunks 的回环频率(默认是:300 秒);

②mfsexportes.cfg 为共享mfs文件系统的控制文件,NFS要共享一个目录时,我们会使用vim /etc/exports命令,编写共享给谁,所要共享的目录,共享出去的属性这些内容,而mfsexports.cfg的作用与其类似其书写格式如下: 对客户端的配置

Allow everything but "meta"

* / rw,alldirs,maproot=0

Client(客户端)支持格式:ip、ip/netmask、ip/位数掩码、ip-ip、*

该文件每一个条目分为三部分:

第一部分:客户端的ip 地址

第二部分:被挂接的目录

第三部分:客户端拥有的权限

//地址可以指定的几种表现形式:

* 所有的ip 地址

n.n.n.n 单个ip 地址

n.n.n.n/b IP 网络地址/位数掩码

n.n.n.n/m.m.m.m IP 网络地址/子网掩码

f.f.f.f-t.t.t.t IP 段

//目录部分需要注意两点:

/ 标识MooseFS 根;

. 表示MFSMETA 文件系统

//权限部分:

ro 只读模式共享

rw 读写的方式共享

alldirs 许挂载任何指定的子目录

6.启动服务/usr/local/mfs/sbin/mfsmaster start

[root@centos1 mfs]# netstat -anpt

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 7599/mfsmaster

tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 7599/mfsmaster

tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 7599/mfsmaster

tcp 0 0 192.168.1.1:9419 192.168.1.2:37816 ESTABLISHED 7599/mfsmaster

tcp 0 0 192.168.1.1:9420 192.168.1.3:48107 ESTABLISHED 7599/mfsmaster

tcp 0 0 ::1:25 :::* LISTEN 1732/master

7.查看进程

[root@centos1 mfs]# ps -ef|grep mfs

8.停止mfsmaster

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster -s 或stop

二、搭建metalogger server

1.安装依赖包

[root@centos1 ~]# yum -y install zlib-devel

2.创建用户

[root@centos1 ~]# useradd mfs -s /sbin/nologin

3.安装源码包

[root@centos1 ~]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src

[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/

[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

[root@centos1 mfs-1.6.27]# make && make install

4.复制文件

[root@centos1 mfs-1.6.27]# cd /usr/local/mfs/etc

[root@centos2 mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

[root@centos2 mfs]# vim mfsmetalogger.cfg

MASTER_HOST=192.168.1.1 //手工添加MASTER SERVER的ip地址

5.启动服务

[root@centos2 mfs]# /usr/local/mfs/sbin/mfsmetalogger start

三、搭建chunk server

1.安装依赖包

[root@centos1 ~]# yum -y install zlib-devel

2.创建用户

[root@centos1 ~]# useradd mfs -s /sbin/nologin

3.安装

[root@centos1 ~]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src

[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/

[root@centos3 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

[root@centos3 mfs-1.6.27]# make &&make install

4.复制配置文件

[root@centos3 mfs]# cd /usr/local/mfs/etc/mfs/

#cp mfschunkserver.cfg.dist mfschunkserver.cfg

[root@centos3 mfs]# cp mfshdd.cfg mfshdd.cfg

5.修改配置文件

[root@centos3 mfs]# vim mfschunkserver.cfg

MASTER_HOST = 192.168.1.1 //master服务器的ip地址

[root@centos3 mfs]# vim mfshdd.cfg

/data //设置chunkserver存放数据的目录

4.设置目录权限,启动mfschunkserver

[root@centos3 mfs]# mkdir /data //创建/data

[root@centos3 mfs]# chown -R mfs:mfs /data //设置权限

[root@centos3 mfs]# /usr/local/mfs/sbin/mfschunkserver start //启动服务

四、搭建第二个chunkserver

1.[root@centos3 ~]# useradd mfs -s /sbin/nologin

2.安装

[root@centos4 mfs-1.6.27]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src

[root@centos4 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/

[root@centos4 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

[root@centos4 mfs-1.6.27]# make && make install

3.复制配置文件

[root@centos3 mfs-1.6.27]# cd /usr/local/mfs/etc/mfs

[root@centos4 mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg

[root@centos4 mfs]# cp mfshdd.cfg.dist mfshdd.cfg

4.修改配置文件

[root@centos3 mfs]# vim mfschunkserver.cfg

MASTER_HOST = 192.168.1.1 //master服务器的ip地址

[root@centos3 mfs]# vim mfshdd.cfg

/data //存放数据的目录

5.设置目录权限,启动mfschunkserver

#mkdir /data

[root@centos3 mfs]# chown -R mfs:mfs /data

[root@centos3 mfs]# /usr/local/mfs/sbin/mfschunkserver start

五、客户端配置

1.安装fuse

fuse的功能简单概括一下,fuse提供一个文件操作的接口,然后fuse在这个接口上监听文件操作,并把这些对文件的操作传给我们自己的相关代码进行处理。 也就是说,fuse提供一个挂载点,然后他会在这个挂在点上进行监听,一旦有操作(新建、读取、修改)发生,他会把控制权交给我们的代码,这些操作的具体代码都在mfsmount模块中实现。

[root@centos1 fuse-2.9.2]# tar xf /mnt/fuse-2.9.2.tar.gz -C /usr/src

[root@centos1 fuse-2.9.2]# cd /usr/src/fuse-2.9.2/

[root@centos1 fuse-2.9.2]# ./configure

[root@centos1 fuse-2.9.2]# make &&make install

2.设置环境变量

[root@centos1 fuse-2.9.2]# vim /etc/profile

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH //环境变量PKG_CONFIG_PATH是用来设置.pc文件的搜索路径的

[root@centos1 fuse-2.9.2]# source /etc/profile //刷新环境变量

3.安装mfs客户端

[root@centos3 ~]# useradd -s /sbin/nologin mfs

[root@centos1 mfs-1.6.27]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src

[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/

[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount

[root@centos1 mfs-1.6.27]# make&&make install

4.挂载mfs文件系统

#mkdir /test //创建挂载点

[root@centos1 test]# modprobe fuse//加载fuse模块到内核

[root@centos1 test]# /usr/local/mfs/bin/mfsmount /test -H 192.168.1.1//挂载mfs

查看挂载情况:

5.mfs常用操作

1.设置环境变量

[root@centos1 test]# vim /etc/profile

export PATH=/usr/local/mfs/bin:$PATH

[root@centos1 test]# source /etc/profile

2.查看与设置文件复制的份数

[root@centos1 test]# mfsgetgoal -r /test

3.测试

[root@centos1 test]# dd if=/dev/zero of=/test/111.data bs=200M count=1

查看写入结果:

[root@centos1 test]# mfssetgoal -r 2 /test 进行冗余测试

[root@centos1 test]# dd if=/dev/zero of=/test/222.data bs=200M count=1

查看写入结果是否冗余:

六、mfs监控

1. [root@centos1 mfs]# /usr/local/mfs/sbin/mfscgiserv //master服务器写入

2. 通过网站进行监控测试:

七、MFS集群维护

1.启动MFS集群

安全的启动MooseFS 集群(避免任何读或写的错误数据或类似的问题)的方式是按照以下命令步骤:

1. 启动mfsmaster 进程

2. 启动所有的mfschunkserver 进程

3. 启动mfsmetalogger 进程(如果配置了mfsmetalogger)

4. 当所有的chunkservers 连接到MooseFS master 后,任何数目的客户端可以利用mfsmount 去挂接被export 的文件系统。(可以通过检查master 的日志或是CGI 监视器来查看是否所有的chunkserver被连接)。

2.停止MFS集群

安全的停止MooseFS 集群:

1. 在所有的客户端卸载MooseFS 文件系统(用umount 命令或者是其它等效的命令)

2. 用mfschunkserver stop 命令停止chunkserver 进程

3. 用mfsmetalogger stop 命令停止metalogger 进程

4. 用mfsmaster stop 命令停止master 进程

3.MFS元数据备份

通常元数据有两部分的数据:

· 主要元数据文件metadata.mfs,当mfsmaster 运行的时候会被命名为metadata.mfs.back

· 元数据改变日志changelog.*.mfs,存储了过去的N 小时的文件改变(N 的数值是由BACK_LOGS参数设置的,参数的设置在mfschunkserver.cfg 配置文件中)。


文件 数据 服务 服务器 客户 客户端 地址 目录 配置 系统 进程 存储 命令 权限 部分 集群 运行 功能 变量 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 科技股互联网 互联网科技资迅 科技制造互联网公司 朗涯互联网科技 互联网科技生活的内容 科技大学互联网专业好不好 成都玖崟互联网科技有限公司乐商圈怎么样 温州喔噻互联网科技有限公司 互联网科技与管理 青岛科技大学互联网大赛研究生 互联网科技商业 华夏恒生互联网科技013171 洛阳共同富裕互联网科技有限公司 世界互联网领先科技成果获奖 上海京穆互联网科技有限公司 智帮互联网科技公司最近动向 同城互联网络科技 福仕德教育科技互联网 瑞安市蟠桃会互联网科技有限公司 互联网科技作文 科技互联网公司logo 全球顶尖互联网科技公司 语蝶互联网科技有限公司 消费医药和互联网科技 明优互联网科技有限公司 沐思想互联网科技有限公司 互联网营销推广黑科技 互联网科技机房 银川新华互联网科技学校是国营吗
0