MFS分布式存储搭建过程

不羁的心 提交于 2020-01-22 00:24:45

1.MFS是什么?

mooseFS(moose 驼鹿)是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。

2.MFS的特征

1:层析结构(目录树)
2:存储文件属性(权限,访问和修改时间)
3:支持特殊文件(块设备,字符设备,管道)
4:符号链接,软硬链接
5:对文件系统访问可以通过IP地址或者密码进行访问限制
6:高可靠(数据的多个拷贝存储在不同的计算机上)
7:通过附加新的计算机或者硬盘可以实现容量的动态拓展
8:删除文件可以根据一个可配置的时间周期进行保留
9:不受访问和写入影响的文件连贯快照

3.MFS的应用场景

谈及MooseFS的应用场景,其实就是去谈分布式文件系统的应用场景。
1)大规模高并发的数据存储及访问(小文件、大文件),
2)大规模的数据处理,如日志分析

4.MFS官网

http://www.moosefs.com/是MFS官网,上面写了高可用性,低成本数据安全和可扩展性已经高性能等MFS的优点
在这里插入图片描述

5.MFS分布式文件系统部署方案

MooseFS 是一种分布式文件系统,MooseFS 文件系统结构包括以下四种角色:
1 管理服务器 managing server (master):
负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
2元数据日志服务器 Metalogger server(Metalogger):
负责备份 master 服务器的变化日志文件,文件类型为 changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作
3 数据存储服务器 data servers (chunk servers ) :
听从管理服务器调度,提供存储空间,并为客户提供数据传输.。 真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器 chunkserver之间复 制(复制份数可以手工指定,建议设置副本数为 3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。
4 客户机挂载使用 client computers :
客户端挂载远程mfs服务器共享出的存储并使用。 通过 fuse 内核接口挂载进程管理服务器上所管理的数据存储服务器共享出的硬盘。 共享的文件系统的用法和 nfs 相似。 使用 MFS 文件系统来存储和访问的主机称为 MFS 的客户端,成功挂接 MFS 文件系统以后,就可以像以前使用 NFS 一样共享这个虚拟性的存储了。

6.环境准备

服务器 角色 ip地址 主机名
mfs-metalog 管理服务器managing server (master)和日志 192.168.70.111 Mfs-master
chunk-server 数据存储服务器data servers (chunk servers ) 192.168.70.112 mfs-chunk
client 客户机挂载使用client computers 192.168.70.113 mfs-client

常用的名词

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

7.安装MFS管理服务器

#安装依赖
[root@Mfs-master ~]#  yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
#下载mfs并且解压
[root@Mfs-master ~]#  
wget https://github.com/moosefs/moosefs/archive/master.zip  && unzip master.zip
#t添加运行mfs的用户
[root@Mfs-master ~]#  useradd -s /sbin/nologin mfs

[root@Mfs-master ~]# cd moosefs-master/
#编译
[root@Mfs-master ~]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
#安装
[root@Mfs-master moosefs-master]# make -j 2 && make install

[root@Mfs-master moosefs-master]# cd /usr/local/mfs/

[root@Mfs-master mfs]# ll
total 4
drwxr-xr-x 2 root root 4096 Jan 21 19:39 bin   #客户端工具
drwxr-xr-x 3 root root   17 Jan 21 19:39 etc    #服务端配置文件
drwxr-xr-x 2 root root   21 Jan 21 19:39 include   #包含的配置的文件
drwxr-xr-x 2 root root  108 Jan 21 19:39 lib       # 包含的so
drwxr-xr-x 2 root root  245 Jan 21 19:39 sbin    #服务端命令
drwxr-xr-x 4 root root   31 Jan 21 19:39 share  #文档
drwxr-xr-x 3 root root   17 Jan 21 19:39 var  #元数据目录

#生成配置文件
[root@Mfs-master mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg  #生成主配置文件
[root@Mfs-master mfs]# cp mfsexports.cfg.sample mfsexports.cfg  #  输出目录配置文件
[root@Mfs-master mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg  # 元数据日志
[root@Mfs-master mfs]# cd /usr/local/mfs/var/mfs/
[root@Mfs-master mfs]# cp metadata.mfs.empty metadata.mfs #master运行所需

#配置文件参数说明
6 # WORKING_USER = mfs #运行mfs的用户
9 # WORKING_GROUP = mfs #运行用户mfs的组
78 # MATOCS_LISTEN_HOST = * #可以运行mfs的用户,可以指定为某一个ip
81 # MATOCS_LISTEN_PORT = 9420 #运行的端口

#设置权限
[root@Mfs-master mfs]# chown -R mfs:mfs /usr/local/mfs/

#启动mfs
[root@Mfs-master mfs]# /usr/local/mfs/sbin/mfsmaster 
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-master mfs]# netstat -tulnp | grep 94*
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      24418/mfsmaster     
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      24418/mfsmaster     
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      24418/mfsmaster     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      912/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      991/master          
tcp6       0      0 :::22                   :::*                    LISTEN      912/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      991/master          
udp        0      0 0.0.0.0:45619           0.0.0.0:*                           24425/dhclient      

#查看生成的日志
[root@Mfs-master mfs]# ll /usr/local/mfs/var/mfs/
total 20
-rw-r----- 1 mfs mfs   45 Jan 21 19:58 changelog.1.mfs
-rw-r----- 1 mfs mfs  120 Jan 21 20:00 metadata.crc
-rw-r----- 1 mfs mfs 2901 Jan 21 20:00 metadata.mfs.back
-rw-r--r-- 1 mfs mfs    8 Jan 21 19:43 metadata.mfs.back.1
-rw-r--r-- 1 mfs mfs    8 Jan 21 19:39 metadata.mfs.empty

#指定需要共享的目录和权限
[root@Mfs-master etc]# cd /usr/local/mfs/etc/mfs/
[root@Mfs-master mfs]# vim mfsexports.cfg
#共享实例,在后面添加
# Allow everything but "meta".
*                       /       rw,alldirs,admin,maproot=0:0
# Allow "meta".
*                       .       rw
192.168.70.112  /       rw,alldirs,maproot=0
192.168.70.0/24  /       rw,alldirs,maproot=0

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 指定客户端密码

#重启动mfs
[root@Mfs-master mfs]#  /usr/local/mfs/sbin/mfsmaster restart

8.安装 MFS元数据日志 服务器

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

#编译
[root@Mfs-master moosefs-master]./configure --prefix=/usr/local/mfsmeta --with-default-user=mfs --with-default-group=mfs

#安装
[root@Mfs-master moosefs-master]make && make install

[root@Mfs-master moosefs-master] cd /usr/local/mfsmeta/etc/mfs/

[root@Mfs-master moosefs-master]cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

[root@Mfs-master moosefs-master]vim mfsmetalogger.cfg

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

52 MASTER_HOST = 192.168.70.111  #修改为master的地址

#设置mfsmeta的权限
[root@Mfs-master moosefs-master]chown -R mfs:mfs /usr/local/mfsmeta/

#启动元数据日志服务器
[root@Mfs-master moosefs-master] cd /usr/local/mfsmeta/sbin

[root@Mfs-master 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

#加载到rc.local
[root@Mfs-master sbin]# echo "/usr/local/mfsmeta/sbin/mfsmetalogger start" >> /etc/rc.local 

#查看端口
[root@Mfs-master mfs]# netstat -anput| grep 9419
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      24568/mfsmaster     
tcp        0      0 192.168.70.111:9419     192.168.70.111:58312    ESTABLISHED 24568/mfsmaster     
tcp        0      0 192.168.70.111:58312    192.168.70.111:9419     ESTABLISHED 31565/mfsmetalogger 

9.Chunk Server安装配置

#添加用户
[root@Mfs-chunk ~]# useradd -s /sbin/nologin mfs

#安装依赖
[root@Mfs-chunk ~]#  yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y

#下载mfs并且解压
[root@Mfs-chunk ~]# wget https://github.com/moosefs/moosefs/archive/master.zip && unzip master.zip

[root@Mfs-chunk ~]# cd moosefs-master/

#编译
[root@Mfs-chunk moosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && make && make install

#安装
[root@Mfs-chunk moosefs-master]# make && make install

[root@Mfs-chunk moosefs-master]# cd /usr/local/mfs/etc/mfs
[root@Mfs-chunk mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@Mfs-chunk mfs]# cp mfshdd.cfg.sample mfshdd.cfg
[root@Mfs-chunk mfs]# vim mfschunkserver.cfg

 84  MASTER_HOST = 192.168.70.111

[root@Mfs-chunk mfs]# vim mfshdd.cfg
#在最后一行添加
/tmp

#设置权限
[root@Mfs-chunk mfs]# chown -R mfs:mfs /usr/local/mfs/

#启动
[root@Mfs-chunk mfs]#  /usr/local/mfs/sbin/mfschunkserver start

#查看
[root@Mfs-chunk mfs]# ls /tmp/
00  0A  14  1E  28  32  3C  46  50  5A  64  6E  78  82  8C  96  A0  AA  B4  BE  C8  D2  DC  E6  F0  FA
01  0B  15  1F  29  33  3D  47  51  5B  65  6F  79  83  8D  97  A1  AB  B5  BF  C9  D3  DD  E7  F1  FB
02  0C  16  20  2A  34  3E  48  52  5C  66  70  7A  84  8E  98  A2  AC  B6  C0  CA  D4  DE  E8  F2  FC
03  0D  17  21  2B  35  3F  49  53  5D  67  71  7B  85  8F  99  A3  AD  B7  C1  CB  D5  DF  E9  F3  FD
04  0E  18  22  2C  36  40  4A  54  5E  68  72  7C  86  90  9A  A4  AE  B8  C2  CC  D6  E0  EA  F4  FE
05  0F  19  23  2D  37  41  4B  55  5F  69  73  7D  87  91  9B  A5  AF  B9  C3  CD  D7  E1  EB  F5  FF
06  10  1A  24  2E  38  42  4C  56  60  6A  74  7E  88  92  9C  A6  B0  BA  C4  CE  D8  E2  EC  F6  systemd-private-8aafddb2fbac4fd795f7834ffc2cec21-vmtoolsd.service-eZEY7c
07  11  1B  25  2F  39  43  4D  57  61  6B  75  7F  89  93  9D  A7  B1  BB  C5  CF  D9  E3  ED  F7
08  12  1C  26  30  3A  44  4E  58  62  6C  76  80  8A  94  9E  A8  B2  BC  C6  D0  DA  E4  EE  F8
09  13  1D  27  31  3B  45  4F  59  63  6D  77  81  8B  95  9F  A9  B3  BD  C7  D1  DB  E5  EF  F9

10.配置 客户端

#安装依赖
[root@Mfs-client ~]#  yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y

#添加用户
[root@Mfs-client ~]#  useradd -s /sbin/nologin mfs

#下载并且解压
[root@Mfs-client ~]#  wget https://github.com/moosefs/moosefs/archive/master.zip && unzip master.zip

#编译
[root@Mfs-client moosefs-master]#  ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount

#安装
[root@Mfs-client moosefs-master]#make -j  2 && make install

[root@Mfs-client moosefs-master]# mkdir /mfs

#挂载
[root@Mfs-client moosefs-master]#mfsmount /mfs/ -H 192.168.1.111 -p

#ls /tmp配置完成

#配置web客户端 在master上执行
[root@Mfs-master mfs]#/usr/local/mfs/sbin/mfscgiserv
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!