MFS分布式文件系统搭建

一、环境准备

服务器                角色

mfs-metalog      管理服务器managing server (master) 和元数据日志服务器(Metalogger) 

chunk-server     数据存储服务器data servers (chunk servers )

client                  客户机挂载使用client computers


  • 关闭防火墙
  • 做主机域名解析

名词解释:

  • Mfsmaster      元数据
  • Metalogger     元数据备份用于恢复数据 [ 和master安装在不同的机器 ]
  • ChunkServer  数据存储
  • mfscgiserv      监控服务
  • Client               挂载

Fuse 简介

  • 所有服务器和客户端都要支持 fuse 内核模块.
  • 由于mfs的客户端程序也就是加载mfs磁盘系统的命令是使用了fuse,因此只要是想挂载mfs的服务器,必要的前提条件就是先安装fuse,这样编译mfs的时候才能顺利通过.
  • Linux 2.6以上内核,都自带 fuse.

用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如NTFS-3G(作用:让Linux中对NTFS文件系统提供支持) 使用FUSE实现。


  • 下载源码包
  1. 进入到Github  https://github.com/moosefs/moosefs
  2. 根据自己的需求下载相应的版本

[root@mfs-metalog ~]# wget https://github.com/moosefs/moosefs/archive/master.zip
[root@mfs-metalog ~]# ls master.*
master.zip

安装 MFS 管理服务器

[root@mfs-metalog ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
[root@mfs-metalog ~]# useradd -s /sbin/nologin mfs        # 运行 mfs 用户
[root@mfs-metalog ~]# unzip master.zip && cd moosefs-master
[root@mfs-metalog moosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
[root@mfs-metalog moosefs-master]# make -j 2 && make install

[root@mfs-metalog mfs]# ls   # 安装生成的目录
bin  etc  include  lib  sbin  share  var

bin     # 客户端工具
etc     # 服务器的配置文件都放在该目录中
sbin    # 服务端启动程序  包括:元数据服务器端程序 mfsmaster、数据存储服务器端服务程序mfschunkserver
share   # 文档
var     # 元数据目录 (可在配置文件中自定义到其他目录)
  • 生成配置文件
[root@mfs-metalog ~]# cd /usr/local/mfs/etc/mfs/

[root@mfs-metalog mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg     # master 配置文件

[root@mfs-metalog mfs]# cp mfsexports.cfg.sample mfsexports.cfg    # 输出目录配置文件
[root@mfs-metalog mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg   # 元数据日志
[root@mfs-metalog mfs]# cd /usr/local/mfs/var/mfs/
[root@mfs-metalog mfs]# cp metadata.mfs.empty metadata.mfs     # 首次安装,会自动生成一个元数据文件,是空的,当 moosefs master 运行有文件 metadata.mfs
  • 配置文件了解
[root@mfs-metalog etc]# cd /usr/local/mfs/etc/mfs/
[root@mfs-metalog mfs]# vim mfsmaster.cfg      # 无需修改,在此了解

23 # MATOCS_LISTEN_HOST = *    #监听所有 IP,也直接写一个 IP 地址,如 192.168.1.133
24 # MATOCS_LISTEN_PORT = 9420  
11 # DATA_PATH = /usr/local/mfs/var/mfs 
注:这个配置文件中所有注掉的设置都是默认的配置。 
如果有需要还可以修改 DATA_PATH 的设置将元数据目录存储到其他的分区或磁盘。其他的参数都很简单根据需要调整即可。 
master 会打开 9420 端口等待 mfschunkserver 数据存储服务器连接
  • 启动mfsmaster 并查看运行情况
[root@mfs-metalog mfs]# chown -R mfs:mfs /usr/local/mfs/
[root@mfs-metalog mfs]# /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
mfstopology configuration file (/usr/local/mfs/etc/mfstopology.cfg) not found - using defaults
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@mfs-metalog mfs]# netstat -tulnp | grep 94*
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      15373/mfsmaster     
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      15373/mfsmaster     
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      15373/mfsmaster

[root@mfs-metalog mfs]# /usr/local/mfs/sbin/mfsmaster stop  # 关闭
  • 加入开机启动
[root@mfs-metalog mfs]# echo "/usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.local 
[root@mfs-metalog mfs]# chmod +x /etc/rc.local
  • 查看生成的日志文件
[root@mfs-metalog mfs]# ll /usr/local/mfs/var/mfs/
总用量 3608
-rw-r----- 1 mfs mfs      45 7月  10 09:49 changelog.0.mfs
-rw-r----- 1 mfs mfs     120 7月  10 09:53 metadata.crc
-rw-r----- 1 mfs mfs    2901 7月  10 09:53 metadata.mfs
-rw-r--r-- 1 mfs mfs       8 7月  10 09:41 metadata.mfs.back.1
-rw-r--r-- 1 mfs mfs       8 7月  10 09:34 metadata.mfs.empty
-rw-r----- 1 mfs mfs 3672832 7月  10 09:53 stats.mfs
  • 指定需要共享的权限
[root@mfs-metalog mfs]# cd /usr/local/mfs/etc/mfs/
[root@mfs-metalog mfs]# vim mfsexports.cfg

# Allow "meta".
*                       .       rw
192.168.1.140           /       rw,alldirs,maproot=0
192.168.1.0/24          /       rw,alldirs,maproot=0

---------------------------------------------------------------------
# 文件每条由三部分组成 1) 客户端IP地址  2) 挂载的目录  3) 客户端拥有的权限

1.客户端 IP 地址 
 *                       所有 IP 地址 
 x.x.x.x                 单个 IP 地址 
 x.x.x.x/m.m.m.m         IP 网络地址/子网掩码 
 f.f.f.f-t.t.t.t         IP 段 
2.被挂载的目录 
  /                      表示 MooseFS 的根 
  .                      表示 MFSMETA 文件系
3.客户端拥有的权限
  ro                     只读
  rw                     读写
  alldirs                允许挂载任何指定的子目录 
  maproot                映射为 root 用户还是指定的用户
  password               指定客户端密码
---------------------------------------------------------------------
  • 启动服务
[root@mfs-metalog mfs]# sh /etc/rc.local

安装 MFS元数据日志 服务器

元数据日志守护进程是在安装master server 时一同安装的,最小的要求并不比master 本身大,可以被运行在任何机器上(例如任一台chunkserver),但是最好是放置在MooseFS master 的备份机上,备份master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs。因为主要的master server 一旦失效,可能就会将这台metalogger 机器取代而作为master server

元数据在另一台,在这里我们在一台机器上面做

unzip moosefs-master.zip && cd moosefs-master        编译的时候,用户在若在其他设备,需要新建运行mfsmetalogger角色的用户,mfs-metalog 上在安装master的时候,已经新建,略过,其他机器上,应该执行useradd -s /sbin/nologin mfs

[root@mfs-metalog moosefs-master]# ./configure --prefix=/usr/local/mfsmeta --with-default-user=mfs --with-default-group=mfs
[root@mfs-metalog moosefs-master]# make && make install
[root@mfs-metalog ~]# cd /usr/local/mfsmeta/etc/mfs/
[root@mfs-metalog mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

[root@mfs-metalog mfs]# vim mfsmetalogger.cfg

# META_DOWNLOAD_FREQ = 24
元数据备份文件下载请求频率。默认为24小时,即每隔一天从元数据服务器 (MASTER) 下载一个 metadata.mfs.back 文 件 。 当 元 数 据 服 务 器 关 闭 戒 者 出 故 障 时 , matedata.mfs.back 文件将消失,那么要恢复整个 mfs,则需从 metalogger 服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。

MASTER_HOST = 192.168.1.133   # 修改为 mfs-master-server 的地址

[root@mfs-metalog mfs]# chown -R mfs:mfs /usr/local/mfsmeta/
  • 启动元数据日志服务器
[root@mfs-metalog ~]# /usr/local/mfsmeta/sbin/mfsmetalogger start
open files limit has been set to: 4096
working directory: /usr/local/mfsmeta/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
[root@mfs-metalog ~]# echo "/usr/local/mfsmeta/sbin/mfsmetalogger start" >> /etc/rc.local

[root@mfs-metalog ~]# /usr/local/mfsmeta/sbin/mfsmetalogger stop  # 关闭
  • 查看端口
[root@mfs-metalog mfs]# netstat -anput| grep 9419
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      16291/mfsmaster     
tcp        0      0 192.168.1.133:9419      192.168.1.133:30563     ESTABLISHED 16291/mfsmaster

到此,master 和 metalogger 服务安装完成 且安装在一台机器上

Chunk Server安装配置

安装数据服务器(chunkservers),这些机器的磁盘上要有适当的剩余空间,而且操作系统要遵循POSIX 标准(验证了的有这些: Linux, FreeBSD, Mac OS X and OpenSolaris)。Chunkserver存储数据时,是在一个普通的文件系统如ext4上储存数据块或碎片(chunks/fragments)作为文件。 你在chunkserver上看不到完整的文件.

useradd -s /sbin/nologin mfs
unzip master.zip 
cd moosefs-master/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && make && make install
  • 修改配置文件
[root@chunk-server ~]# cd /usr/local/mfs/etc/mfs
[root@chunk-server mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@chunk-server mfs]# cp mfshdd.cfg.sample mfshdd.cfg
[root@chunk-server mfs]# vim mfschunkserver.cfg

MASTER_HOST = 192.168.1.133   # 元数据服务器的名称或地址  主机名 IP 都可以

MASTER_PORT = 9420    # 不启用的话 默认就是9420

# CSSERV_LISTEN_PORT = 9422  # 这个监听端口与其他数据服务器间的连接,通常是数据复制

# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg     # 分配给 MFS 使用的磁盘空间配置文件的位置 

[root@chunk-server mfs]# vim mfshdd.cfg

/tmp      #在这里/tmp 是一个给 mfs 的分区,但在生产环境是一个独立的磁盘的挂载目录 

[root@chunk-server mfs]# chown -R mfs:mfs /usr/local/mfs/
  • 服务器启动关闭
[root@chunk-server mfs]# /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: /tmp/
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@chunk-server mfs]# echo "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc.local
[root@chunk-server mfs]# chmod +x /etc/rc.local

[root@chunk-server mfs]# ls /tmp/     # 分块存储,人无法识别
00  35  6A  9F  D4
01  36  6B  A0  D5
03  38  6D  A2  D7
04  39  6E  A3  D8
07  3C  71  A6  DB
08  3D  72  A7  DC
09  3E  73  A8  DD
2C  61  96  CB  systemd-private-904ec7fe737a480abae08c13dcb1375d-chronyd.service-vcqR1S
2D  62  97  CC  systemd-private-904ec7fe737a480abae08c13dcb1375d-httpd.service-b4LQMk

配置 客户端

[root@client ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
[root@client ~]# useradd -s /sbin/nologin mfs
[root@client ~]# unzip master.zip && cd moosefs-master

[root@client moosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
# 开启mfsmount ,作为客户端必须有的这一个选项 .

[root@client moosefs-master]# make -j  2 && make install
[root@client moosefs-master]# mkdir /mfs
[root@client moosefs-master]# lsmod | grep fuse   如果没有,加载一下.
[root@client moosefs-master]# modprobe fuse
[root@client moosefs-master]# lsmod | grep fuse
fuse                   91874  1

[root@client moosefs-master]# ln -s /usr/local/mfs/bin/mfsmount /usr/bin/mfsmount

[root@client moosefs-master]# mfsmount /mfs/ -H 192.168.1.133 -p
# 将 mfs 共享出来的存储空间挂载到 client 的 /mfs 下 
MFS Password:       #无密码直接回车
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root


[root@client moosefs-master]# echo "modprobe fuse" >> /etc/rc.local
[root@client moosefs-master]# echo "/usr/local/mfs/bin/mfsmount /mfs -H 192.168.1.133" >> /etc/rc.local
[root@client moosefs-master]# chmod +x /etc/rc.local

测试

[root@chunk-server ~]# tree /tmp/
/tmp/
├── 00
├── 01
├── 02
├── 03
├── 04
├── 05
├── 06
├── 07
├── 08
├── 09
├── 0A
├── 0B
├── 0C
├── 0D
├── 0E


[root@client ~]# cp -r /boot/* /mfs/     # 客户端写入数据

[root@chunk-server ~]# tree /tmp/
/tmp/
├── 00
│   ├── chunk_0000000000000001_00000001.mfs
│   ├── chunk_0000000000000002_00000001.mfs
│   ├── chunk_0000000000000003_00000001.mfs
│   ├── chunk_0000000000000004_00000001.mfs
│   ├── chunk_0000000000000005_00000001.mfs
│   ├── chunk_0000000000000006_00000001.mfs
│   ├── chunk_0000000000000007_00000001.mfs
│   ├── chunk_0000000000000008_00000001.mfs
│   ├── chunk_0000000000000009_00000001.mfs


[root@client mfs]# ls
config-3.10.0-693.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-0bfd2f1563ad4bb8b3b98c78c01228c8.img
initramfs-3.10.0-693.el7.x86_64.img...

#客户端是看得到的文件内容,而在我们的Chunk Server上看到的都是一些碎片

配置 Web 监控

[root@mfs-metalog ~]#  /usr/local/mfs/sbin/mfscgiserv
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)
# 启动网页监控

# 如需 指定服务器ip修改/usr/local/mfs/share/mfscgi/mfs.cgi
  • 信息

  • 磁盘使用

  • 权限

  • CPU 资源 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值