MFS简介
MooseFS是一个具有容错性的网络分布式文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本;对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样
官网:
https://moosefs.com/https://moosefs.com/常规特征
对标准的文件操作来说,mfs用起来跟其它的类unix文件系统类似:
1、分层次的结构(目录树)
2、存储POSIX文件属性(权限、最后访问和修改时间)
3、支持特殊文件(块和字符设备、管道以及套接字)
4、符号连接和硬连接
5、对文件系统的访问可以通过IP地址和(或者)密码进行限制
独有特征
1、高可靠(数据的多个拷贝被存储在不同的计算机上)
2、通过附加新的计算机或者硬盘可以实现容量的动态扩展
3、删除的文件可以根据一个可配置的时间周期进行保留(一个文件系统级别的回收站)
4、不受访问和写入影响的文件连贯快照
体系结构
1、管理服务器(master server)
一台管理整个文件系统的独立主机,存储着每个文件的元数据(文件的大小、属性、位置信息,包括所有非常规文件的所有信息,例如目录、套接字、管道以及设备文件)
2、数据服务器群(chunk servers)
任意数目的商用服务器,用来存储文件数据并在彼此之间同步(如果某个文件有超过一个备份的话)
3、元数据备份服务器(metalogger server)
任意数量的服务器,用来存储元数据变化日志并周期性下载主要元数据文件,以便用于管理服务器意外停止时好接替其位置
4、访问mfs的客户端
任意数量的主机,可以通过mfsmount进程与管理服务器(接收和更改元数据)和数据服务器(改变实际文件数据)进行交流
使用场景
存在的优势:
1、MFS是基于FUSE(用户空间文件系统)机制的,所以支持含有FUSE的操作方式的系统
2、MFS部署简单并提供Web界面的方式进行管理与监控,同其他分布式操作系统一样,支持在线扩容,并进行横向扩展
3、MFS还具有可找回误操作删除的文件,相当于一个回收站,方便业务进行定制
4、同时MooseFS对于海量小文件的读写要比大文件读写的效率高的多
存在的问题:
1、MFS的主备架构情况类似于MySQL的主从复制,从可以扩展,主却不容易扩展
2、随着MFS体系架构中存储文件的总数上升,Master Server对内存的需求量会不断增大
3、Master Server存在单点问题,官方解决方式是把数据信息从Master Server同步到Metalogger Server上,Master Server一旦出问题Metalogger Server可以恢复升级为Master Server,但是需要恢复时间,解决方式属于冷备;目前也可以通过第三方的高可用方案(pacemaker+moosefs)来解决Master Server的单点问题
MFS部署
环境:
server1主机为mfsmaster端 IP=172.25.100.1
server2主机为chunkserver端 IP=172.25.100.2
server3主机为chunkserver端 IP=172.25.100.3
部署master server端
##master端安装软件
##启动moosefs-master、moosefs-cgiserv
##在浏览器通过9425端口访问得到图形界面
##添加解析后成功访问到数据
部署chunkserver端
##安装moosefs-chunkserver,配置文件存储目录
##为server2主机添加新一块大小为5G的磁盘
##配置一个大小为2G的分区/dev/vdb1并格式化后挂载至上述文件存储目录
##配置开机自动挂载
##启动moosefs-chunkserver,其会监听9422端口
##moosefs-master端通过9420端口连接moosefs-chunkserver
##配置server3主机的文件存储目录
注意:moosefs-chunkserver端主机都需要在/etc/hosts文件中添加 “IP mfsmaster” 字样的解析
部署mfs客户端
此处使用我们的真实物理机作为mfs的客户端
##将mfs文件系统挂载至/mnt/mfs目录下
MFS管理
##在客户端挂载点下创建两个测试目录,设定dir1目录的副本数为1,dir2的副本数为默认值2(因为只有两个chunkserver端)
##停掉passwd文件存储的chunkserver端服务后,此文件即不再能够被访问到了,而fstab文件仍可以被访问到
##重新启动server2端的chunkserver服务,dir1下的passwd文件又可被访问到
##客户端文件在chunkserver端的存储路径
##默认chunk的大小为64M,当文件大于64M时会进行切分
##当moosefs-master正常关闭后,/var/lib/mfs目录下metadata.mfs.back文件会重命名为metadata.mfs.back.1,同时生成metadata.mfs文件;当moosefs-master开启服务时,/var/lib/mfs目录下的metadata.mfs文件会被重命名为metadata.mfs.back
##异常关闭moosefs-master服务时,/var/lib/mfs目录下不会生成metadata.mfs.back文件,再次启动moosefs-master服务也会失败
##异常关闭mooose-master时重启失败的解决办法
简单的数据恢复
##查看mfs文件系统存储文件的回收时间(24h)
##删除挂载点下dir1中的passwd文件;创建目录并将mfsmaster的元数据挂载至其上
##恢复数据,trash目录相当于一个回收站,被删除的数据会在这里保存24h(默认)
MFS存储类
存储类:storage class,允许指定文件的chunks存放在具有指定标签(label)的chunkservers上
标签:label,储存类使用label对chunkserver进行定义,然后使用label表达式对副本存储方式进行储存类设定
chunkserver的标签要求:label仅能使用(A-Z 的26个大写字母)来定义chunkserver;每个chunkserver可以被打上多个标签(即标记上多个字母,但最多可以打26个label)
##首先扩充一个chunkserver端server4主机,文件存储目录为/mnt/chunk3
##为chunkserver端打标签
##在客户端创建标签存储类并将文件设定为此存储类,从而此文件在存储副本时会锁定在具有指定标签的chunkserver上
##chunkserver有多个标签时的文件存储测试
##同上测试(-r表示递归)
##指定不同阶段的文件存储策略
MFS高可用集群
环境:
server1主机为moosefs-master主机 IP=172.25.100.1
server4主机为moosefs-master主机 IP=172.25.100.4
server2主机为moosefs-chunkserver主机 IP=172.25.100.2
server3主机为moosefs-chunkserver主机 IP=172.25.100.3
真实物理主机为mfs的客户端主机 IP=172.25.100.250
环境准备:
##卸载客户端的mfs挂载
##停掉server4主机的moosefs-chunkserver服务,结下来将配置其为两一个moosefs-master端
##停掉server2主机的moosefs-chunkserver服务;安装targetcli以配置iscsi共享磁盘设备
##配置iscsi以共享server2主机的/dev/vdb设备
##停掉server3主机的moosefs-chunkserver服务
##停掉server1主机的moosefs-master服务
##server1主机使用server2主机共享的设备
##对共享设备进行分区、格式化、挂载使用
##将/mnt目录作为跳板将/var/lib/mfs下的文件存储值/dev/sda1设备上;之后再将此设备挂载至目录/var/lib/mfs
##测试server1主机的moosefs-master启动正常后再停掉服务
##server4主机配置及测试
##停掉moosefs-master端主机的此服务开机自启;卸载/var/lib/mfs挂载
高可用部署:
##moosefs-master主机安装pacemaker系列工具
##配置moosefs-master主机间的ssh免密
##pacemaker的一些列配置
高可用测试:
##在moosefs-master端、moosefs-chunkserver端、客户端添加mfsmaster的地址解析
##启动chunkserver端的服务
##客户端挂载mfs文件系统
##模拟server1主机宕机
##vip漂移至server4主机;共享设备/dev/sda1也挂载至server4主机的/var/lib/mfs目录下;moosefs-master服务也在server4主机上正常启动
##客户端仍然能够挂载mfs文件系统并正常访问
##恢复server1主机,pcs集群中的资源不会漂移回来;server1、server4主机的双机热备实现了整个mfs文件系统集群的高可用性能