企业级MooseFS分布式文件系统的安装部署以及(读写操作,存储类操作,处理异常和数据恢复)
实验环境:
server1 192.168.43.71 #做master主机 管理服务器
server2 192.168.43.72 #chunk服务器
server3 192.168.43.73 #chunk服务器
server4 192.168.43.74
server5 192.168.43.75
server6 192.168.43.76 #客户端
并且在每台主机都做好解析:
vim /etc/hosts
1.MooseFS分布式文件系统的简介
MooseFS是一个容错的分布式文件系统。它将数据分散到多个物理位置(服务器),用户可以将这些位置(服务器)看作一个资源。
比如用户要上传10G的资源,对于用户本身和服务器来说都是不友好的,所以可以把它分成10个1G的资源,这样就方便快捷多了,但实际还是一个资源。系统将这些资源的链接集成到一个共享文件夹内,这样用户就可以在一个文件夹内看到所有的资源了。
对于标准文件操作,MooseFS充当任何其他类似unix的文件系统:
- 层次结构(目录树)
- 存储POSIX文件属性(权限、最后访问和修改时间)
- 支持特殊文件(块和字符设备、管道和套接字)
- 符号链接(指向目标文件的文件名,不一定在MooseFS中)和硬链接链接(引用MooseFS上相同数据的文件的不同名称)
- 基于IP地址和/或密码,可以限制对文件系统的访问
MooseFS的显著特征是:
- 高可靠性(数据的多个副本可以存储在单独的物理机器上)
- 容量可以通过添加新的计算机或磁盘实现容量的动态扩展
- 已删除的文件将保留一段可配置的时间(文件系统级别的“垃圾桶”)
- 文件的一致快照,即使文件正在被写入/访问
MooseFS的组成:
- 管理服务器(master server)——在MooseFS one机器中,在MooseFS Pro any中
管理整个文件系统、为每个文件存储元数据(infor-)的机器的数量关于文件大小、属性和文件位置的信息,包括所有不定期的信息文件,即目录、套接字、管道和设备)。
- 元数据服务器(chunk server)——存储文件数据并在它们之间进行同步的任意数量的普通服务器(如果某个文件应该存在于多个ecopy中)。
- 元数据备份服务器(metalogger服务器)——任意数量的服务器,所有这些服务器都存储元数据更改日志并定期下载主元数据文件。当master损坏是,可以从日志服务器中取得文件进行恢复。
在MooseFS(非pro)中,如果主主机发生故障,则带有金属记录器的机器可以很容易地设置为主机。
- 客户端——使用mfsmount进程与管理服务器通信(接收和修改文件元数据)的任意数量的计算机,以及与chunkservers通信(交换实际的文件数据)的计算机。可以像挂载 nfs 一样挂载 mfs
工作原理:
2.MooseFS分布式文件系统的安装
在server1上
yum install moosefs-cgi-3.0.113-1.rhsystemd.x86_64.rpm \
moosefs-cgiserv-3.0.113-1.rhsystemd.x86_64.rpm \
moosefs-cli-3.0.113-1.rhsystemd.x86_64.rpm \
moosefs-master-3.0.113-1.rhsystemd.x86_64.rpm -y
安装完成之后系统会自动生成mfs用户
并且写好解析:server1/server2/server3
启动mfs:
systemctl start moosefs-master.service
systemctl start moosefs-cgiserv.service
启动之后,查看端口:
netstat -antlp
master会开启三个端口:
9419端口用于备份日志的监听端口,9420是chunk server的监听端口,9421是和客户端连接的地址
cgi会开启图形界面的端口:9425
测试
我们发现,没有chunk servers,这里我们添加server2和server3进去。
在色server2和server3中:
yum install moosefs-chunkserver-3.0.113-1.rhsystemd.x86_64.rpm -y
同样的,会生成mfs用户,他们的uid 和gid都相同。
在server2中:
新加一块10G的硬盘/dev/sda,作为共享硬盘,并且给它分区,10G都给它
格式化:
创建挂载点:
[root@server2 ~]# mkdir /mnt/chunk1 创建chunk目录
[root@server2 ~]# mount /dev/sdb1 /mnt/chunk1/ 挂载
[root@server2 ~]# chown mfs.mfs /mnt/chunk1/ 修改权限
在配置文件中更改挂载点:
[root@server2 ~]# vim /etc/mfs/mfshdd.cfg
在最后一行添加/mnt/chunk1
最后我们启动chunkserver:
[root@server2 ~]# systemctl start moosefs-chunkserver
[root@server2 ~]# netstat -antlp 可见,9422端口打开
此时,在web端,server2已经加入到集群里面去了
server3中:
刚才我们在server2中添加了新硬盘,在server3 这里我们就用系统文件系统
[root@server3 ~]# df -h
可以看到/分区下的空间还很大,所以这里使用根分区。
[root@server3 ~]# mkdir /mnt/chunk2
[root@server3 ~]# vim /etc/mfs/mfshdd.cfg 里面设置为 /mnt/chunk2
[root@server3 ~]# chown mfs.mfs /mnt/chunk2/
[root@server3 ~]# systemctl start moosefs-chunkserver
[root@server3 ~]# netstat -antlp
此时,在web端,server3也加入到集群里面去了
在上面我们已经对mfs文件系统配置完成,下面我们就来在客户端进行测试
测试:
1. 读写
这里我们用server6作为客户端
server6上安装mfs客户端:
[root@server6 ~]# yum install moosefs-client-3.0.113-1.rhsystemd.x86_64.rpm -y
[root@server6 ~]# vim /etc/hosts #添加server1 mfsmaster的解析
[root@server6 ~]# mkdir /mnt/mfs #建立目录 mfs的挂载目录
[root@server6 ~]# vim /etc/mfs/mfsmount.cfg
[root@server6 ~]# mfsmount #挂载
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@server6 ~]# cd /mnt/mfs/
[root@server6 mfs