Linux系统----MFS分布式存储

分布式简介

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

分布式文件系统优势

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

MFS原理

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

MFS文件系统的组成

  • 元数据服务器(Master): 在整个体系中负责管理文件系统, 维护元数据
  • 元数据日志服务器(MetaLogger): 备份 Master 服务器的变化日志文件, 文件类型为
                                                                changelog_ml.*.mfs。 当 Master 服务器数据丢失或者损坏,
                                                                 可以从日志服务器中取得文件恢复
  • 数据存储服务器(Chunk Server): 真正存储数据的服务器。 存储文件时, 会把文件分块保存, 
                       并在数据服务器之间复制, 数据服务器越多, 能使用的“容量” 
                                                               就越大, 可靠性就越高, 性能越好。
  • 客户端(Client): 可以像挂载 NFS 一样挂载 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地址 操作系统 软件包
mfsmaster 192.168.179.137 CentOS 7.6  
metalogger 192.168.179.128 CentOS 7.6  
chunk1 192.168.179.133 CentOS 7.6  
chunk2 192.168.179.148 CentOS 7.6  
chunk3 192.168.179.129 CentOS 7.6  
client 192.168.179.130 CentOS 7.6  

环境准备(所有服务器)

  • 关闭防火墙
  • 关闭核心功能
  • 配置主机名
  • 配置hosts
systemctl stop firewalld.service 

setenforce 0

hostnamectl set-hostname mfsmaster

hostnamectl set-hostname metalogger

hostnamectl set-hostname chunk1

hostnamectl set-hostname chunk2

hostnamectl set-hostname chunk3

hostnamectl set-hostname client
  • vim /etc/hosts

搭建Master Server

//安装相关依赖包
yum -y install gcc gcc-c++ zlib-devel

//创建用户
useradd -s /sbin/nologin -M mfs

//安装源码包
cd /mnt
tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
cd /opt/moosefs-3.0.100/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

//编译安装
make && make install

//复制 master 配置文件
cd /usr/local/mfs/etc/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
  • 查看服务状态

搭建MetaLogger server

//安装相关依赖包
yum -y install gcc zlib-devel

//创建用户
 useradd -s /sbin/nologin -M mfs

//安装源码包   
cd /mnt
tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
cd /opt/moosefs-3.0.100/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

//编译安装
make && make install

//安装源码包,复制metalogger主配置文件
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

//修改metalogger主配置文件,指定 master 地址
vi /usr/local/mfs/etc/mfs/mfsmetalogger.cfg

MASTER_HOST = 192.168.179.137

//启动服务
/usr/local/mfs/sbin/mfsmetalogger start

//查看服务状态
 netstat -anpt | grep mfs

搭建chunkserver1、chunkserver2、chunkserver3

//安装相关依赖包
yum -y install gcc zlib-devel

//创建用户
useradd -s /sbin/nologin -M mfs

//安装源码包
cd /mnt
tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
cd /opt/moosefs-3.0.100/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfsmount

//编译安装
make && make install

//复制 mfschunk 配置文件
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.sample mfschunkserver.cfg
cp mfshdd.cfg.sample mfshdd.cfg

//修改mfschunk主配置文件,指定master。
vi mfschunkserver.cfg
MASTER_HOST = 192.168.179.137

vi mfshdd.cfg
/data

//创建存储目录
mkdir /data

//修改权限
chown -R mfs:mfs /data

//启动服务
/usr/local/mfs/sbin/mfschunkserver start

//查看服务状态
netstat -anpt | grep mfs

搭建client

//安装相关依赖包
yum -y install gcc zlib-devel

//安装 FUSE
cd /opt
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

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

//安装 MFS 客户端
cd /mnt/Y2C
tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/

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

//挂载 MFS 文件系统
cd ~
mkdir /opt/mfs
modprobe fuse                 ####加载 fuse 模块到内核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.179.137     ####master地址

//查看挂载情况
df -hT

###如果要卸载 MFS, 使用命令 umount /opt/mfs 即可###

MFS常用操作

MFS 在客户端安装完毕后, 会生成/usr/local/mfs/bin/目录, 在这个目录下有很多命

令是用户所需要的。 为了方便使用这些命令, 可将/usr/local/mfs/bin 加入到环境变量中

vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH             ##末尾添加
source /etc/profile

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

goal 是指文件被复制的份数

mfsgetgoal -r /opt/mfs

命令 mfsgetgoal 用来设置文件被复制的份数, 生产环境 Chunk Server 节点数量应至少
大于 2, 文件副本数小于等于 Chunk Server 服务器的数量

mfssetgoal -r 3 /opt/mfs/

创建文件测试如下

cd /opt/mfs/
touch 51xit
mfsgetgoal 51xit
51xit: 3

Master Server----启动监控程序

/usr/local/mfs/sbin/mfscgiserv

打开浏览器访问
http://192.168.179.137:9425
http://192.168.179.137:9425/mfs.cgi?masterhost=mfsmaster  //注意主机名

发布了78 篇原创文章 · 获赞 5 · 访问量 2566

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/105070856