MFS分布式文件系统(理论+实战)

一、MFS简介

MFS 正式推出是在2008 年 5 月, 是一个具有容错功能的、 高可用、 可扩展的海量级分布式文件系统。 MFS 把数据分散在多台服务器上, 但用户看到的只是一个源。 MFS 也像其他类 UNIX 文件系统一样,包含了层级结构、 文件属性, 可以创建特殊的文件(块设备、 字符设备、 管道、 套接字)、符号链接和硬链接。

1.1、MFS优势

  • 集中访问
  • 简化操作
  • 数据容灾
  • 提高文件存取性能

1.2、MFS原理

MFS 是一个具有容错性的网络分布式文件系统, 它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。

1.3、MFS文件系统的组成

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

  • 元数据日志服务器(MetaLogger): 备份 Master 服务器的变化日志文件, 文件类型为 changelog_ml.*.mfs。 当 Master 服务器数据丢失或者损坏,可以从日志服务器中取得文件恢复

  • 数据存储服务器(Chunk Server): 真正存储数据的服务器。 存储文件时, 会把文件分块保存, 并在数据服务器之间复制, 数据服务器越多, 能使用的“容量” 就越大, 可靠性就越高, 性能越好。

  • 客户端(Client): 可以像挂载 NFS 一样挂载 MFS 文件系统, 其操作是相同的。

二、MFS分布式文件系统部署

2.1、部署准备

准备六台虚拟机,都要关闭防火墙、关闭核心防护、配置主机名、配置yum,配置hosts文件。
在这里插入图片描述

●关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

●关闭核心防护
setenforce 0
vi /etc/sysconfig/selinux 
SELINUX=disabled

●配置主机名
hostnamectl set-hostname mfsmaster
hostnamectl set-hostname metalogger
hostnamectl set-hostname chunk1
hostnamectl set-hostname chunk2
hostnamectl set-hostname chunk3
hostnamectl set-hostname client

●配置hosts文件
vi /etc/hosts
192.168.100.129     mfsmaster
192.168.100.131    	metalogger
192.168.100.132      chunk1
192.168.100.133     chunk2
192.168.100.134    chunk3
192.168.100.135     client

●安装编译包
yum -y install gcc gcc-c++ make zlib-devel

2.2、搭建 Master Server

//创建用户
[root@mfsmaster ~]# useradd -s /sbin/nologin -M mfs

//安装源码包  
[root@mfsmaster opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@mfsmaster opt]# cd /opt/moosefs-3.0.100/

[root@mfsmaster moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

[root@mfsmaster moosefs-3.0.100]# make && make install

//复制 master 配置文件
[root@mfsmaster moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@mfsmaster mfs]# ll
总用量 24
总用量 24
-rw-r--r--. 1 root root 4057 3月  24 17:05 mfsexports.cfg.sample
-rw-r--r--. 1 root root 8597 3月  24 17:05 mfsmaster.cfg.sample
-rw-r--r--. 1 root root 2175 3月  24 17:05 mfsmetalogger.cfg.sample
-rw-r--r--. 1 root root 1052 3月  24 17:05 mfstopology.cfg.sample
[root@mfsmaster mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg
[root@mfsmaster mfs]# cp mfsexports.cfg.sample mfsexports.cfg
[root@mfsmaster mfs]# cp mfstopology.cfg.sample mfstopology.cfg

[root@mfsmaster mfs]# cd /usr/local/mfs/var/mfs/
[root@mfsmaster mfs]# cp metadata.mfs.empty metadata.mfs

[root@mfsmaster mfs]# chown mfs:mfs /usr/local/mfs/var/mfs

[root@mfsmaster mfs]# /usr/local/mfs/sbin/mfsmaster start      #####启动   
####停止 Master Server 的命令是/usr/local/mfs/sbin/mfsmaster stop###

[root@mfsmaster mfs]# netstat -anpt | grep mfs
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      100461/mfsmaster    
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      100461/mfsmaster    
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      100461/mfsmaster 
端口介绍:
9419----元数据日志服务器
9420----元数据存储
9421----客户端用的

2.3、搭建 MFS 日志服务器

//创建用户
[root@metalogger ~]# useradd -s /sbin/nologin -M mfs

//安装源码包   
[root@metalogger opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@metalogger opt]# cd /opt/moosefs-3.0.100/

[root@metalogger moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

[root@metalogger moosefs-3.0.100]# make && make install

//安装源码包   复制 metalogger 主配置文件
[root@metalogger moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs
[root@metalogger mfs]# ll
总用量 24
-rw-r--r--. 1 root root 4057 3月  24 17:06 mfsexports.cfg.sample
-rw-r--r--. 1 root root 8597 3月  24 17:06 mfsmaster.cfg.sample
-rw-r--r--. 1 root root 2175 3月  24 17:06 mfsmetalogger.cfg.sample
-rw-r--r--. 1 root root 1052 3月  24 17:06 mfstopology.cfg.sample
[root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

 //修改metalogger主配置文件, 指定master地址
[root@metalogger mfs]# vi /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
 MASTER_HOST = 192.168.100.129


[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
[root@metalogger mfs]# netstat -anpt | grep mfs
tcp        0      0 192.168.100.131:45736   192.168.100.129:9419    ESTABLISHED 16271/mfsmetalogger 

2.4、搭建 chunk 存储端

三台chunk存储服务器的配置一样,所以就不一一展示了。

//创建用户
[root@chunk1 ~]# useradd -s /sbin/nologin -M mfs

//安装源码包  
[root@chunk1 opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@chunk1 opt]# cd /opt/moosefs-3.0.100/

[root@chunk1 moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfsmount

[root@chunk1 moosefs-3.0.100]# make && make install

//复制 mfschunk 配置文件
[root@chunk1 moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@chunk1 mfs]# ll
总用量 12
-rw-r--r--. 1 root root 3491 3月  24 17:21 mfschunkserver.cfg.sample
-rw-r--r--. 1 root root 1648 3月  24 17:21 mfshdd.cfg.sample
-rw-r--r--. 1 root root 2175 3月  24 17:21 mfsmetalogger.cfg.sample

[root@chunk1 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@chunk1 mfs]# cp mfshdd.cfg.sample mfshdd.cfg

//修改 mfschunk 主配置文件, 指定 master。
[root@chunk1 mfs]# vi mfschunkserver.cfg
MASTER_HOST = 192.168.100.129

[root@chunk1 mfs]# vi mfshdd.cfg
#在文件末尾添加以下目录
/data

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

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

[root@chunk1 mfs]# netstat -anpt | grep mfs
tcp        0      0 0.0.0.0:9422            0.0.0.0:*               LISTEN      21544/mfschunkserve 
tcp        0      0 192.168.100.132:49788   192.168.100.129:9420    ESTABLISHED 21544/mfschunkserve

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5、搭建客户端并挂载MFS

  • 客户端通过 mfsmount 与 MFS文件文件系统进行沟通,管理服务器(接收和修改文件元数据)、chunkservers(实际的文件交换数据)。
  • mfsmount 是基于FUSE的机制 (用户空间文件系统中)
//安装fuse-2.9.2.tar.gz包
[root@client ~]# cd /opt
[root@client opt]# tar xzvf fuse-2.9.2.tar.gz -C /opt
[root@client opt]# cd fuse-2.9.2
[root@client fuse-2.9.2]# ./configure
[root@client fuse-2.9.2]# make && make install

//设置环境变量
[root@client fuse-2.9.2]# vi /etc/profile
#在文件末尾添加以下代码
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
[root@client fuse-2.9.2]# source /etc/profile   #执行使之生效

//安装 MFS 客户端
[root@client fuse-2.9.2]# cd /opt
[root@client opt]# useradd -s /sbin/nologin -M mfs    #创建系统用户
[root@client opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@client opt]# cd /opt/moosefs-3.0.100/
[root@client moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount

[root@client moosefs-3.0.100]# make && make install

//挂载 MFS 文件系统
[root@client moosefs-3.0.100]# cd ~
[root@client ~]#  mkdir /opt/mfs
[root@client ~]#  modprobe fuse     # 加载 fuse 模块到内核
[root@client ~]#  /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.100.129     ####master地址

在这里插入图片描述

//设置永久挂载
写挂载脚本,配置成开机自启。
cd /etc/profile.d/
vi mt.sh
#!/bin/bash
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.100.40 >/dev/null 2>&1
chmod +x mt.sh

三、MFS的使用

3.1、优化并使用命令测试

MFS 在客户端安装完毕后, 会生成/usr/local/mfs/bin/目录, 在这个目录下有很多命令是用户所需要的。
在这里插入图片描述
为了方便使用这些命令, 可将/usr/local/mfs/bin 路径加入到环境变量中

[root@client ~]# vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH=/usr/local/mfs/bin:$PATH                 ###此处添加

[root@client ~]# source /etc/profile
● mfsgetgoal 命令用来查询文件被复制的份数,利用 -r 命令可以对整个目录进行递归操作。
   goal 是指文件被复制的份数

[root@client ~]# mfsgetgoal -r /opt/mfs
/opt/mfs:
 directories with goal          2 :          1
  
● mfsgetgoal 命令用来设置文件被复制的份数, 生产环境 Chunk Server节点数量应至少
大于 2, 文件副本数小于等于 Chunk Server服务器的数量

[root@client ~]# mfssetgoal -r 3 /opt/mfs/
/opt/mfs/:
 inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0

##创建文件测试mfssetgoal命令的结果
[root@client ~]# cd /opt/mfs/
[root@client bin]# cd /opt/mfs/
[root@client mfs]# touch abc
[root@client mfs]# mfsgetgoal abc
abc: 3

在这里插入图片描述
在这里插入图片描述

3.2、使用 MFS 网页版监控

【Master Server----启动监控程序】
[root@mfsmaster ~]#  /usr/local/mfs/sbin/mfscgiserv

【在真机中打开浏览器访问】
http://192.168.100.129:9425/mfs.cgi?masterhost=mfsmaster  //注意主机名和IP地址

在这里插入图片描述
在这里插入图片描述

其中各部分的含义如下。
Info 部分: 显示了 MFS 的基本信息。
Servers 部分: 列出现有 Chunk Server。
Disks 部分: 列出现有 Chunk Server 硬盘信息。
Exports 部分: 列出可被挂载的目录。
Mounts 部分: 列出被挂载的目录。
Operations 部分: 显示正在执行的操作。
Resources 部分: 列出当前存储信息。
Quitas 部分: 列出当前配额信息。
Master charts 部分: 显示 Master Server 的操作情况, 读、 写、 删除等操作。
Server charts 部分: 显示 Chunk Server 的操作情况、 数据传输率及系统状态。
原创文章 112 获赞 44 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_28361541/article/details/105074981