企业—MFS分布式文件系统简介及其部署
一.MFS分布式文件系统简介
1.简介
mooseFS(moose驼鹿)是一款网络分布式文件系统,它把数据分散到多台服务器上,但对于用户来讲,看到的只是一个源.MFS也像其他类unix文件系统,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时)可以创建特殊的文件(块设备,字符设备,管道,套接字)符号链接.
MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
2.MooseFS文件系统介绍
MooseFS是一中分布式文件系统,MooseFS文件系统结构包括一下四种角色:
1.管理服务器master
管理服务器:负责各个数据存储服务的管理文件读写调度,文件空间回收以及恢复,多节点拷贝2.数据存储服务器data server(chunk servers)
真正存储用户数据的服务器 ,存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间赋值(复制份数可以手工指定,建议设置副本数为数据服务器可以为多个,并且数据越多,可使用的“磁盘空间越大,”可靠性也越高 .3.客户端挂在 使用clinet computers
使用MFS文件系统来存储和访问的主机名称为MFS的客户端,成功挂载MFS系统以后,就可以像以前NFS一样共享这个虚拟性的存储了。
3.MFS读取数据的过程
- 客户端向元数据服务器发出读请求。
- 元数据服务器把所需数据存放的位置告知客户端。
- 客户端向已知的Chunk Server请求发送数据。
- Chunk Server向客户端发送数据。
4.MFS写入数据的过程
- 客户端向元数据服务器发送写入请求。
- 元数据服务器与(ChunkServer进行交互)。
- 元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据。
- 客户端向指定的Chunk Server写入数据。
- 该Chunk Server 与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功。
- 客户端告知元数据服务器本次写入完毕。
二.MFS分布式文件系统的部署
1.实验环境
rhel7.3 firewalld is disabled
主机名(IP) | 服务 |
---|---|
server1(172.25.254.1) | master |
server2(172.25.254.2) | chunk server |
server3(172.25.254.3) | chunk server |
foundation(172.25.254.77) | client |
部署如下:
官网下载需要的相关安装包
server1(master)的部署:
1.安装master和管理的web图形界面
[[email protected] 3.0.103]# yum install -y moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm moosefs-cli-3.0.103-1.rhsystemd.x86_64.rpm moosefs-cgiserv-3.0.103-1.rhsystemd.x86_64.rpm moosefs-cgi-3.0.103-1.rhsystemd.x86_64.rpm
安装完成之后会产生/etc/mfs目录里面是mfs文件系统的相关配置文件
注:在该目录下的mfsmaster.cfg的文件中记录了如果进行部署及其使用都需要在各个节点写入mfsmaster的解析
2.主节点解析
[[email protected] mfs]# vim /etc/hosts
文件编辑如下:
172.25.254.1 server1 mfsmaster
3.开启服务查看节点
端口解析:
- 9419:metalogger监听的端口地址,和原数据日志相结合,定期和master端同步数据
- 9420:用于和chunkserver连接的端口地址,通信节点
- 9421:用于客户端对外连接的点口地址
4.打开cgi图形化管理工具并且进行查看
浏览器访问查看:
http://172.25.254.1:9425/mfs.cgi
从节点server2(chunk server)的部署:
1.安装chunkserver
2.添加mfsmaster的解析
[[email protected] ~]# vim /etc/hosts
172.25.254.1 server1 mfsmaster
3.给server2上添加一块硬盘用于mfs的数据节点的操作
添加完成之后查看:
4.创建分区并且格式化
注:分区时建议只分区一块将将内存全给/dev/vda即可,即使在数据丢失时亚能通过分区的Start和End的字节数来恢复数据,但是如果分区多的话每个分区的Start和End的字节数都不相同,如果数据出现问题就很难恢复了
格式化:
4.创建用于挂载格式化分区的目录挂载分区,并且在里面写入数据
模拟分区破坏后的数据恢复:
先卸载,再破坏分区,再次挂载时发现分区不存在,那就相当于数据就丢失了:
恢复如下:
重新对/dev/vda进行分区划分
不用对其格式化直接挂载就可以了然后挂载完成后发现数据恢复:
这就是上述强调的为什么只创建一个分区然后把所有内存都加给该分区,就是在进行数据恢复时创建分区时只是创建一个分区,好恢复
5.编辑chunkserver的相应配置文件添加共享data的挂载路径
在文件最后添加:
6.在相应配置完成后在/etc/passwd会自动生成mfs用户,因此需要对共享的挂载修改所属用户和所属组,方便使用及其管理
注意:必须是先挂载然后再修改所属用户和所属组
7.开启服务查看端口
8.在u浏览器上再次刷新查看发现server2已经添加
从节点server3(chunk server)的配置:
1.安装chunkserver软件
2.添加mfsmaster解析
[[email protected] ~]# vim /etc/hosts
172.25.254.1 server1 mfsmaster
3.建立挂载点的目录,修改用户和组,如果不挂载相应分区的话默认是将根分区进行挂载的,这在企业中是不安全的
4.编辑chunkserver的配置文件添加挂载路径
5.开启服务查看端口
6.在浏览器上刷新查看发现server3已经添加
客户端的搭建及其测试:
1.在客户端安装moosefs-clisent软件
2.添加mfsmaster的解析
3.创建真机挂载的数据的目录并且编辑配置文件添加挂载目录
[[email protected] mfs]# mkdir /mnt/mfs
[[email protected] mfs]# vim /etc/mfs/mfsmount.cfg
16 /mnt/mfs
4.客户端挂载文件系统
5.在挂载客户端下创建目录并且查看相应信息
[[email protected] mfs]# pwd
/mnt/mfs
[[email protected] mfs]# mkdir dir1
[[email protected] mfs]# mkdir dir2
[[email protected] mfs]# mfsgetgoal dir1/
dir1/: 2
[[email protected] mfs]# mfsgetgoal dir2/
dir2/: 2 ##默认会分别在俩个chunkserver上备份数据
6.客户端数据备份份数测试:
- 指定挂载目录下的dir1的目录中文件备份为1
- 在/mnt/mfs中的dir1和dir2的目录下存储文件并且查看文件信息
- 关掉只备份1分的dir1目录下的chunserver,即server3
- 再次查看发现dir1下只备份1分的数据丢失,而在dir2上是在俩个chunkserver上都有备份,所以数据没有丢失
注:因为存储passwd的chunkserver已经挂掉,所以此时已经查不到passwd的相关数据,如果此时要打开该文件电脑会卡住,因为数据已经不再这个主机上存储
7.客户端离散存储的测试
默认chunkserver对数据的备份是按块来备份的,每一块备份50KB
- 在dir1目录下:
- 在dir2目录下:
- 关掉server3上的chunkserver发现在dir1目录下只备份一个chunkserver上的会有数据丢失,而在dir2目录下没有数据丢失
mosefs-master的服务开启及关闭:
1.正常的开启与关闭,在/var/lib/mfs目录下的记录mfs信息的文件及master的信息记录的文件 metadata.mfs.back 会变为metadata.mfs
2.kill强制关闭服务后 metadata.mfs.back文件不会发生改变并且使用systemctl命令是无法再次启动服务的
解决如下:
- 查看服务状态会显示使用mfsmaster start -a 成功开启
- 恢复systemctl 启动服务需要进行如下操作
[[email protected] mfs]# vim /usr/lib/systemd/system/moosefs-master.service
文件编辑内容:
8 ExecStart=/usr/sbin/mfsmaster -a
//杀掉mfsmaster的进程在重新加载并开启服务
[[email protected] mfs]# ps ax
进程信息如下:
1406 ? S< 0:01 mfsmaster start -a
[[email protected] mfs]# systemctl daemon-reload
[[email protected] mfs]# systemctl start moosefs-master
数据恢复:
1.删除数据
2.查看删除的数据在tarsh垃圾箱中停留的时间
3.恢复
//创建恢复数据的目录
[[email protected] mnt]# mkdir /mnt/mfsmeta
[[email protected] mnt]# cd mfsmeta/
//将目录挂载,然后在目录下会生成trash目录,该目录下有存放的已经删除的文件
[[email protected] mfsmeta]# mfsmount -m /mnt/mfsmeta/ ##挂载完成后用df命令是查看不到挂载状态的,使用mount命令就可以查看到挂载状态
mfsmaster accepted connection with parameters: read-write,restricted_ip
[[email protected] mfsmeta]# cd /mnt/mfsmeta/
[[email protected] mfsmeta]# ls
sustained trash
[[email protected] trash]# ls
则数据恢复成功