分布式文件系统MFS部署

MFS 简介

MFS 即Moosefs ,是一款网络分布式文件系统,是一个将数据分散在多台服务器上,然后通过网络挂载在客户端,使客户端能像使用本地硬盘一样存储数据。MFS也像其他类Unix文件系统一样,包含了层级结构(目录树),存储文件属性(权限,最后访问,最后修改等),可以创建特殊文件(块设备,字符设备,管道,套接字),符号链接,硬链接。

MFS 优点

免费开源,目前有CE(社区版)Pro(专业版)两种版本

通用文件系统,不需要修改上层应用就可以使用

在线扩容,在线维护,体系架构可伸缩性强

部署简单

存储对象高可用,可任意设置文件冗余属性

提供类似于windows回收站功能,删除的文件可以在一定时间内恢复

提供Web GUI 监控接口

提供MFS CLI ,操作简单

MFS 文件系统结构分为四部分:

管理服务器managing server (master)      负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复,多节点拷贝

元数据日志服务器Metalogger server(Metalogger) 负责备份master服务器的日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作,可以通过Metalogger 恢复master
          
数据存储服务器data servers (chunkservers)    负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输 ,数据文件被分为64M大小的块,每个块被分散存储在块服务器的硬盘上,同时块服务器上还会存储其他块服务器的块文件副本,自动保持数据存储平衡

客户机挂载使用client computers        通过fuse内核接口挂载远程管理服务器上所管理的数据存储服务,客户端挂载上MFS后就可以像操作本地文件系统一样操作MFS中的文件了,与NFS有类似的使用方式,操作系统的内核将对文件的操作传递给FUSE模块,这个模块用来和mfsmount通信,mfsmount 进程后续通过网络和master以及chunkserver 进行通信 ,过程透明。


MFS 读写进程

MFS部署

实验环境: mfsmaster:192.168.1.111

                   metalogger:192.168.1.100

                   chunk server : 192.168.1.101/104

                   client : 192.168.1.102

安装,本次安装使用源码安装,在MFS官网下载moosefs-2.0.89-1.tar.gz,要在所有服务器上都安装源码包,然后再分别根据方案修改配置文件


 安装之前在所有服务器上安装 yum -y install zlib-devel fuse-devel gcc
======================================================================master server:
[root@master ~]# useradd mfs -s /sbin/nologin
[root@master ~]# tar zxvf moosefs-2.0.89-1.tar.gz
[root@master ~]# cd mfs-2.0.89/
[root@master mfs-2.0.89]# ./configure --prefix=/etc/mfs --with-default-user=mfs --with-default-group=mfs
[root@master mfs-2.0.89]# make && make install
[root@master mfs-2.0.89]# cd /etc/mfs/etc
[root@master etc]# mv mfsmaster.cfg.dist mfsmaster.cfg                     //主配置文件
[root@master etc]# mv mfsexports.cfg.dist mfsexports.cfg                   //导出文件,权限控制文件
[root@master etc]# cp /etc/mfs/var/mfs/metadata.mfs.empty  /etc/mfs/var/mfs/metadata.mfs

主配置文件示例:
/etc/mfs/etc/mfsmaster.cfg
EXPORTS_FILENAME = /etc/mfs/etc/mfsexports.cfg                           //权限控制文件的存储位置
DATA_PATH = /etc/mfs/var/mfs                                                             //指定元数据的存储路径
MATOCS_LISTEN_PORT = 9420                                                         //Master to Chunk Server 端口监听
MATOML_LISTEN_PORT = 9419                                                         //Master to MetaLogger
MATOCU_LISTEN_PORT = 9421                                                        //客户端挂载MFS时连接的端口

export文件配置示例: 
/etc/mfs/etc/mfsexports.cfg
192.168.1.0/24   / rw,alldirs,mapall=0       //默认配置

[root@master ~]# /etc/mfs/sbin/mfsmaster  start
[root@master ~]# /etc/mfs/sbin/mfscgiserv       //可选项,可以通过web方式查看mfs导出等信息
starting simple cgi server (host: any , port: 9425 , rootpath: /etc/mfs/share/mfscgi)
[root@master ~]# firefox http://192.168.1.111:9425


======================================================================

======================================================================
detalogger server :
[root@master ~]# useradd mfs -s /sbin/nologin
[root@master ~]# tar zxvf moosefs-2.0.89-1.tar.gz
[root@master ~]# cd mfs-2.0.89/
[root@master mfs-2.0.89]# ./configure --prefix=/etc/mfs --with-default-user=mfs --with-default-group=mfs
[root@master mfs-2.0.89]# make && make install
[root@master mfs-2.0.89]# cd /etc/mfs/etc
[root@master etc]# mv mfsmetalogger.cfg.dist mfsmetalogger.cfg
主配置文件示例:
/etc/mfs/etc/mfsmetalogger.cfg
MASTER_HOST = 192.168.1.111                     //指定Master服务器
MASTER_PORT = 9419
DATA_PATH = /etc/mfs/var/mfs                       //从Master抓回文件,然后进行存放的路径
BACK_LOGS = 50                                           //超过50个备份日志则轮转
META_DOWNLOAD_FREQ = 24                    //元数据备份文件下载的频率,默认24小时
 
[root@master etc]# /etc/mfs/sbin/mfsmetalogger start
working directory: /etc/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly

======================================================================
chunk server :(两台设备上配置方法相同,此处列出192.168.1.101配置)

[root@master ~]# useradd mfs -s /sbin/nologin
[root@master ~]# tar zxvf moosefs-2.0.89-1.tar.gz
[root@master ~]# cd mfs-2.0.89/
[root@master mfs-2.0.89]# ./configure --prefix=/etc/mfs --with-default-user=mfs --with-default-group=mfs
[root@master mfs-2.0.89]# make && make install
[root@master mfs-2.0.89]# cd /etc/mfs/etc
[root@master /etc]# mv mfschunkserver.cfg.dist  mfschunkserver.cfg
[root@master /etc]# mv mfshdd.cfg.dist mfshdd.cfg
配置chunk server 能够提供的存储空间,此实验中使用本地文件系统作为存储空间
mkdir /mnt/mfschunks1
mkdir /mnt/mfschunks2
chown -R mfs:mfs /mnt/mfschunks1
chown -R mfs:mfs /mnt/mfschunks2
chmod 770 /mnt/mfschunks1
chmod 770 /mnt/mfschunks2
配置chunkserver的主配置文件
/etc/mfs/etc/mfschunkserver.cfg
MASTER_HOST = 192.168.1.111    //master server

/etc/mfs/etc/mfshdd.cfg
/mnt/mfschunks1 10GiB
/mnt/mfschunks2 10GiB         //分区的挂载点,指定大小为两个10GiB

root@master ~]# /etc/mfs/sbin/mfschunkserver  start
working directory: /etc/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: scanning folder /mfsdir/ ...
hdd space manager: /mfsdir/: 0 chunks found
hdd space manager: scanning complete
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly

======================================================================

client:

[root@master ~]# useradd mfs -s /sbin/nologin
[root@master ~]# tar zxvf moosefs-2.0.89-1.tar.gz
[root@master ~]# cd mfs-2.0.89/
[root@master mfs-2.0.89]# ./configure --prefix=/etc/mfs --with-default-user=mfs --with-default-group=mfs
[root@master mfs-2.0.89]# make && make install

创建挂载点 mkdir /mnt/mfs
创建删除文件存储挂载目录 mkdir /mnt/meta
挂载MFS文件系统
/etc/mfs/bin/mfsmount /mnt/mfs -H 192.168.1.111
/etc/mfs/bin/mfsmount /mnt/meta -H 192.168.1.111
[root@agent2 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       16G  1.9G   13G  13% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   37M  423M   9% /boot
mfsmaster:9421         40G  9.0G   32G  23% /mnt/mfs
mfsmaster:9421         40G  9.0G   32G  23% /mnt/meta



客户端进行读写测试

在客户端/mnt/mfs下创建两个目录mfs1,mfs2

为两个目录设定不同的存储copy个数

mfssetgoal -r 1 /mnt/mfs/mfs1

mfssetgoal -r 2 /mnt/mfs/mfs2

[root@agent2 ~]# mfsgetgoal /mnt/mfs/mfs1
/mnt/mfs/mfs1: 1
[root@agent2 ~]# mfsgetgoal /mnt/mfs/mfs2
/mnt/mfs/mfs2: 2

做读写测试

写测试:

[root@agent2 ~]# time dd if=/dev/zero of=/mnt/mfs/mfs1/test1 bs=1024K count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 35.4864 s, 30.3 MB/s

real    0m37.656s
user    0m0.002s
sys     0m1.585s
[root@agent2 ~]# time dd if=/dev/zero of=/mnt/mfs/mfs2/test1 bs=1024K count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 39.4327 s, 27.2 MB/s

real    0m40.092s
user    0m0.002s
sys     0m1.951s

读测试:
[root@agent2 ~]# time dd if=/mnt/mfs/mfs1/test of=/dev/null bs=1M
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 15.2552 s, 70.4 MB/s

real    0m15.307s
user    0m0.002s
sys     0m0.488s
[root@agent2 ~]# time dd if=/mnt/mfs/mfs2/test of=/dev/null bs=1M
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 14.2385 s, 75.4 MB/s

real    0m14.244s
user    0m0.001s
sys     0m0.485s

测试结果显示:不同的读写型速率稍有差异

部署过程需要注意的地方:

太简单了,没有!哈哈哈哈哈

MFS 很有意思,接下里GFS!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值