一、MFS的简单了解
1、包含 4 种角色
管理服务器 managing server (master)
元数据日志服务器 Metalogger server(Metalogger)
数据存储服务器 data servers (chunkservers)
客户机挂载使用 client computers
2、各种角色作用
管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。
元数据日志服务器: 负责备份 master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。
数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。
客户端: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。
3、MFS 读写原理
二、MFS环境的简单部署
实验环境rhel6.5 selinux and iptables disabled
Server1 master 172.25.70.1
Server2 chunkserver 172.25.70.2
Server3 chunkserver 172.25.70.3
foundation70(真机) Client 172.25.254.70
1、主控服务器 Master server 安装
所需rpm包
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
安装
[root@server1 ~]# 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
使用mfs分布式文件系统需要做好解析(这里我们设置master所在的主机server1为mfsmaster)
[root@server1 ~]# vim /etc/hosts
[root@server1 ~]# /etc/init.d/moosefs-cgiserv start
[root@server1 ~]# /etc/init.d/moosefs-master start
查看端口侦听情况
用于 chunkserver 连接的端口地址(默认是 9420)
metalogger 监听的端口地址(默认是 9419)
用于客户端挂接连接的端口地址(默认是 9421)
MFS master web 界面监听端口,查看整体运行状态(默认是 9425)
2、客户端可以对mfsmaster进行访问,但是在这之前需要做好本地解析
[root@foundation70 ~]# vim /etc/hosts
172.25.70.1 server1 mfsmaster
访问mfsmaster的ip+9425 这里是(172.25.70.1:9425)
3、chunkserver的安装(在server2和server3上)
所需rpm包:
moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm
[root@server2 ~]# yum install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm -y
[root@server3 ~]# yum install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm -y
server2和server3都添加本地解析
vim /etc/hosts
172.25.70.1 server1 mfsmaster
在启动chunkserver之前,需要定义mfs共享点,在这里我们设置该共享点为/mnt/chunk1(server1),/mnt/chunk2(serevr2)
在server2和server3上都进行下面操作
mkdir /mnt/chunk1
mkdir /mnt/chunk2
[root@server2 ~]# chown mfs.mfs /mnt/chunk1/ 需要确保用户mfs对该共享点有权限读写
[root@server2 ~]# vim /etc/mfs/mfshdd.cfg
/mnt/chunk1 #在配置文件末尾定义mfs共享点
[root@server3 ~]# chown mfs.mfs /mnt/chunk2/
[root@server3 ~]# vim /etc/mfs/mfshdd.cfg
/mnt/chunk2 #在配置文件末尾定义mfs共享点
启动chunkserver(在server2和server3上)
mfschunkserver start
如下图:
4、在client端再次访问9425端口
应该可以看见这个 MooseFS 系统的全部信息,包括主控 master 和存储服务 chunkserver
5、客户端 client 安装
所需rpm包
moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm
安装
[root@foundation70 moosefs6.5]# yum install moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm -y
挂载
[root@foundation70 ~]# cd /etc/mfs/
[root@foundation70 mfs]# vim mfsmount.cfg #定义客户端默认挂载
/mnt/mfs
[root@foundation70 mnt]# mkdir mfs
[root@foundation70 mnt]# useradd mfs
[root@foundation70 mnt]# chown mfs:mfs /mnt/mfs/
[root@foundation70 ~]# mfsmount #成功挂载
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
6、MFS 测试
在 MFS 挂载点下创建两个目录,并设置其文件存储份数
[root@foundation70 mfs]# mkdir dir1 dir2
[root@foundation70 mfs]# mfssetgoal -r 2 dir1/ #设置在 dir1 中文件存储份数为两个,默认是一个。
[root@foundation70 mfs]# mfsgetgoal dir1/ #获取文件存储份数
dir1/: 2
You have new mail in /var/spool/mail/kiosk
[root@foundation70 mfs]# mfsgetgoal dir2/ #获取文件存储份数
dir2/: 1
注意:对一个目录设定 “ goal”,此目录下的新创建文件和子目录均会继承此目录的设定,但不会改变已经存在的文件及目录的 copy 份数。但使用-r 选项可以更改已经存在的 copy 份数
#拷贝/etc/passwd这份文件分别到两个目录上
[root@foundation70 mfs]# cp /etc/passwd dir1
[root@foundation70 mfs]# cp /etc/passwd dir2
[root@foundation70 mfs]# mfscheckfile dir1/passwd
dir1/passwd:
chunks with 2 copies: 1
[root@foundation70 mfs]# mfsfileinfo dir1/passwd #查看dir1下文件信息
[root@foundation70 mfs]# mfscheckfile dir2/passwd
dir2/passwd:
chunks with 1 copy:
[root@foundation70 mfs]# mfsfileinfo dir2/passwd #查看dir2下文件信息
关闭 mfschunkserver3 后再查看文件信息
由于dir1/的文件存储份数是2,本身存储在chunkserver2上,dir2/的文件存储份数是1,本身存储在chunkserver3上,当我们把server3上的chunkserver关闭,那么dir1/下的文件仍可以查看,因为存储份数是2的缘故,dir2/下的文件就不能查看。
7、恢复垃圾箱文件
[root@foundation70 mfs]# rm -rf dir1/passwd
[root@foundation70 mfs]# mfsgettrashtime dir1/ #文件删除后存放在 “ 垃圾箱 ” 中的时间称为隔离时间, 这个时间可以用 mfsgettrashtime 命令来查看,用 mfssettrashtime 命令来设置,单位为秒,默认为 86400 秒。
dir1/: 86400
[root@foundation70 mfs]# mkdir /mnt/mfsmeta
[root@foundation70 mfs]# mfsmount -m /mnt/mfsmeta/ -H mfsmaster #挂载 MFSMETA 文件系统,它包含目录 trash (包含仍然可以被还原的删除文件的信息)和trash/undel (用于获取文件)。把删除的文件,移到/ trash/undel 下,就可以恢复此文件。
[root@foundation70 mfs]# cd /mnt/mfsmeta/
You have new mail in /var/spool/mail/kiosk
[root@foundation70 mfsmeta]# ls
sustained trash
[root@foundation70 mfsmeta]# cd trash/ #进入trash,该目录下有很多文件
[root@foundation70 mfsmeta]# find -type f #我们要恢复的文件类型为普通文件
./004/00000004|dir1|passwd
[root@foundation70 trash]# mv 00000004\|dir1\|passwd undel/ #将需要恢复的文件移动到undel目录下,注意书写格式
成功恢复
[root@foundation70 trash]# cd /mnt/mfs/dir1/
[root@foundation70 dir1]# ls
passwd