MFS分布式存储安装部署

分布式

1、简介
分布式文件系统(Distributed File System) 是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。简单来说就是把一些分散的(分布在局域网内各个计算机上) 共享文件夹, 集合到一个文件夹内(虚拟共享文件夹)。 对于用户来说, 要访问这些共享文件夹时, 只要打开这个虚拟共享文件夹, 就可以看到所有链接到虚拟共享文件夹内的共享文件夹, 用户感觉不到这些共享文件是分散于各个计算机上的。分布式文件系统的好处是集中访问、简化操作、数据容灾、提高文件存取性能
2、分布式优势

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

MFS分布式存储

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

  • 元数据服务器(Master): 在整个体系中负责管理文件系统, 维护元数据
  • 元数据日志服务器(MetaLogger): 备份 Master 服务器的变化日志文件, 文件类型为changelog_ml.*.mfs。 当 Master 服务器数据丢失或者损坏,可以从日志服务器中取得文件恢复
  • 数据存储服务器(Chunk Server): 真正存储数据的服务器。 存储文件时, 会把文件分块保存, 并在数据服务器之间复制, 数据服务器越多, 能使用的“容量” 就越大, 可靠性就越高, 性能越好。
  • 客户端(Client): 可以像挂载 NFS 一样挂载 MFS 文件系统, 其操作是相同的

4、MFS 读取数据的处理过程

  • 客户端向元数据服务器发出读请求。
  • 元数据服务器把所需数据存放的位置(Chunk Server 的 IP 地址和 Chunk 编号) 告知客户端。
  • 客户端向已知的 Chunk Server 请求发送数据。
  • Chunk Server 向客户端发送数据。

5、MFS 写入数据的处理过程

  • 客户端向元数据服务器发送写入请求。
  • 元数据服务器与 Chunk Server 进行交互(只有当所需的分块 Chunks 存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块 Chunks,创建成功后由Servers 告知元数据服务器操作成功
  • 元数据服务器告知客户端, 可以在哪个 Chunk Server 的哪些 Chunks 写入数据。
  • 客户端向指定的 Chunk Server 写入数据
  • 该 Chunk Server 与其他 Chunk Server 进行数据同步, 同步成功后 Chunk Server 告知客户端数据写入成功。
  • 客户端告知元数据服务器本次写入完毕。

实验环境

1、基本组成架构拓扑图
在这里插入图片描述
2、IP地址规划

主机名 操作系统 IP地址
mfsmaster CentOS 7.6 192.168.7.128
metalogger CentOS 7.6 192.168.7.129
chunk1 CentOS 7.6 192.168.7.134
chunk2 CentOS 7.6 192.168.7.138
chunk3 CentOS 7.6 192.168.7.135
client CentOS 7.6 192.168.7.157

MFS安装部署

实验所需安装包:
链接:https://pan.baidu.com/s/1dvmx5McKBqNfXfdkd07deg
提取码:p42o
1、环境准备(所有服务器)
(1)关闭防火墙
(2)关闭核心功能
(3)配置主机名
(4)配置hosts
(5)将安装包上传至/opt目录下
2、搭建Master Server
(1)安装依赖包

[root@mfsmaster ~]# hostnamectl set-hostname mfsmaster

(2)创建用户

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

(3)安装源码包

[root@mfsmaster ~]# cd /opt
[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

(4)复制master配置文件,启动服务

[root@mfsmaster moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[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
[root@mfsmaster mfs]# netstat -anpt | grep mfs
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      7028/mfmaster      
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      7028/mfmaster      
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      7028/mfmaster      

3、搭建MetaLogger server
(1)安装相关依赖包

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

(2)创建用户

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

(3)安装源码包 ##上传到/opt目录

[root@metalogger ~]# cd /opt
[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

(4)复制metalogger主配置文件

[root@metalogger moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs
[root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

(5)修改metalogger主配置文件, 指定master地址

[root@metalogger mfs]# vi /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
 MASTER_HOST = 192.168.7.128

(6)启动服务

[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
[root@metalogger mfs]# netstat -anpt | grep mfs
tcp        0      0 192.168.7.129:48212     192.168.7.128:9419      ESTABLISHED 7057/mfmetalogger

4、搭建chunkserver1、chunkserver2、chunkserver3
(1)安装相关依赖包

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

(2)创建用户

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

(3)安装源码包

[root@chunk1 ~]# cd /opt
[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

(4)复制mfschunk配置文件

[root@chunk1 moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@chunk1 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@chunk1 mfs]# cp mfshdd.cfg.sample mfshdd.cfg

(5)修改mfschunk主配置文件, 指定master

[root@chunk1 mfs]# vi mfschunkserver.cfg
MASTER_HOST = 192.168.7.128

[root@chunk1 mfs]# vi mfshdd.cfg
/data

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

(6)启动服务

[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      7187/mfchunkserver 
tcp        0      0 192.168.7.134:47880     192.168.7.128:9420      ESTABLISHED 7187/mfchunkserver 

5、搭建client
(1)安装相关依赖包

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

(2)安装FUSE

[root@client ~]# cd /opt
[root@client opt]# tar zxvf fuse-2.9.2.tar.gz
[root@client opt]# cd fuse-2.9.2
[root@client fuse-2.9.2]# ./configure
[root@client fuse-2.9.2]# make && make install

(3)设置环境变量

[root@client ~]# vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

[root@client ~]# source /etc/profile

(4)安装MFS客户端

[root@chunk1 ~]# useradd -s /sbin/nologin -M mfs
[root@client ~]# cd /opt
[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

(5)挂载MFS文件系统

[root@client ~]# mkdir /opt/mfs
#加载fuse模块到内核
[root@client ~]# modprobe fuse
#挂载
[root@client ~]# /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.7.128
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root

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

[root@client ~]# vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
[root@client ~]# source /etc/profile

(2)mfsgetgoal 命令用来查询文件被复制的份数, 利用-r 命令可以对整个目录进行递归,goal 是指文件被复制的份数

[root@client ~]# mfsgetgoal -r /opt/mfs
/opt/mfs:
 directories with goal          2 :          1

(3) 命令 mfssetgoal 用来设置文件被复制的份数, 生产环境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

(4)创建文件测试

[root@client ~]# cd /opt/mfs/
[root@client mfs]# touch test01
[root@client mfs]# mfsgetgoal test01 
test01: 3

6、Master Server启动监控程序

[root@mfsmaster ~]#  /usr/local/mfs/sbin/mfscgiserv

使用浏览器打开网址http://192.168.7.128:9425查看
在这里插入图片描述其中各部分的含义如下:

  • Info 部分: 显示了 MFS 的基本信息
  • Servers 部分: 列出现有 Chunk Server
  • Disks 部分: 列出现有 Chunk Server 硬盘信息
  • Exports 部分: 列出可被挂载的目录
  • Mounts 部分: 列出被挂载的目录
  • Operations 部分: 显示正在执行的操作
  • Resources 部分: 列出当前存储信息
  • Quitas 部分: 列出当前配额信息
  • Master charts 部分: 显示 Master Server 的操作情况, 读、 写、 删除等操作
  • Server charts 部分: 显示 Chunk Server 的操作情况、 数据传输率及系统状态

7、MFS 集群的启动与停止
(1)MFS 集群启动的顺序如下

  • 启动 mfsmaster 进程。
  • 启动所有的 mfschunkserver 进程。
  • 启动 mfsmetalogger 进程(如果配置了 mfsmetalogger)。
  • 在所有的客户端挂载 MFS 文件系统。

(2)MFS 集群停止的顺序如下。

  • 在所有的客户端卸载 MFS 文件系统。
  • 用 mfschunkserver stop 命令停止 chunkserver 进程。
  • 用 mfsmetalogger stop 命令停止 metalogger 进程。
  • 用 mfsmaster stop 命令停止 master 进程

8、MFS灾难恢复
(1)整个 MFS 体系中, 直接断电只有 Master 有可能无法启动, 可以在 master 上使用命令 /usr/local/mfs/sbin/mfsmaster -a修复
(2)MFS元数据通常有两部分的数据,分别如下
①主要元数据文件 metadata.mfs, 当 mfsmaster 运行时会被命名为 metadata.mfs.back
②元数据改变日志 changelog.*.mfs, 存储了过去的 N 小时的文件改变(N 的数值是由
BACK_LOGS 参数设置的, 参数的设置在 mfschunkserver.cfg 配置文件中)
③在 Master 发生故障时, 可以从 MetaLogger 中恢复 Master, 步骤如下:

  • 安装一台 mfsmaster, 利用同样的配置来配置这台 mfsmaster。
  • 将 metalogger 上 /usr/local/mfs/var/mfs/目录下的文件复制到 mfsmaster 相应的目
    录中
[root@mfsmaster ~]#scp [email protected]:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/
  • 利用 mfsmetarestore 命令合并元数据 changelogs。
[root@mfsmaster ~]#/usr/local/mfs/sbin/mfsmaster -a
  • 如果是全新安装的 Master, 恢复数据后, 要更改 metalogger 和 chunkserver 配置MASTER_HOST 的 IP, 客户端也需要重新挂载
发布了95 篇原创文章 · 获赞 197 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45682995/article/details/105013464