MFS分布式文件系统

什么是MFS分布式文件系统

MooseFS是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。

常规特征:
对标准的文件操作来说,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进程与管理服务器(接收和更改元数据)和数据服务器(改变实际文件数据)进行交流。

MFS文件系统的增删改查过程

MFS的读数据过程:
client当需要一个数据时,首先向master server发起查询请求;管理服务器检索自己的数据,获取到数据所在的可用数据服务器位置ip|port|chunkid;管理服务器将数据服务器的地址发送给客户端;客户端向具体的数据服务器发起数据获取请求;

MFS的写数据过程:
当客户端有数据写需求时,首先向管理服务器提供文件元数据信息请求存储地址(元数据信息如:文件名|大小|份数等);
管理服务器根据写文件的元数据信息,到数据服务器创建新的数据块;
数据服务器返回创建成功的消息;
管理服务器将数据服务器的地址返回给客户端(chunkIP|port|chunkid);
客户端向数据服务器写数据;
数据服务器返回给客户端写成功的消息;

MFS的删除过程:
客户端有删除操作时,首先向Master发送删除信息;
Master定位到相应元数据信息进行删除,并将chunk server上块的删除操作加入队列异步清理;
响应客户端删除成功的信号

MFS修改文件过程:
客户端有修改文件内容时,首先向Master发送操作信息;
Master申请新的块给.swp文件,
客户端关闭文件后,会向Master发送关闭信息;
Master会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有块和.swp文件块;

MFS文件系统的配置

实验环境:
我们在这里为了实验,我们需要大概三台虚拟机
server1作为主节点,server2/3作为两个chunk server,让我们的物理机作client server

配置master主节点
1.获取Moosefs所需要的安装包
在这里插入图片描述
2.安装mfsmaster和web图形化界面
在这里插入图片描述

3.作主节点的解析
为了后面方便一点,我们在所有的主机上全部做节点的解析,包括chunkserver和clientserver
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.开启服务,查看端口
在这里插入图片描述

9419:metalogger监听的端口,默认的,和源数据日志结合。定期和master主机同步数据
9420:用于chunkserver连接的默认端口地址
9421:用于clientserver连接的默认端口

5.打开图形化处理工具
在这里插入图片描述
其中9425就是我们的图形化的端口,接下来我们用浏览器去打开它
172.25.66.1:9425
在这里插入图片描述

从节点,即chunk server的配置
1.安装mfs chunk server
在这里插入图片描述

[root@server2 ~]# rpm -ivh moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm 
[root@server3 ~]# rpm -ivh moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm

2.添加master的解析
由于我们在之前做了,这里就不用做了
3.编辑chunkserver的配置文件

[root@server2 ~]# vim /etc/mfs/mfshdd.cfg
最后一行添加: /mnt/chunk1               #存储位置
[root@server3 ~]# vim /etc/mfs/mfshdd.cfg
/mnt/chunk2

4.建立刚才的存储目录,并且修改所有人和所有组,因为mfs默认的用户是mfs,而非root用户

[root@server2 mfs]# mkdir /mnt/chunk1
[root@server2 mfs]# chown mfs.mfs /mnt/chunk1/
[root@server3 ~]# mkdir /mnt/chunk2
[root@server3 ~]# chown mfs.mfs /mnt/chunk2/

5.开启服务

[root@server2 mfs]# systemctl start moosefs-chunkserver
[root@server3 ~]# systemctl start moosefs-chunkserver

client server(我们这里是物理机)的配置
1.安装client软件
在这里插入图片描述
2.编辑解析文件
在这里插入图片描述

3.创建客户端挂在数据目录,并配置配置文件

[root@foundation66 3.0.103]# mkdir /mnt/mfs
[root@foundation66 3.0.103]# vim /etc/mfs/mfsmount.cfg
[root@foundation66 3.0.103]# tail -n 1 /etc/mfs/mfsmount.cfg
/mnt/mfs		挂载目录
[root@foundation66 3.0.103]# mfsmount  客户端挂载文件系统 
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@foundation66 3.0.103]# 

df查看挂载
在这里插入图片描述
4.在挂载的目录/mnt/mfs下建立两个子目录并查看数据存储服务器

[root@foundation66 3.0.103]# cd /mnt/mfs/
[root@foundation66 mfs]# mkdir dir1
[root@foundation66 mfs]# mkdir dir2
[root@foundation66 mfs]# mfsgetgoal dir1	查看dir1的文件存储
dir1: 2
[root@foundation66 mfs]# mfsgetgoal dir2
dir2: 2

5.修改dir1的文件备份数为1,与dir2作出对比

[root@foundation66 mfs]# mfssetgoal -r 1 dir1
dir1:
inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0
[root@foundation66 mfs]# mfsgetgoal dir1
dir1: 1

6。进行测试
我们尝试放置两个文件到这两个目录中,看其文件存储状态
在这里插入图片描述
我们尝试将server3宕掉,查看其文件

[root@server3 ~]# systemctl stop moosefs-chunkserver
[root@foundation66 dir2]# mfsfileinfo passwd 
passwd:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.66.2:9422 (status:VALID)	我们可以发现2只有在一个节点上存储
[root@foundation66 dir2]# cd ../dir1
[root@foundation66 dir1]# mfsfileinfo passwd 
passwd:
	chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
		no valid copies !!!	单个的则无存储,
		切忌此时不能打开passwd查看,负责会一直卡住,这是因为我们的存储服务器已经挂掉,那么我们肯定是无法从客户端的挂载上看到其信息的,但是当我们重新打开server3的服务后就可以了,因为我们的master主机有其源文件
[root@server3 ~]# systemctl start moosefs-chunkserver

离散存储
我们的mfs文件系统的存储是以单元格的方式存储的,每个单元格的存储空间都是一定的,那么当我们的文件大小超过单元格大小后就需要多个单元格存储了

[root@foundation66 dir1]# pwd
/mnt/mfs/dir1
[root@foundation66 dir1]# dd if=/dev/zero of=file1 bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.152149 s, 689 MB/s
[root@foundation66 dir1]# mfsfileinfo file1 
file1:
	chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
		copy 1: 172.25.66.3:9422 (status:VALID)
	chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
		copy 1: 172.25.66.2:9422 (status:VALID)
[root@foundation66 dir1]# cd ../dir2
[root@foundation66 dir2]# dd if=/dev/zero of=file2 bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.296364 s, 354 MB/s
[root@foundation66 dir2]# mfsfileinfo file2 
file2:
	chunk 0: 0000000000000005_00000001 / (id:5 ver:1)
		copy 1: 172.25.66.2:9422 (status:VALID)
		copy 2: 172.25.66.3:9422 (status:VALID)
	chunk 1: 0000000000000006_00000001 / (id:6 ver:1)
		copy 1: 172.25.66.2:9422 (status:VALID)
		copy 2: 172.25.66.3:9422 (status:VALID)

数据恢复
我们的mfs系统当用户删除文件后,会将文件放至垃圾箱,垃圾箱有一个清除时间,所以在这个清除时间内的文件是可以恢复的,这个时间可以用命令mfsgettrashtime查看,单位为秒
在这里插入图片描述
实现恢复

[root@foundation66 dir2]# rm -fr passwd 
[root@foundation66 dir2]# mkdir /mnt/mfsmeta
[root@foundation66 dir2]# mfsmount -m /mnt/mfsmeta/
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@foundation66 dir2]# cd /mnt/mfsmeta/
[root@foundation66 mfsmeta]# ls
sustained  trash
[root@foundation66 mfsmeta]# cd trash/
[root@foundation66 trash]# find -name *passwd*
./005/00000005|dir2|passwd
[root@foundation66 trash]# cd 005/
[root@foundation66 005]# ls
00000005|dir2|passwd  undel
[root@foundation66 005]# mv 00000005\|dir2\|passwd undel/
[root@foundation66 005]# cd /mnt/mfs
mfs/     mfsmeta/ 
[root@foundation66 005]# cd /mnt/mfs/dir2
[root@foundation66 dir2]# ls
file2  passwd
[root@foundation66 dir2]# 

mfs master服务的开启和关闭
正常关闭;同其他服务相同,systemctl start/stop即可
异常关闭:
在这里插入图片描述
我们发现异常关闭后就无法在开启了,此时我们就只有手动mfsmaster -a脚本开启
在这里插入图片描述
那么如果我们还想用之前的方启动,我们可以通过修改systemd的配置文件来修改

在这里插入图片描述
在这里插入图片描述
我们可以发现这样就可以启用了,其实我们做的也不过是将脚本启动写到了system里而已

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值