MFS分布式文件系统的部署

目录

 

一.MFS分布式文件系统详述

分布式简介

MFS分布式文件系统的原理

MFS文件系统的组成

MFS文件系统的工作过程

二.MFS分布式文件系统的部署

实验环境

配置Master Server

配置MetaLogger Server

配置Chunk Server1和Chunk Server2(步骤相同)

配置Client

Master Server启动监控程序,测试服务

MFS维护与灾难恢复


一.MFS分布式文件系统详述

分布式简介

  • 由于一对多的存储服务器不可以承受业务上的需求,所以分布式文件系统应运而生,采用多对多的关系(即多web服务器对多文件服务器),这样可以使得性能大幅度提升
  • 分布式文件系统(Distributed File System)是指文件系统·管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。简单来说就是把一些分散的(分布在局域网内的各个计算机上)共享文件夹,集合到一个文件夹内(虚拟共享文件夹)。对于用户来说,要访问这些共享文件夹时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟文件夹内的共享文件夹,这样用户就感觉不到这些共享文件是分散于各个计算机上的
  • 分布式文件系统的好处是集中访问、简化操作、数据容灾、提供文件得存取性能

MFS分布式文件系统的原理

  • MFS(MooseFS),是一个具有容错性的网络分布式文件系统,他把数据分散存放在多个物理服务器上,而呈现给用户的是一个统一的资源。MFS也像其他类的UNIX文件系统一样,包含了层级结构、文件属性,可以创建特殊的文件(块设备、字符设备、管道、套接字)、符号链接和硬链接

MFS文件系统的组成

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

MFS文件系统的工作过程

MFS读取数据的处理过程

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

MFS写入数据的处理过程

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

二.MFS分布式文件系统的部署

实验环境

角色 IP地址
Master Server 192.168.43.101/24
MetaLogger Server 192.168.43.102/24
Chunk Server1 192.168.43.103/24
Chunk Server2 192.168.43.104/24
Cilent 192.168.43.105/24

配置Master Server

  • 配置基本环境
##关闭安全性功能(生产环境中是永久性关闭)
systemctl stop firewalld
setenforce 0

##配置主机名
hostnamectl set-hostname master

##配置地址映射
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.101  master
192.168.43.102  metalogger
192.168.43.103  chunk1
192.168.43.104  chunk2
192.168.43.105  client
  • 安装相关依赖包

yum install -y  gcc gcc-c++ zlib-devel
  • 创建用户
[root@master ~]# useradd -s /sbin/nologin -M mfs
  • 编辑编译安装mfs源码包

[root@master ~]# cd /opt
[root@master opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@master 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
  • 复制MFS配置文件

[root@master mfs]# ls
mfsexports.cfg.sample  mfsmetalogger.cfg.sample
mfsmaster.cfg.sample   mfstopology.cfg.sample
[root@master mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg
[root@master mfs]# cp mfsexports.cfg.sample mfsexports.cfg
[root@master mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
[root@master mfs]# cp mfstopology.cfg.sample mfstopology.cfg
[root@master mfs]# ls
mfsexports.cfg         mfsmaster.cfg.sample      mfstopology.cfg
mfsexports.cfg.sample  mfsmetalogger.cfg         mfstopology.cfg.sample
mfsmaster.cfg          mfsmetalogger.cfg.sample


[root@master mfs]# cd /usr/local/mfs/var/mfs
[root@master mfs]# ls
metadata.mfs.empty
[root@master mfs]# cp metadata.mfs.empty metadata.mfs
[root@master mfs]# chown mfs:mfs /usr/local/mfs/var/mfs
  • 启动mfsmaster

[root@master ~]# /usr/local/mfs/sbin/mfsmaster start
open files limit has been set to: 16384
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
exports file has been loaded
topology file has been loaded
loading metadata ...
metadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
[root@master ~]# netstat -natp | grep mfs
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      38654/mfsmaster     
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      38654/mfsmaster     
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      38654/mfsmaster   

配置MetaLogger Server

  • 配置基本环境
##关闭安全性功能(生产环境中是永久性关闭)
systemctl stop firewalld
setenforce 0

##配置主机名
hostnamectl set-hostname metalogger

##配置地址映射
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.101  master
192.168.43.102  metalogger
192.168.43.103  chunk1
192.168.43.104  chunk2
192.168.43.105  client
  • 安装相关依赖包
yum install gcc gcc-c++ zlib-devel -y
  • 创建用户
[root@metalogger ~]# useradd -s /sbin/nologin -M mfs
  • 编辑编辑安装源码包
[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
  • 复制metalogger主配置文件且修改
[root@metalogger moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@metalogger mfs]# ls
mfsexports.cfg.sample  mfsmetalogger.cfg.sample
mfsmaster.cfg.sample   mfstopology.cfg.sample
[root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
[root@metalogger mfs]# vi /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
 MASTER_HOST = 192.168.43.101    //指定master地址
  • 开启服务
[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
open files limit has been set to: 4096
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
[root@metalogger mfs]# netstat -natp | grep mfs
tcp        0      0 192.168.43.102:42268    192.168.43.101:9419     ESTABLISHED 60076/mfsmetalogger 

配置Chunk Server1和Chunk Server2(步骤相同)

  • 配置基本环境
##关闭安全性功能(生产环境中是永久性关闭)
systemctl stop firewalld
setenforce 0

##配置主机名
hostnamectl set-hostname chunk1

##配置地址映射
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.101  master
192.168.43.102  metalogger
192.168.43.103  chunk1
192.168.43.104  chunk2
192.168.43.105  client
  • 安装相关依赖包
yum -y install gcc gcc-c++ zlib-devel
  • 创建用户
[root@chunk1 ~]# useradd -s /sbin/nologin -M mfs
  • 编辑编辑安装源码包
[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
  • 复制metalogger主配置文件且修改
[root@chunk1 moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@chunk1 mfs]# ll
总用量 32
-rw-r--r-- 1 root root 3491 4月  12 08:13 mfschunkserver.cfg.sample
-rw-r--r-- 1 root root 1648 4月  12 08:13 mfshdd.cfg.sample
-rw-r--r-- 1 root root 2175 4月  12 08:13 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.43.101

[root@chunk1 mfs]# vi mfshdd.cfg
/data	//指定数据存放目录

[root@chunk1 mfs]# mkdir /data
[root@chunk1 mfs]# chown -R mfs:mfs /data
  • 开启服务
[root@chunk1 ~]# /usr/local/mfs/sbin/mfschunkserver start
open files limit has been set to: 16384
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
setting glibc malloc arena max to 4
setting glibc malloc arena test to 4
initializing mfschunkserver modules ...
hdd space manager: path to scan: /data/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
[root@chunk1 ~]# netstat -natp | grep mfs
tcp        0      0 0.0.0.0:9422            0.0.0.0:*               LISTEN      24112/mfschunkserve 
tcp        0      0 192.168.43.103:43390    192.168.43.101:9420     ESTABLISHED 24112/mfschunkserve 

配置Client

  • 配置基本环境
##关闭安全性功能(生产环境中是永久性关闭)
systemctl stop firewalld
setenforce 0

##配置主机名
hostnamectl set-hostname client

##配置地址映射
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.101  master
192.168.43.102  metalogger
192.168.43.103  chunk1
192.168.43.104  chunk2
192.168.43.105  client
  • 安装相关依赖包
yum -y install gcc gcc-c++ zlib-devel
  • 编辑编译安装客户端
[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 instal
  • 挂载MFS文件系统
[root@client ~]#  mkdir /opt/mfs
[root@client ~]# modprobe fuse    //加载fuse模块到内核中去
[root@client ~]# /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.43.101    //挂载MFS系统 
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@client ~]# df -hT
Filesystem          Type      Size  Used Avail Use% Mounted on
/dev/sda2           xfs        10G  3.9G  6.2G  39% /
devtmpfs            devtmpfs  474M     0  474M   0% /dev
tmpfs               tmpfs     489M     0  489M   0% /dev/shm
tmpfs               tmpfs     489M  7.1M  482M   2% /run
tmpfs               tmpfs     489M     0  489M   0% /sys/fs/cgroup
/dev/sda5           xfs       4.0G   37M  4.0G   1% /home
/dev/sda1           xfs       4.0G  158M  3.9G   4% /boot
tmpfs               tmpfs      98M   12K   98M   1% /run/user/42
tmpfs               tmpfs      98M     0   98M   0% /run/user/0
192.168.43.101:9421 fuse.mfs   40G  8.8G   32G  22% /opt/mfs

注:如果要卸载MFS系统,直接使用umount /opt/mfs

  • 在client上操作MFS
[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 用来设置文件被复制的份数, 生产环境 Chunk Server 节点数量应至少
大于 2, 文件副本数小于等于 Chunk Server 服务器的数量
[root@client ~]# mfsgetgoal -r /opt/mfs
/opt/mfs:
 directories with goal          2 :          1
[root@client ~]# mfssetgoal -r 2 /opt/mfs/
/opt/mfs/:
 inodes with goal changed:                       0
 inodes with goal not changed:                   1
 inodes with permission denied:                  0
[root@client ~]# cd /opt/mfs/
[root@client mfs]# ls
[root@client mfs]# echo "123" > 1.txt 
[root@client mfs]# ls
1.txt
[root@client mfs]# mfsgetgoal 1.txt
1.txt: 2

Master Server启动监控程序,测试服务

  • 开启监控功能,此功能可以在搭建好其他服务之后开启
[root@master ~]# /usr/local/mfs/sbin/mfscgiserv
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)

MFS维护与灾难恢复

  • MFS 集群启动的顺序如下

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

  • MFS 集群停止的顺序如下

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

  • MFS灾难恢复

整个 MFS 体系中, 直接断电只有 Master 有可能无法启动, 可以在 master 上使用命令 
/usr/local/mfs/sbin/mfsmaster -a 修复

如果是全新安装的 Master, 恢复数据后, 要更改 metalogger 和 chunkserver 配置
MASTER_HOST 的 IP, 客户端也需要重新挂载

发布了125 篇原创文章 · 获赞 141 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_42761527/article/details/104476294