mfs分布式存储

官网部署参考
分布式存储,突破单机上的磁盘空间不足
在这里插入图片描述

一.mfs简介

(一)MFS 特性:
1.Free(GPL)
2.通用文件系统,不需要修改上层应用就可以使用
3.可以在线扩容,体系架构可伸缩性极强
4.部署简单
5.高可用,可设置任意的文件冗余程度(提供比 raid1+0 更高的冗余级别,而绝对不会影响读或写的性能,只会加速!)
6. 可回收在指定时间内删除的文件( “ 回收站 ” 提供的是系统级别的服务,不怕误操作了,提供类似 oralce 的闪回等高级 dbms 的即时回滚特性!)
7.提供 netapp,emc,ibm 等商业存储的 snapshot 特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)
8.google filesystem 的一个 c 实现
9.提供 web gui 监控接口
10.提高随机读或写的效率
11.提高海量小文件的读写效率
(二).可能的瓶颈:
1.master 本身的性能瓶颈。mfs 系统 master 存在单点故障如何解决
2.体系架构存储文件总数的可遇见的上限。(mfs 把文件系统的结构缓存到 master 的内存中,文件越多,master 的内存消耗越大,8g 对应 2500w 的文件数,2 亿文件就得 64GB 内存 )。master 服务器 CPU 负载取决于操作的次数,内存的使用取决于文件和文件夹的个数。
(三)MFS 读写原理
在这里插入图片描述
在这里插入图片描述
原始的读/写速度很明显是主要取决于所使用的硬盘的性能、网络的容量和拓扑结构的,使用的硬盘和网络的吞吐量越好,整个系统的性能也就会越好

二.MFS 部署

主机环境:RHEL6.0 selinux and iptables disabled
Master:server1
Chunkserver: server2 3
Client: 真机
(一).mfs master 安装

server1
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
vim /etc/yum.repos.d/MooseFS.repo  #修改下gpgcheck=0

yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y
/etc/mfs/mfsmaster.cfg  #此文件中凡是用#注释掉的变量均使用其默认值,基本不需要修改就可以工作,根据实际情况再看
/etc/mfs/mfsexports.cfg  #访问控制
systemctl start moosefs-master  #启动 master server
systemctl start moosefs-cgiserv.service  #cgi监控

所有节点的mfsmaster解析做一下
vim /etc/hosts
172.25.2.1 server1 mfsmaster
scp /etc/hosts server2:/etc/hosts
scp /etc/hosts 172.25.2.250:/etc/hosts
scp /etc/hosts server3:/etc/hosts
源做一下
scp /etc/yum.repos.d/MooseFS.repo server2:/etc/yum.repos.d/
scp /etc/yum.repos.d/MooseFS.repo server3:/etc/yum.repos.d/

在这里插入图片描述
(二).存储块服务器 Chunk servers 安装

server2
yum install moosefs-chunkserver -y
添加外部磁盘
fdisk /dev/vdb
mkfs.xfs /dev/vdb1 
mkdir /mnt/chunk1
chown mfs.mfs /mnt/chunk1/
mount /dev/vdb1 /mnt/chunk1/
vim /etc/fstab 
/dev/vdb1       /mnt/chunk1     xfs     defaults        0       0

vim /etc/mfs/mfshdd.cfg  #定义 mfs 共享点
35 /mnt/chunk1
systemctl start moosefs-chunkserver
server3
不添加外部磁盘,默认使用/下空间,这样的话为了防止/满了,设置预留空间
yum install moosefs-chunkserver -y
vim /etc/mfs/mfshdd.cfg
35 /mnt/chunk2
mkdir /mnt/chunk2
chown mfs.mfs /mnt/chunk2
systemctl start moosefs-chunkserver

现在再通过浏览器访问 http://172.25.2.1:9425/ 应该可以看见这个 MooseFS 系统的全部信息,包括主控 master 和存储服务 chunkserver

在这里插入图片描述
(三).mfs使用

客户端 client 安装
172.25.2.250 真机
 curl "http://ppa.moosefs.com/MooseFS-3-el8.repo" > /etc/yum.repos.d/MooseFS.repo
 yum install moosefs-client -y
 
 vim /etc/mfs/mfsmount.cfg  #定义客户端默认挂载
  16 /mnt/mfs
 mkdir /mnt/mfs  #这个目录下不能有文件
 
 mfsmount
 mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root

(四)MFS 文件系统结构
包含 4 种角色:
1.管理服务器 managing server (moosefs-master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
CGI 监控服务 moosefs-cgiserv
2.数据存储服务器 data servers (moosefs-chunkserver):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输
3,客户机挂载使用 client computers (moosefs-client)客户端: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果

4.元数据日志服务器 Metalogger server(Metalogger):负责备份 master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作
在这里插入图片描述
在这里插入图片描述
(五)MFS 测试
1.在 MFS 挂载点下创建两个目录,并设置其文件存储份数
默认副本两个
在这里插入图片描述
设置在 dir1 中文件存储份数为一个,默认是两个;对一个目录设定 “ goal”,此目录下的新创建文件和子目录均会继承此目录的设定,但不会改变已经存在的文件及目录的 copy 份数.但使用-r 选项可以更改已经存在的 copy 份数
在这里插入图片描述
2.拷贝文件到两个目录,查看文件信息
在这里插入图片描述

3.关闭 mfschunkserver2 后再查看文件信息
[root@server2 ~]# systemctl stop moosefs-chunkserver.service
那么在server2上存储的副本将丢失

在这里插入图片描述

4.当server2 moosefs-chunkserver服务重启后,副本又出现
[root@server2 ~]# systemctl start moosefs-chunkserver

在这里插入图片描述
(六)块存储
master首先为大的数据创建块,默认一个块64M,200M的数据分为4个块,分别部署在chunserver,创建两个副本
再加一个存储块服务器 Chunk servers server4
在这里插入图片描述
(七)恢复误删文件

cd /mnt/mfs/dir2
[root@xd dir2]# mfsgettrashtime fstab 
fstab: 86400  #文件删除后存放在 “ 垃圾箱 ” 中的时间称为隔离时间, 这个时间可以用 mfsgettrashtime 命令来查看,用 mfssettrashtime 命令来设置,单位为秒,默认为 86400 秒
rm -f fstab  #删除数据后,不要新建和

mkdir /mnt/mfsmeta
mfsmount -m /mnt/mfsmeta/  #挂载 MFSMETA 文件系统,它包含目录 trash (包含仍然可以被还原的删除文件的信息)和trash/undel (用于获取文件).把删除的文件,移到/ trash/undel 下,就可以恢复此文件

cd /mnt/mfsmeta/trash/
find -name *fstab*
cd 005/
mv 00000005\|dir2\|fstab undel/
到 dir2目录中可以看到fstab文件恢复

在这里插入图片描述

三.存储类

labels标签
create创建 keep保持 archive打包
在这里插入图片描述
再加一个存储块服务器 Chunk servers server5,并给所有的chunkserver打上标签

server2 3 4 5
vim /etc/mfs/mfschunkserver.cfg
 84 LABELS = A  #2 3 A; 4 5 B
systemctl reload moosefs-chunkserver.service

在这里插入图片描述
在这里插入图片描述

mfsscadmin create 2A sclass1
mfsscadmin list
mfsfileinfo fstab
mfssetsclass sclass1 fstab
2 3 是A标签

在这里插入图片描述
将不同的机房存储服务器分类,防止整个机房瘫痪;
根据不同的数据存储需求,将固态硬盘和机械硬盘打上不同的标签,分类存储

四.故障测试

为了安全停止 MooseFS 集群,建议执行如下的步骤:
# umount -l /mnt/mfs
#客户端卸载 MooseFS 文件系统
# mfschunkserver stop
# 停止 chunk server 进程
# mfsmetalogger stop
# 停止 metalogger 进程
# mfsmaster stop
# 停止主控 master server 进程

安全的启动 MooseFS 集群:
# mfsmaster start
# 启动 master 进程
# mfschunkserver start
# 启动 chunkserver 进程
# mfsmetalogger start
# 启动 metalogger 进程
# mfsmount
# 客户端挂载 MooseFS 文件系统

1.Client 客户端断电、断网对 MFS 的体系不产生影响.
如果客户端误杀 killall -9 mfsmount 进程,需要先 umount /mnt/mfs,然后再 mfsmount。否则会提示:/mnt/mfs: Transport endpoint is not connected
2.断网、杀掉 mfschunkserver 程序对 MFS 系统无影响。
断电:
#无文件传输时,对两个 chunker 都无影响;
#当有文件传输时,但是文件设置存储一份时,对文件的存储无影响。
#文件设置存储两份,数据传输过程中,关掉 chunker1,等待数据传输完毕后,启动chunker1;chunker1 启动后,会自动从 chunker2 复制数据块。整个过程中文件访问不受影响。
#文件设置存储两份,数据传输过程中,关掉 chunker1,不等待数据传输完毕,开机启动chunker1;chunker1 启动后,client 端会向 chunker1 传输数据,同时 chunker1 也从 chunker2 复制缺失的块。
只要不是两个 chunker 服务器同时挂掉的话,就不会影响文件的传输,也不会影响服务的使用
3.master 端:
断网、杀掉 MFS 的 master 服务对 MFS 系统无影响。
断电可能会出现以下的情况
#当没有文件传输时,可在服务器重启之后,运行 mfsmetarestore –a 进行修复,之后执行mfsmaster start 恢复 master 服务
#当有文件传输时,可能会在/usr/local/mfs/sbin/mfsmetarestore –a 进行修复时,此时无法修复也无法启动 master 服务,有个应急的办法是将 metadata.mfs.back 复制成metadata.mfs,然后再启动 master。这样将会丢失那些正在传输的数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值