MFS分布式文件存储架构搭建
随着一些企业的发展,曾今公司内部使用的NFS无法负担起繁重的访问量。尽管有rsync进行远程数据同步,但是依旧无法突破存储瓶颈。而且NFS容易造成单节点故障大大影响了公司内部业务的运转。这是我们运维工程师不想看的。
MFS分布式文件系统
分布式文件系统是将存储资源拆散并且通过网络分别存入存储节点之中并创建副本。用户需要存储资源时,只需要访问元数据节点,元数据节点会根据用户的需求访问存储节点查看是否有足够的空间进行存储。之后元数据节点会返回告诉用户,应该将数据存储在哪一个节点之中。分布式带了许多好处:提高文件的存储性能、数据具有容灾性等。
MFS的组成&工作流程
元数据服务器(master):在整个体系中负责管理文件系统, 维护元数据。
元数据日志服务器(MetaLogger):备份 Master 服务器的变化日志文件, 文件类型为:changelog_ml.*.mfs。 当 Master 服务器数据丢失或者损坏,可以从日志服务器中取得文件恢复。
数据存储服务器(Chunk Server): 真正存储数据的服务器。 存储文件时, 会把文件分块保存, 并在数据服务器之间复制, 数据服务器越多, 能使用的“容量” 就越大, 可靠性就越高, 性能越好。
客户端(Client): 可以像挂载 NFS 一样挂载 MFS 文件系统。
一、MFS 读取数据的处理过程
1.客户端向元数据服务器发出读请求。
2.元数据服务器把所需数据存放的位置(Chunk Server 的 IP 地址和 Chunk 编号) 告知客户端。
3.客户端向已知的 Chunk Server 请求发送数据。
4.Chunk Server 向客户端发送数据。
二、MFS 写入数据的处理过程
1.客户端向元数据服务器发送写入请求。
2.元数据服务器与 Chunk Server 进行交互(只有当所需的分块 Chunks 存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块 Chunks,创建成功后由Servers 告知元数据服务器操作成功。
3.元数据服务器告知客户端, 可以在哪个 Chunk Server 的哪些 Chunks 写入数据。
4.客户端向指定的 Chunk Server 写入数据。
5.该 Chunk Server 与其他 Chunk Server 进行数据同步, 同步成功后 Chunk Server 告知客户端数据写入成功。
6.客户端告知元数据服务器本次写入完毕。
搭建MFS
一、环境准备:
需要六台虚拟机:一台元数据节点、一台元数据日志节点、三台存储节点和一台客户端。
关闭所有节点的防火墙和核心防护。
二、搭建流程
1.为所有节点配置主机名。
hostnamectl set-hostname master
hostnamectl set-hostname metalog
hostnamectl set-hostname chunk1
hostnamectl set-hostname chunk2
hostnamectl set-hostname chunk3
hostnamectl set-hostname client
2.配置主机映射
vim /etc/hosts
192.168.80.100 master
192.168.80.101 metalog
192.168.80.102 chunk1
192.168.80.103 chunk2
192.168.80.104 chunk3
192.168.80.105 client
3.所有节点安装编译环境
yum -y install gcc zlib-devel
################################################################################
4.master端搭建:创建没有家目录、无法从终端登陆的程序型用户。
useradd -s /sbin/nologin -M mfs
5.编译安装,指定相应的安装路径、用户、组、服务端。
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount
make && make install
6.配置配置文件,开启元数据服务,查看监听端口。
首先到安装路径下。
cd /usr/local/mfs/
将元数据节点配置文件模板进行备份复制。
cp mfsmaster.cfg.sample mfsmaster.cfg
cp mfsexports.cfg.sample mfsexports.cfg
cp mfstopology.cfg.sample mfstopology.cfg
cd /usr/local/mfs/var/mfs/
cp -p metadata.mfs.empty metadata.mfs
启动元数据服务,并查看端口是否开。
/usr/local/mfs/sbin/mfsmaster start
netstat -anpt | grep mfs
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200324180408889.png)
###############################################################################
7.编译安装元数据日志端。
和之前master节点安装类似,创建用户,解压安装包,编译安装。
useradd -s /sbin/nologin -M mfs
./configure
–prefix=/usr/local/mfs
–with-default-user=mfs
–with-default-group=mfs
–disable-mfschunkserver
–disable-mfsmount
make && make install
8.修改日志端的配置文件
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
vim mfsmetalogger.cfg
51 # MooseFS master host, IP is allowed only in single-master installations (default is mfsmaster)
52 # MASTER_HOST = mfsmaster
53 MASTER_HOST = 192.168.80.100
添加元数据节点IP地址。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020032418144059.png)
9.开启日志功能。
/usr/local/mfs/sbin/mfsmetalogger start
netstat -anpt | grep mfs
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200324182013503.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1F3UU5pZ2h0bWFyZQ==,size_16,color_FFFFFF,t_70)
##########################################################################
三个存储节点的安装过程都是一样的。
10.创建程序型用户,解压安装包,编译安装。
useradd -s /sbin/nologin -M mfs
./configure
–prefix=/usr/local/mfs
–with-default-user=mfs
–with-default-group=mfs
–disable-mfsmaster
–disable-mfsmount
make && make instal
修改存储节点配置文件。
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.sample mfschunkserver.cfg
cp mfshdd.cfg.sample mfshdd.cfg
vim mfschunkserver.cfg
#添加主节点IP地址。
MASTER_HOST = 192.168.80.100
#添加/data目录
vi mfshdd.cfg
#在最后一行添加/data路径
/data
#创建/data目录,并修改属主和属组。
mkdir /data
chown -R mfs:mfs /data
11.开启存储节点功能。
/usr/local/mfs/sbin/mfschunkserver start
netstat -anpt | grep mfs
#############################################################################
12.客户端安装
解压fuse-2.9.2安装包,并编译安装。
tar xzvf fuse-2.9.2.tar.gz -C /opt
cd fuse-2.9.2
./configure
make && make install
设置环境变量
vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
13.创建程序型用户,安装mfs客户端。
useradd -s /sbin/nologin -M mfs
安装mfs客户端
cd /opt/moosefs-3.0.100/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount
make && make install
14.创建一个挂载点,并挂载mfs。
#创建挂载点
mkdir /opt/mfs
#加载fuse到系统内核
modprobe fuse
#临时挂载,主节点IP地址
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.80.100
15.用开机启动脚本,永久挂载mfs
在/etc/profile.d目录下配置启动脚本
vim mfs_mount.sh
#!/bin/bash
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.80.100 >/dev/null 2>&1
chmod +x mfs_mount.sh
这样mfs分布式存储就搭建好了。
开启监控dashboard
在主节点上输入开启控制开命令。之后通过游览器查看存储信息。
/usr/local/mfs/sbin/mfscgiserv
游览器里输入地址
http://192.168.80.100:9425/mfs.cgi?masterhost=mfs-master
综合信息界面,包含节点概括信息。
磁盘使用信息。
挂载点信息