千家信息网

MFS分布式存储搭建详解

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,MFS分布式存储服务MFS的作用:MFS分布式存储的目的是为了解决在NFS的短板,多台服务器通过NFS的方式挂载共享一个服务器的存储空间,使得NFS服务器不堪重负,经常出现超时的现象,而且NFS存在单
千家信息网最后更新 2024年11月26日MFS分布式存储搭建详解

MFS分布式存储服务

MFS的作用:

MFS分布式存储的目的是为了解决在NFS的短板,多台服务器通过NFS的方式挂载共享

一个服务器的存储空间,使得NFS服务器不堪重负,经常出现超时的现象,而且NFS存在单点故障,

尽管可以使用rsync同步数据到另一台服务器上做备份,但对提高系统性能并无帮助。因此解决方案

采取MFS分布式文件系统,服务器之间的数据访问不再是一对多的关系,而是多对多的关系。

什么是分布式存储:

分布式原理:通过计算机网络和节点相连,简单的说就是把一些分散的共享文件夹集合到一个虚拟文

件夹内。对于用户来说,访问这些共享文件夹只是打开了一个虚拟文件夹,用户感受不到这些共享文件夹是分

布于各个计算机上的。分布式文件系统的好处是集中访问,简化操作,数据容灾,以及提高文件的存取性能。

MFS原理:

1)MFS文件系统的组成。

● 元数据服务器(master):在整个体系中负责管理文件系统,维护元数据。

● 元数据日志服务器(metaLogger):当MAster服务器数据丢失或者损坏是,可以从日志服务器中取得文件,进行恢复。

● 数据存储服务器(chunkserver):真正存储数据的服务器。存储文件时会把文件分块保存。

● 客户端:可以像挂载MFS文件系统一样,其操作相同。

2)MFS读取数据的处理过程。

● 客户端向元数据服务器发出请求。

● 元数据服务器把所需数据存放位置告知客户端。

●客户端向已知Chunk server请求发送数据。

●Chunk Server向客户端发送数据。

3)MFS写入数据的出来过程

● 客户端向元数据服务器发送写入请求

● 元数据服务器与Chunk Server进行交互,会在Chunk Server上创建新分块Chunks并告知元服务器。

● 元数据服务器告知客户端,可以在哪个Chunk Server的哪个分块Chunks上写入数据。

● 客户端指定Chunk Server写入数据。

● 该Chunk Server与其他Chunk Server进行数据同步,同步成功告知客户端写入成功。

● 客户端告知元数据服务器本次写入完毕。


实验拓扑如下:

本实验使用5台服务器模拟搭建MFS文件系统


实验环境:

角色类型操作系统ip地址主要软件
Master ServerCentos7192.168.60.141moosefs-3.0.100-1.tar.gz
MetaLogger ServerCentos7192.168.60.136moosefs-3.0.100-1.tar.gz
Chunk Server1Centos7192.168.60.143moosefs-3.0.100-1.tar.gz
Chunk Server2Centos7192.168.60.144moosefs-3.0.100-1.tar.gz
ClientCentos7192.168.60.130fuse-2.9.2.tar.gz 、moosefs-3.0.100-1.tar.gz


一、搭建Master Server服务器

1、解压、安装环境包

tar zxf moosefs-3.0.100-1.tar.gz -C /opt

yum install gcc gcc-c++ zlib-devel -y

2、创建用户、编译

cd /opt/moosefs-3.0.100/

useradd -s /sbin/nologin mfs #创建mfs管理用户

./configure --prefix=/usr/local/mfs \ #编译

--with-default-user=mfs \ #指定管理用户

--with-default-group=mfs \ #指定管理组

--disable-mfschunkserver \ #禁用节点

--disable-mfsmount #禁用客户端挂载

make && make install

3、复制配置文件

cd /usr/local/mfs/etc/mfs

cp mfsexports.cfg.dist mfsexports.cfg

cp mfsmaster.cfg.dist mfsmaster.cfg

cp mfstopology.cfg.dist mfstopology.cfg

cd /usr/local/mfs/var/mfs/

cp metadata.mfs.empty metadata.mfs

4、优化、启动服务检测端口

ln -s /usr/local/mfs/sbin/* /usr/local/sbin #将mfs的命令放到系统中识别

mfsmaster start #启动mfsmaster

[root@localhost mfs]# netstat -ntap | grep mfs #看三个监听端口

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

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

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


二、搭建MetaLogger Server服务器

1、解压缩、安装环境包

tar zxf moosefs-3.0.100-1.tar.gz -C /opt

yum install gcc gcc-c++ zlib-devel -y

2、创建用户、编译

cd /opt/moosefs-3.0.100/

useradd -s /sbin/nologin mfs

./configure --prefix=/usr/local/mfs \

--with-default-user=mfs \

--with-default-group=mfs \

--disable-mfschunkserver \ #禁用节点

--disable-mfsmount #禁用客户端挂载

make && make install

3、复制配置文件并修改

cd /usr/local/mfs/etc/mfs/

cp mfsexports.cfg.dist mfsexports.cfg

cp mfsmaster.cfg.dist mfsmaster.cfg

cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

vim mfsmetalogger.cfg

MATER_HOST = 192.168.60.141 #找到MATER_HOST模板,ip地址指向master

cd /usr/local/mfs/var/mfs/

cp metadata.mfs.empty metadata.mfs

4、优化、启动服务检测端口

ln -s /usr/local/mfs/sbin/* /usr/local/sbin/ #将mfs的命令放到系统中识别

mfsmetalogger start #启动服务

[root@localhost mfs]# netstat -ntap | grep mfs #看下状态有没有起来

tcp 0 1 192.168.60.136:55894 220.250.64.225:9419 SYN_SENT 42707/mfsmetalogger


三、搭建Chunk节点服务器

1、解压、安装环境包

tar zxf moosefs-3.0.100-1.tar.gz -C /opt

yum install gcc gcc-c++ zlib-devel -y

2、创建用户,编译

cd /opt/moosefs-3.0.100/

useradd -s /sbin/nologin mfs

./configure --prefix=/usr/local/mfs \

--with-default-user=mfs \

--with-default-group=mfs \

--disable-mfsmaster \ #禁用master模式

--disable-mfsmount #禁用用户挂载

make && make install

3、复制配置文件并修改

cd /usr/local/mfs/etc/mfs

cp mfschunkserver.cfg.dist mfschunkserver.cfg

cp mfshdd.cfg.dist mfshdd.cfg

vim mfschunkserver.cfg

MASTER_HOST = 192.168.60.141 #找到MASTER_HOST模板,IP地址指向master

vim mfshdd.cfg

#etc.

/data #设置共享目录data,需要创建

4、创建共享目录,更改数组属主

mkdir /data

chown -R mfs.mfs /data/

5、优化、启动服务查看端口

ln -s /usr/local/mfs/sbin/* /usr/local/sbin/ #将mfs的命令放到系统中识别

mfschunkserver start #启动服务

[root@localhost mfs]# netstat -ntap | grep mfs #看下状态有没有起来

tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 42714/mfschunkserve

tcp 0 0 192.168.60.144:41774 192.168.60.141:9420 ESTABLISHED 42714/mfschunkserve

两台节点服务器的配置相同,重复操作即可。


四、搭建客户端

1、解压、安装环境包

tar zxf moosefs-3.0.100-1.tar.gz -C /opt

tar zxf fuse-2.9.2.tar.gz -C /opt/

yum install gcc gcc-c++ zlib-devel -y

2、安装配置fuse

cd /opt/fuse-2.9.2/

./configuer #编译fuse

make & make install

sed -i '$a export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' /etc/profile

source /etc/profile

cd /opt/moosefs-3.0.100/ #编译mfs

useradd mfs -s /sbin/nologin

./configure --prefix=/usr/local/mfs \

--with-default-user=mfs \

--with-default-group=mfs \

--disable-mfsmater \ #禁用master

--disable-mfschunkserver \ #禁用节点

--enable-mfsmount #开启用户挂载

make && make install

3、挂载

mkdir /opt/mfs #创建挂载目录

/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.60.141 #挂载

df -h #查看挂载状态

192.168.60.141:9421 33G 0 33G 0% /opt/mfs

4、客户端一些简单操作

sed -i '$a export PATH=/usr/local/mfs/bin:$PATH' /etc/profile #mfs优化

source /etc/profile #刷新环境变量

cd /opt/mfs

echo "this is test" > test.txt

mfsgetgoal -r /opt/mfs #mfsgetgoal命令用来查询文件被复制的分数

mfssetgoal -r 3 /opt/mfs #mfssetgoal命令用来设置文件被复制的份数


五、MFS监控

在主服务器上开启监控

[root@localhost mfs]# /usr/local/mfs/sbin/mfscgiserv

lockfile created and locked

starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)


http://192.168.60.141:9425 #用它给你的端口进行访问


六、yum安装MFS扩展

MFS也可以用yum进行安装,需要配置yum源

https://moosefs.com/download/ 官网各个系统的介绍,这里我介绍一下centos的安装

curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS

curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo

以上两句话是配置yum仓库

master服务器yum安装操作:

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

chunkserver服务器yum安装的操作:

yum install moosefs-chunkserver

MetaLogger Server服务器yum安装的操作:

yum install moosefs-metalogger

client端yum安装的操作:

yum install moosefs-client

修改配置文件的操作和手工编译的操作相同

0