一、什么是MFS(分布式文件系统)?
MooseFS是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源
常规特征
对标准的文件操作来说,mfs用起来跟其它的类unix系统类似:
1、分层次的结构(目录树)
2、存储POSIX文件属性(权限、最后访问和修改时间)
3、支持特殊文件(块和字符设备、管道以及套接字)
4、符号连接和硬连接
5、对文件系统的访问可以通过IP地址和(或者)密码进行限制
独有特征
1、高可靠(数据的多个拷贝被存储在不同的计算机上)
2、通过附加新的计算机或者硬盘可以实现容量的动态扩展
3、删除的文件可以根据一个可配置的时间周期进行保留(一个文件系统级别的回收站)
4、不受访问和写入影响的文件连贯快照
分布式原理
分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,
用户要访问这些文件夹的时候,只要打开一个文件夹,就可以的看到所有链接到此文件夹内的共享文件夹。
MFS原理
MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
二、MFS的组成
元数据服务器(Master) | 在整个体系中负责管理文件系统,维护元数据,目前不支持高可用 |
---|---|
元数据日志服务器(MetaLogger) | 备份Master服务器的变化日志文件,当master服务器损坏,可以从日志服务器中取得文件恢复 |
数据存储服务器(Chunk Server) | 真正存储数据的服务器,服务器越多,容量就越大,可靠性越高,性能越好 |
客户端(Client) | 可以像挂载NFS一样 挂载MFS文件系统 |
管理服务器(master server) | 一台管理整个文件系统的独立主机,存储着每个文件的元数据(文件的大小、属性、位置信息,包括所有非常规文件的所有信息,例如目录、套接字、管道以及设备文件) |
---|---|
数据服务器群(chunk servers) | 任意数目的商用服务器,用来存储文件数据并在彼此之间同步(如果某个文件有超过一个备份的话) |
元数据备份服务器(metalogger server) | 任意数量的服务器,用来存储元数据变化日志并周期性下载主要元数据文件,以便用于管理服务器意外停止时好接替其位置 |
访问mfs的客户端 | 任意数量的主机,可以通过mfsmount进程与管理服务器(接收和更改元数据)和数据服务器(改变实际文件数据)进行交流 |
三、MFS读数据的处理过程
客户端向元数据服务器发出读请求——>元数据服务器把所需数据存放的位置【Chunk Server(块服务器)的IP地址和Chunk(块)编号】告知客户端——>客户端向已知的Chunk Server请求发送数据——>Chunk Server向客户端发送数据
四、写入的过程
客户端向元数据服务器发送写入请求——>元数据服务器与Chunk Server进行交互,但元数据服务器只在某些服务器创建新的分块Chunks——>创建成功后由hunk Servers(chunk服务器)告知元数据服务器操作成功——>元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据——>客户端向指定的Chunk Server写入数据——>该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功——>客户端告知元数据服务器本次写入完毕
五、搭建实验环境
全新虚拟机
主机信息 主机功能
server1(172.25.254.1) mfs master节点
server2(172.25.254.2) mfs chunk节点
server3(172.25.254.3) mfs chunk节点
真机(172.25.254.66) mfs client客户端
六、搭建基本的MFS系统
[企业七软件包获取地址]
http://ppa.moosefs.com/moosefs-3/yum/el7/
[企业八软件包获取地址]
http://ppa.moosefs.com/moosefs-3/yum/el8/
开始搭建
在server1上安装mfs master以及mfs cgi
mfsmaster开启了三个端口:9419,9420,9421
metalogger监听的端口地址【定期同步master节点的日志】 (默认是9419)
用于chunkserver连接的端口地址 (默认是9420)
用于客户端挂接连接的端口地址 (默认是4921)
在浏览器访问172.25.254.1:9425,可以看到分布式文件系统的监控页面
想监控哪一项信息,就选择哪个加号
在server2、server3上安装mfs chunk,真正存储数据的节点安装chunkserver
做解析
三台主机自动建立的mfs用户ID号必须一致
给server2添加虚拟磁盘进行分区,然后挂载在指定目录下做实验
添加硬盘作为共享硬盘
磁盘创建完成后
要创建挂载点挂载
浏览器访问刷新
server3上也可以使用server3的/目录下的空间进行挂载
[root@server3 ~]# mkdir /mnt/chunk2 创建目录
编辑配置文件尾行写入:/mnt/chunk2与server2一样
[root@server3 ~]# vim /etc/mfs/ mfshdd.cfg
[root@server3 ~]# cd /mnt/
[root@server3 mnt]# ll -d chunk2/
drwxr-xr-x 2 root root 6 May 26 12:56 chunk2/
[root@server3 mnt]# chown mfs: chunk2 更改目录权限
[root@server3 mnt]# ll -d chunk2/
drwxr-xr-x 2 mfs mfs 6 May 26 12:56 chunk2/
[root@server3 mnt]# systemctl start moosefs-chunkserver 启动服务
[root@server3 mnt]# netstat -tnpl 查看看端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 18492/mfschunkserve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7439/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7589/master
tcp6 0 0 :::22 :::* LISTEN 7439/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7589/master
浏览器访问查看
以上就是配置:MFS系统的master节点和chunkserver节点
接下来配置客户端
编写客户端的配置文件,将分布文件系统的数据目录挂在本地/mnt/mfs/目录上
创建挂载点(目录)并进行挂载
配置
[root@client Desktop]# cd /mnt/mfs/
[root@client mfs]# ls
[root@client mfs]# mkdir dir1 dir2 创建两个子目录
[root@client mfs]# ls
dir1 dir2
[root@client mfs]# ll
total 1
drwxr-xr-x. 2 root root 1 May 26 13:44 dir1
drwxr-xr-x. 2 root root 1 May 26 13:44 dir2
[root@client mfs]# mfsgetgoal dir1/ 查看子目录备份数量
dir1/: 2 表示此目录的文件将在server2/3这两个chunkserver上个备份一份数据,一共两份
[root@client mfs]# mfsgetgoal dir2/
dir2/: 2 同上
更改备份数量,使dir1这个目录只有一份数据
[root@client mfs]# mfssetgoal -r 1 dir1 减一
dir1:
inodes with goal changed: 1
inodes with goal not changed: 0
inodes with permission denied: 0
[root@client mfs]# mfsgetgoal dir1/ 再次查看只有一个备份
dir1/: 1
测试关闭server3的chunkserver
[root@server3 mnt]# systemctl stop moosefs-chunkserver
dir2的文件还是可以正常查看,dir1的文件已经不能查看,开启server3的chunkserver则正常查看