MFS分布式文件系统

MFS分布式文件系统

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

SAN和MFS比较

在这里插入图片描述

MFS的特征

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

MooseFS介绍

   <u>http://www.moosefs.com/</u>

http://www.moosefs.org/reference-guide.html
安装和帮助文档

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 一样共享这个虚拟性的存储了。
在这里插入图片描述

内部运行机制

1:客户端请求访问存储,请求发送到了MFS Master
2:MFS Master根据我们的请求,查询所需要的文件分布在那些服务器上
3:客户端直接和存储服务器进行数据存储和读写
在这里插入图片描述
端口关系图
在这里插入图片描述

MFS分布式文件实验环境

服务器 角色
yunzu63 管理服务器managing server (master) 和元数据日志服务器(Metalogger)
yunzu64 数据存储服务器data servers (chunk servers )
yunzu62 客户机挂载使用client computers
安装环境准备:
所有服务器端和客户端都要支持fuse内核模块。
由于mfs的客户端程序也就是加载mfs磁盘系统的命令是使用了fuse,因此只要是想挂载mfs的服务器,必要的前提条件就是先安装fuse,这样编译mfs的时候才能顺利通过。

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

分布式文件系统部署

MFS管理服务器

[root@yunzu63 ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
[root@yunzu63 ~]# useradd -s /sbin/nologin mfs #运行mfs的用户
[root@yunzu63 ~]# unzip moosefs-master.zip.zip && cd moosefs-master
[root@yunzu63 moosefs-master]# ./configure --prefix=/usr/local/mfs
–with-default-user=mfs --with-default-group=mfs
[root@yunzu63 moosefs-master]# make -j 4 && make install
[root@yunzu63 moosefs-master]# cd /usr/local/mfs/
[root@yunzu63 mfs]# ls #看下安装完成生成的目录
bin #客户端工具
etc #服务器的配置文件都放在该目录中
sbin #服务端启动程序。如:元数据服务器端程序 mfsmaster、数据存储服务器端服务程序mfschunkserver
share #文档
var #元数据目录(可在配置文件中自定义到其他目录)

生成配置文件
[root@yunzu63 etc]# cd /usr/local/mfs/etc/mfs/
[root@yunzu63 mfs]# ll
-rw-r–r-- 1 root root 531 Dec 24 14:13 mfschunkserver.cfg.sample
-rw-r–r-- 1 root root 4060 Dec 24 14:13 mfsexports.cfg.sample
-rw-r–r-- 1 root root 57 Dec 24 14:13 mfshdd.cfg.sample
-rw-r–r-- 1 root root 1020 Dec 24 14:13 mfsmaster.cfg.sample
-rw-r–r-- 1 root root 417 Dec 24 14:13 mfsmetalogger.cfg.sample
-rw-r–r-- 1 root root 404 Dec 24 14:13 mfsmount.cfg.sample
-rw-r–r-- 1 root root 1123 Dec 24 14:13 mfstopology.cfg.sample
[root@yunzu63 mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg //Master配置文件
[root@yunzu63 mfs]# cp mfsexports.cfg.sample mfsexports.cfg //输出目录配置文件
[root@yunzu63 mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg //元数据日志
[root@yunzu63 mfs]# cd /usr/local/mfs/var/mfs/
[root@yunzu63 mfs]# cp metadata.mfs.empty metadata.mfs //首次安装 master 时,会自动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs
[root@yunzu63 mfs]# cd /usr/local/mfs/etc/mfs/
配置文件了解
[root@yunzu63 mfs]# vim mfsmaster.cfg //这个文件不需要修改,但你需要了解下面这几个字段
23 # MATOCS_LISTEN_HOST = * #监听所有 IP,也直接写一个 IP 地址,如
192.168.1.63
24 # MATOCS_LISTEN_PORT = 9420
11 # DATA_PATH = /usr/local/mfs/var/mfs
注:这个配置文件中所有注掉的设置都是默认的配置。
如果有需要还可以修改 DATA_PATH 的设置将元数据目录存储到其他的分区或磁盘。其他的参数都很简单根据需要调整即可。
master 会打开 9420 端口等待 mfschunkserver 数据存储服务器连接
[root@yunzu63 mfs]# chown -R mfs:mfs /usr/local/mfs/
[root@yunzu63 mfs]# /usr/local/mfs/sbin/mfsmaster start
[root@yunzu63 mfs]# netstat -antup | grep 94*
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 49618/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 49618/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 49618/mfsmaster
[root@yunzu63 mfs]# echo “/usr/local/mfs/sbin/mfsmaster start” >> /etc/rc.local
[root@yunzu63 mfs]# chmod +x /etc/rc.local
[root@yunzu63 mfs]# /usr/local/mfs/sbin/mfsmaster stop //服务的关闭方法
[root@yunzu63 mfs]# ll /usr/local/mfs/var/mfs/ //查看生成的日志文件
-rw-r----- 1 mfs mfs 95 Dec 24 14:30 metadata.mfs
-rw-r----- 1 mfs mfs 95 Dec 24 14:28 metadata.mfs.back.1
-rw-r–r-- 1 mfs mfs 8 Dec 24 14:13 metadata.mfs.empty
-rw-r----- 1 mfs mfs 10 Dec 24 14:28 sessions.mfs
-rw-r----- 1 mfs mfs 762516 Dec 24 14:30 stats.mfs

指定需要共享的权限
[root@yunzu63 mfs]# cd /usr/local/mfs/etc/mfs
[root@yunzu63 mfs]# vim mfsexports.cfg
#Allow everything but “meta”.

  •                   /       rw,alldirs,maproot=0
    

#Allow “meta”.

  •                   .       rw     #下面添加两行
    

192.168.1.64/24 / rw,alldirs,maproot=0
192.168.1.0/24 / rw,alldirs,mapproot=0
mfsexports.cfg 文件每一条由三部分组成,第一部分表示客户端的 IP 地址,第二部分表示被挂接的目录,第三部分表示客户端拥有的权限,下面对三给部分迚行解释
[root@yunzu63 mfs]# sh /etc/rc.local //启动服务

安装MFS元数据日志服务器

元数据日志守护进程是在安装master server 时一同安装的,最小的要求并不比master
本身大,可以被运行在任何机器上(例如任一台chunkserver),但是最好是放置在MooseFS master 的备份机上,备份master 服务器的变化日志文件
因为主要的master server 一旦失效,可能就会将这台metalogger 机器取代而作为master server。
[root@yunzu63 mfs]# cd
[root@yunzu63 ~]# rm -rf moosefs-master #元数据又是另外一台服务器,这里我们在一台机器上做,那么我们也要重新编译
[root@yunzu63 ~]# unzip moosefs-master.zip && cd moosefs-master #编译的时候,用户在若在其他设备,需要新建运行mfsmetalogger角色的用户,yunzu63上在安装master的时候,已经新建,略过,其他机器上,应该执行useradd -s /sbin/nologin mfs
[root@yunzu63 moosefs-master]# ./configure --prefix=/usr/local/mfsmeta
–with-default-user=mfs --with-default-group=mfs
[root@yunzu63 moosefs-master]# make && make install
[root@yunzu63 moosefs-master]# cd /usr/local/mfsmeta/etc/mfs/
[root@yunzu63 mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
[root@yunzu63 mfs]# vim mfsmetalogger.cfg
MASTER_HOST = 192.168.1.63 #此行原来注释了,修改,并启用
#MASTER_HOST,这个文件中需要修改的是 MASTER_HOST 变量,这个变量的值是 MASTER SERVER 的 IP 地址
[root@yunzu63 mfs]# chown -R mfs:mfs /usr/local/mfsmeta/
启动元数据日志服务器
[root@yunzu63 mfs]# /usr/local/mfsmeta/sbin/mfsmetalogger start
working directory: /usr/local/mfsmeta/var/mfs
lockfile created and locked
initializing mfsmetalogger modules …
mfsmetalogger daemon initialized properly
[root@yunzu63 mfs]# echo “/usr/local/mfsmeta/sbin/mfsmetalogger start” >> /etc/rc.local
服务关闭方法
[root@yunzu63 mfs]# /usr/local/mfsmeta/sbin/mfsmetalogger stop
查看端口
[root@yunzu63 mfs]# /usr/local/mfsmeta/sbin/mfsmetalogger start
[root@yunzu63 mfs]# netstat -anput | grep 9419

Chunk Server安装配置

安装数据服务器(chunkservers),这些机器的磁盘上要有适当的剩余空间,而且操作系统要遵循POSIX 标准
[root@yunzu64 ~]# useradd -s /sbin/nologin mfs
[root@yunzu64 ~]# unzip moosefs-master.zip
[root@yunzu64 ~]# cd moosefs-master && ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && make && make install
配置文件修改
[root@yunzu64 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg#主配置文件
[root@yunzu64 mfs]# cp mfshdd.cfg.sample mfshdd.cfg #使用的磁盘空间配置文件
[root@yunzu64 mfs]# vim mfschunkserver.cfg
MASTER_HOST = 192.168.1.63 #元数据服务器的名称或地址,可以是主机名,也可以是 ip 地址
MASTER_PORT = 9420 #可以启用它,也可以不启用,不启用,默认就是9420
#CSSERV_LISTEN_PORT = 9422 #这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制
#HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg #分配给 MFS 使用的磁盘空间配置文件的位置
[root@yunzu64 mfs]# vim mfshdd.cfg
#mount points of HDD drives
#/mnt/hd1
#/mnt/hd2
#etc.
/tmp
#在这里/tmp 是一个给 mfs 的分区,但在生产环境是一个独立的磁盘的挂载目录
[root@yunzu64 mfs]# chown -R mfs:mfs /usr/local/mfs/
服务器启动关闭
[root@yunzu64 mfs]# /usr/local/mfs/sbin/mfschunkserver start
[root@yunzu64 mfs]# echo “/usr/local/mfs/sbin/mfschunkserver start” >> /etc/rc.local
[root@yunzu64 mfs]# chmod +x /etc/rc.local
[root@yunzu64 mfs]# ls /tmp #分块存储,人工时无法认识的
[root@yunzu64 mfs]# /usr/local/mfs/sbin/mfschunkserver stop #关闭方法

配置客户端

[root@yunzu62 ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
[root@yunzu62 ~]# useradd -s /sbin/nologin mfs
[root@yunzu62 ~]# unzip moosefs-master.zip && cd moosefs-master
[root@yunzu62 moosefs-master]# ./configure --prefix=/usr/local/mfs
–with-default-user=mfs --with-default-group=mfs --enable-mfsmount
#开启mfsmount必须有,作为客户端必须有的这一个选项。
[root@yunzu62 moosefs-master]# make -j 2 && make install
[root@yunzu62 moosefs-master]# mkdir /mfs
[root@yunzu62 moosefs-master]# lsmod | grep fuse
fuse 73530 4
[root@yunzu62 moosefs-master]# modprobe fuse #没有,加载一下
[root@yunzu62 moosefs-master]# ln -s /usr/local/mfs/bin/mfsmount /usr/bin/mfsmount
将mfs共享出来的存储空间挂载到yunzu62的/ /mfs目录下:
[root@yunzu62 moosefs-master]# mfsmount /mfs/ -H 192.168.1.63 -p
MFS Password: #无密码 直接回车
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to
root:root
[root@yunzu62 moosefs-master]# df –h
[root@yunzu62 moosefs-master]# echo “modprobe fuse” >> /etc/rc.local
[root@yunzu62 moosefs-master]# echo “/usr/local/mfs/bin/mfsmount /mfs -H
192.168.1.63” >> /etc/rc.local
[root@yunzu62 moosefs-master]# chmod +x /etc/rc.local

测试

[root@yunzu64 mfs]# yum install -y tree #64上用tree监控状态
[root@yunzu64 mfs]# tree /tmp/
[root@yunzu62 moosefs-master]# cp -r /boot/* /mfs/ #客户端写入数据
[root@yunzu64 mfs]# tree /tmp/ #存储服务器监控
[root@yunzu62 moosefs-master]# ls /mfs #客户端是看得到的文件内容,而在我们的Chunk Server上看到的都是一些碎片
config-2.6.32-431.el6.x86_64 lost+found
efi symvers-2.6.32-431.el6.x86_64.gz
grub System.map-2.6.32-431.el6.x86_64
initramfs-2.6.32-431.el6.x86_64.img vmlinuz-2.6.32-431.el6.x86_64

配置web监控

主用来监控 MFS 各节点状态信息,可部署在任一节点服务器
[root@yunzu63 mfs]# /usr/local/mfs/sbin/mfscgiserv #启动网页监控
浏览器:http://192.168.1.63:9425/(如需指定服务器ip修改share/mfscgi/mfs.cgi)

配置密码

[root@yunzu63 ~]# cd /usr/local/mfs/etc/mfs/
[root@yunzu63 mfs]# vim mfsexports.cfg //权限后面跟上密码即可
#Allow everything but “meta”.

  •                   /       rw,alldirs,maproot=0
    

#Allow “meta”.

  •                   .       rw
    

192.168.1.64/24 / rw,alldirs,maproot=0,password=123456
192.168.1.0/24 / rw,alldirs,mapproot=0

添加Chunk Server

开启一台新主机并添加为Chunk Server
[root@yunzu11 ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
[root@yunzu11 ~]# useradd -s /sbin/nologin mfs
[root@yunzu11 ~]# unzip moosefs-master.zip && cd moosefs-master
[root@yunzu11 moosefs-master]# ./configure --prefix=/usr/local/mfs
–with-default-user=mfs --with-default-group=mfs && make && make install
[root@yunzu11 moosefs-master]# cd /usr/local/mfs/etc/mfs/
[root@yunzu11 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@yunzu11 mfs]# vim mfschunkserver.cfg
MASTER_HOST = 192.168.1.63 #修改管理IP
MASTER_PORT = 9420 #去掉注释
[root@yunzu11 mfs]# cp mfshdd.cfg.sample mfshdd.cfg
[root@yunzu11 mfs]# vim mfshdd.cfg
#mount points of HDD drives
#/mnt/hd1
#/mnt/hd2
#etc.
/opt #添加一行
[root@yunzu11 mfs]# chown -R mfs:mfs /usr/local/mfs/
[root@yunzu11 mfs]# chown -R mfs:mfs /opt/
[root@yunzu11 mfs]# /usr/local/mfs/sbin/mfschunkserver start
[root@yunzu11 mfs]# yum install -y tree
[root@yunzu63 ~]# /usr/local/mfs/sbin/mfsmaster stop #重启管理
[root@yunzu63 ~]# /usr/local/mfs/sbin/mfsmaster start
[root@yunzu63 ~]# /usr/local/mfsmeta/sbin/mfsmetalogger stop #元数据日志
[root@yunzu63 ~]# /usr/local/mfsmeta/sbin/mfsmetalogger start
[root@yunzu62 moosefs-master]# cp /etc/passwd /mfs/ #写入数据
[root@yunzu62 moosefs-master]# cp /etc/hosts /mfs/
[root@yunzu11 mfs]# tree /opt/ #看到也有数据过来了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用,MooseFS是一种分布式文件系统,用作共享存储服务器。要手动切换MooseFS的主备节点,可以按照以下步骤进行操作: 1. 首先,根据引用中的指示,需要通过运行"./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount"来配置MooseFS。 2. 接下来,根据引用中的指示,需要修改配置文件"/usr/local/mfs/etc/mfshdd.cfg"。在这个文件中,你需要指定MooseFS的主备角色。 3. 修改配置文件时,你需要注意以下几个步骤: a. 确保每个服务器只贡献一个分区作为MooseFS的一部分。 b. 根据你的服务器配置,将分区的挂载点修改为MooseFS的写目录的属主。 c. 确保配置文件中只包含一行内容,指定MooseFS的主备角色。 通过完成以上步骤,你就可以手动切换MooseFS的主备节点。请确保按照正确的配置和指示进行操作,以确保系统的正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [分布式文件系统MFS(moosefs)实现存储共享](https://blog.csdn.net/weixin_35953844/article/details/119661796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值