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

Bertha 。 2023-07-18 05:56 130阅读 0赞

文章目录

    • 一、MFS简介
      • 1.1、MFS优势
      • 1.2、MFS原理
      • 1.3、MFS文件系统的组成
    • 二、MFS分布式文件系统部署
      • 2.1、部署准备
      • 2.2、搭建 Master Server
      • 2.3、搭建 MFS 日志服务器
      • 2.4、搭建 chunk 存储端
      • 2.5、搭建客户端并挂载MFS
    • 三、MFS的使用
      • 3.1、优化并使用命令测试
      • 3.2、使用 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文件。
在这里插入图片描述

  1. ●关闭防火墙
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. ●关闭核心防护
  5. setenforce 0
  6. vi /etc/sysconfig/selinux
  7. SELINUX=disabled
  8. ●配置主机名
  9. hostnamectl set-hostname mfsmaster
  10. hostnamectl set-hostname metalogger
  11. hostnamectl set-hostname chunk1
  12. hostnamectl set-hostname chunk2
  13. hostnamectl set-hostname chunk3
  14. hostnamectl set-hostname client
  15. ●配置hosts文件
  16. vi /etc/hosts
  17. 192.168.100.129 mfsmaster
  18. 192.168.100.131 metalogger
  19. 192.168.100.132 chunk1
  20. 192.168.100.133 chunk2
  21. 192.168.100.134 chunk3
  22. 192.168.100.135 client
  23. ●安装编译包
  24. yum -y install gcc gcc-c++ make zlib-devel

2.2、搭建 Master Server

  1. //创建用户
  2. [root@mfsmaster ~]# useradd -s /sbin/nologin -M mfs
  3. //安装源码包
  4. [root@mfsmaster opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
  5. [root@mfsmaster opt]# cd /opt/moosefs-3.0.100/
  6. [root@mfsmaster moosefs-3.0.100]#
  7. ./configure \
  8. --prefix=/usr/local/mfs \
  9. --with-default-user=mfs \
  10. --with-default-group=mfs \
  11. --disable-mfschunkserver \
  12. --disable-mfsmount
  13. [root@mfsmaster moosefs-3.0.100]# make && make install
  14. //复制 master 配置文件
  15. [root@mfsmaster moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
  16. [root@mfsmaster mfs]# ll
  17. 总用量 24
  18. 总用量 24
  19. -rw-r--r--. 1 root root 4057 3 24 17:05 mfsexports.cfg.sample
  20. -rw-r--r--. 1 root root 8597 3 24 17:05 mfsmaster.cfg.sample
  21. -rw-r--r--. 1 root root 2175 3 24 17:05 mfsmetalogger.cfg.sample
  22. -rw-r--r--. 1 root root 1052 3 24 17:05 mfstopology.cfg.sample
  23. [root@mfsmaster mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg
  24. [root@mfsmaster mfs]# cp mfsexports.cfg.sample mfsexports.cfg
  25. [root@mfsmaster mfs]# cp mfstopology.cfg.sample mfstopology.cfg
  26. [root@mfsmaster mfs]# cd /usr/local/mfs/var/mfs/
  27. [root@mfsmaster mfs]# cp metadata.mfs.empty metadata.mfs
  28. [root@mfsmaster mfs]# chown mfs:mfs /usr/local/mfs/var/mfs
  29. [root@mfsmaster mfs]# /usr/local/mfs/sbin/mfsmaster start #####启动
  30. ####停止 Master Server 的命令是/usr/local/mfs/sbin/mfsmaster stop###
  31. [root@mfsmaster mfs]# netstat -anpt | grep mfs
  32. tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 100461/mfsmaster
  33. tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 100461/mfsmaster
  34. tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 100461/mfsmaster
  35. 端口介绍:
  36. 9419----元数据日志服务器
  37. 9420----元数据存储
  38. 9421----客户端用的

2.3、搭建 MFS 日志服务器

  1. //创建用户
  2. [root@metalogger ~]# useradd -s /sbin/nologin -M mfs
  3. //安装源码包
  4. [root@metalogger opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
  5. [root@metalogger opt]# cd /opt/moosefs-3.0.100/
  6. [root@metalogger moosefs-3.0.100]#
  7. ./configure \
  8. --prefix=/usr/local/mfs \
  9. --with-default-user=mfs \
  10. --with-default-group=mfs \
  11. --disable-mfschunkserver \
  12. --disable-mfsmount
  13. [root@metalogger moosefs-3.0.100]# make && make install
  14. //安装源码包 复制 metalogger 主配置文件
  15. [root@metalogger moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs
  16. [root@metalogger mfs]# ll
  17. 总用量 24
  18. -rw-r--r--. 1 root root 4057 3 24 17:06 mfsexports.cfg.sample
  19. -rw-r--r--. 1 root root 8597 3 24 17:06 mfsmaster.cfg.sample
  20. -rw-r--r--. 1 root root 2175 3 24 17:06 mfsmetalogger.cfg.sample
  21. -rw-r--r--. 1 root root 1052 3 24 17:06 mfstopology.cfg.sample
  22. [root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
  23. //修改metalogger主配置文件, 指定master地址
  24. [root@metalogger mfs]# vi /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
  25. MASTER_HOST = 192.168.100.129
  26. [root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
  27. [root@metalogger mfs]# netstat -anpt | grep mfs
  28. tcp 0 0 192.168.100.131:45736 192.168.100.129:9419 ESTABLISHED 16271/mfsmetalogger

2.4、搭建 chunk 存储端

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

  1. //创建用户
  2. [root@chunk1 ~]# useradd -s /sbin/nologin -M mfs
  3. //安装源码包
  4. [root@chunk1 opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
  5. [root@chunk1 opt]# cd /opt/moosefs-3.0.100/
  6. [root@chunk1 moosefs-3.0.100]#
  7. ./configure \
  8. --prefix=/usr/local/mfs \
  9. --with-default-user=mfs \
  10. --with-default-group=mfs \
  11. --disable-mfsmaster \
  12. --disable-mfsmount
  13. [root@chunk1 moosefs-3.0.100]# make && make install
  14. //复制 mfschunk 配置文件
  15. [root@chunk1 moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
  16. [root@chunk1 mfs]# ll
  17. 总用量 12
  18. -rw-r--r--. 1 root root 3491 3 24 17:21 mfschunkserver.cfg.sample
  19. -rw-r--r--. 1 root root 1648 3 24 17:21 mfshdd.cfg.sample
  20. -rw-r--r--. 1 root root 2175 3 24 17:21 mfsmetalogger.cfg.sample
  21. [root@chunk1 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
  22. [root@chunk1 mfs]# cp mfshdd.cfg.sample mfshdd.cfg
  23. //修改 mfschunk 主配置文件, 指定 master。
  24. [root@chunk1 mfs]# vi mfschunkserver.cfg
  25. MASTER_HOST = 192.168.100.129
  26. [root@chunk1 mfs]# vi mfshdd.cfg
  27. #在文件末尾添加以下目录
  28. /data
  29. [root@chunk1 mfs]# mkdir /data
  30. [root@chunk1 mfs]# chown -R mfs:mfs /data
  31. [root@chunk1 mfs]# /usr/local/mfs/sbin/mfschunkserver start
  32. [root@chunk1 mfs]# netstat -anpt | grep mfs
  33. tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 21544/mfschunkserve
  34. 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地址

在这里插入图片描述

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

三、MFS的使用

3.1、优化并使用命令测试

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

  1. [root@client ~]# vim /etc/profile
  2. export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
  3. export PATH=/usr/local/mfs/bin:$PATH ###此处添加
  4. [root@client ~]# source /etc/profile
  5. mfsgetgoal 命令用来查询文件被复制的份数,利用 -r 命令可以对整个目录进行递归操作。
  6. goal 是指文件被复制的份数
  7. [root@client ~]# mfsgetgoal -r /opt/mfs
  8. /opt/mfs:
  9. directories with goal 2 : 1
  10. mfsgetgoal 命令用来设置文件被复制的份数, 生产环境 Chunk Server节点数量应至少
  11. 大于 2 文件副本数小于等于 Chunk Server服务器的数量
  12. [root@client ~]# mfssetgoal -r 3 /opt/mfs/
  13. /opt/mfs/:
  14. inodes with goal changed: 1
  15. inodes with goal not changed: 0
  16. inodes with permission denied: 0
  17. ##创建文件测试mfssetgoal命令的结果
  18. [root@client ~]# cd /opt/mfs/
  19. [root@client bin]# cd /opt/mfs/
  20. [root@client mfs]# touch abc
  21. [root@client mfs]# mfsgetgoal abc
  22. abc: 3

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

3.2、使用 MFS 网页版监控

  1. Master Server----启动监控程序】
  2. [root@mfsmaster ~]# /usr/local/mfs/sbin/mfscgiserv
  3. 【在真机中打开浏览器访问】
  4. http://192.168.100.129:9425/mfs.cgi?masterhost=mfsmaster //注意主机名和IP地址

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

  1. 其中各部分的含义如下。
  2. Info 部分: 显示了 MFS 的基本信息。
  3. Servers 部分: 列出现有 Chunk Server
  4. Disks 部分: 列出现有 Chunk Server 硬盘信息。
  5. Exports 部分: 列出可被挂载的目录。
  6. Mounts 部分: 列出被挂载的目录。
  7. Operations 部分: 显示正在执行的操作。
  8. Resources 部分: 列出当前存储信息。
  9. Quitas 部分: 列出当前配额信息。
  10. Master charts 部分: 显示 Master Server 的操作情况, 读、 写、 删除等操作。
  11. Server charts 部分: 显示 Chunk Server 的操作情况、 数据传输率及系统状态。

发表评论

表情:
评论列表 (有 0 条评论,130人围观)

还没有评论,来说两句吧...

相关阅读