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 存在单点故障如何解决?moosefs+drbd+heartbeat来保证 master 单点问题?不过在使用过程
中不可能完全不关机和间歇性的网络中断!

2. 体系架构存储文件总数的可遇见的上限。(mfs 把文件系统的结构缓存到 master 的内存中,文件越多,master 的内存消耗越大,8g 对应 2500w 
的文件数,2 亿文件就得 64GB 内存 )。

master 服务器 CPU 负载取决于操作的次数,内存的使用取决于文件和文件夹的个数。

MFS 文件系统结构:

包含 4 种角色:

管理服务器 managing server (master)

元数据日志服务器 Metalogger server(Metalogger)

数据存储服务器 data servers (chunkservers)

客户机挂载使用 client computers

各种角色作用:

1. 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。

2. 元数据日志服务器: 负责备份 master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。

3. 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。

4. 客户端: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。

MFS 读写原理:





原始的读/写速度很明显是主要取决于所使用的硬盘的性能、网络的容量和拓扑结构的,使用的硬盘和网络的吞吐量越好,整个系统的性能也就会越好。

MFS 部署:

主机环境:RHEL6.0 selinux and iptables disabled

Master:172.25.27.1

Chunkserver: 172.25.27.3 172.25.27.2

Client: 172.25.27.4

Master 端

[root@server1 3.0.97]# yum install moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm 
moosefs-master-3.0.97-1.rhsysv.x86_64.rpm -y
[root@server1 3.0.97]# vim /etc/hosts #master和chunkserevr端三台主机都添加
172.25.27.1     mfsmaster server1

[root@server1 3.0.97]# /etc/init.d/moosefs-master start  #开启服务

[root@server1 3.0.97]# /etc/init.d/moosefs-cgiserv start  #启动 MooseFS cgi server用于使用web端查看监控


chunkserver端

[root@server2~]#yum install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm -y#server2、server3上都安装

给server2上先安装一块虚拟硬盘

[root@server2 ~]# fdisk /dev/vdb   #给磁盘分区
[root@server2 ~]# fdisk -l

[root@server2 ~]# mkfs.ext4 /dev/sdb1  #格式化

[root@server2 ~]# mkfs.ext4 /dev/sdb1  #格式化
[root@server2 ~]# cd /mnt/
[root@server2 mnt]# mkdir chunk1  
[root@server2 mnt]# mkdir chunk2
[root@server2 mnt]# cd
[root@server2 ~]# mount /dev/vdb1 /mnt/chunk1/
[root@server2 ~]# vim /etc/fstab   #设置开机自动挂载

[root@server2 mnt]# chown mfs.mfs  chunk1/

[root@server2 mnt]# cd /etc/mfs/
[root@server2 mfs]# vim mfshdd.cfg   #定义 mfs 共享点

[root@server2 ~]# /etc/init.d/moosefs-chunkserver start
[root@server2 ~]# cd /mnt/chunk1/
[root@server2 chunk1]# ls

Server3上进行server2上一样的操作不同的是将挂载点和共享点设置为/mnt/chunk2

Clint 端:
[root@server4 ~]# yum install moosefs-client-3.0.97-1.rhsysv.x86_64.rpm -y
[root@server4 ~]# cd /mnt/
[root@server4 mnt]# mkdir mfs
[root@server4 mnt]# cd /etc/mfs/
[root@server4 mfs]# vim mfsmount.cfg  #定义客户端默认挂载
[root@server4 mfs]# vim /etc/hosts
172.25.27.1     mfsmaster server
[root@server4 mfs]# mfsmount  #挂载

[root@server4 mfs]# cd /mnt/mfs/
[root@server4 mfs]# mkdir dir1
[root@server4 mfs]# mkdir dir2
[root@server4 mfs]# mfsgetgoal dir1
dir1: 2
[root@server4 mfs]# mfsgetgoal dir2
dir2: 2
对一个目录设定 “ goal”,此目录下的新创建文件和子目录均会继承此目录的设定,但不会改变已经存在的文件及目录的 copy 份数。但使用-r 选项可以更改已
经存在的 copy 份数。
[root@server4 mfs]# cp /etc/passwd dir1/
[root@server4 mfs]# cp /etc/passwd dir2/
[root@server4 mfs]# cd dir1/
[root@server4 dir1]# ls
passwd
[root@server4 dir1]# mfsfileinfo passwd  #此时默认存储两份,即每个chunkserver存一份

[root@server4 mfs]# rm -fr dir1/*
[root@server4 mfs]# rm -fr dir2/*
[root@server4 mfs]# mfssetgoal -r 1 dir1/  #设置在 dir1 中文件存储份数为一个,
[root@server2 ~]# /etc/init.d/moosefs-chunkserver stop

原本dir1中的shadow文件显示为chunkserver2上面的,这个时候将chunkserver2关掉,发现不能访问文件查看文件信息后发现:dir1下面的
shadow文件不存在了,原本dir2下面存储两份的文件只剩下了一份。

[root@server2 ~]# /etc/init.d/moosefs-chunkserver start #当chunkserver2重新启动后,发现数据又恢复了过来

当文件较大时,会分两个chounk来存储,即chunk0、chunk1各存储一部分

恢复误删文件
[root@server4 dir2]# rm -fr passwd 
[root@server4 dir2]# mfsgettrashtime .
.: 86400
[root@server4 dir2]# mkdir /mnt/mfsmeta/
[root@server4 dir2]# mfsmount -m /mnt/mfsmeta/ -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@server4 dir2]# cd /mnt/mfsmeta/trash/
[root@server4 trash]# find -name *passwd*
./004/00000004|dir1|passwd
./005/00000005|dir2|passwd
./007/00000007|dir2|passwd
[root@server4 trash]# mv ./007/00000007\|dir2\|passwd undel/
[root@server4 trash]# cd /mnt/mfs/dir2/
[root@server4 dir2]# ls

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值