mfs文件系统的配置

本文详细介绍了MFS(MooseFS)分布式文件系统的配置过程,包括管理服务器、元数据日志服务器、数据存储服务器(chunk servers)和客户端挂载的配置步骤,以及文件恢复的方法。MFS通过在网络中分散存储数据,提供统一的资源访问,具备容错性和高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MFS
什么是MFS文件系统:
MooseFS是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
MooseFS文件系统结构包括一下四种角色:
管理服务器master
管理服务器:负责各个数据存储服务的管理文件读写调度,文件空间回收以及恢复,多节点拷贝
元数据日志服务器:
负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出现问题的时候解体器 进行工作
数据存储服务器data server(chunk servers)
真正存储用户数据的服务器存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间赋值(复制份数可以手工指定,建议设置副本数为数据服务器可以为多个,并且数据越多,可使用的“磁盘空间越大,”可靠性也越高
客户端挂载使用client computers
使用MFS文件系统来存储和访问的主机名称为MFS的客户端,成功挂载MFS系统以后,就可以像以前NFS一样共享这个虚拟性的存储了。

MFS文件系统的配置:

一、配置主节点

1、server1安装master和web图形界面

[root@server1 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

2、打开服务并查看端口

[root@server1 3.0.103]#systemctl start moosefs-moster
Failed to start moosefs-moster.service: Unit not found.
[root@server1 3.0.103]#systemctl start moosefs-master
[root@server1 3.0.103netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      900/mfsmaster       
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      900/mfsmaster       
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      900/mfsmaster       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      531/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      713/master          
tcp        0      0 172.25.11.1:22          172.25.11.250:36402     ESTABLISHED 826/sshd: root@pts/ 
tcp6       0      0 :::22                   :::*                    LISTEN      531/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      713/master          
  • 9419 metalogger 监听的端口地址(默认是9419),和源数据日志结合。定期和master端同步数据
  • 9420 用于chunkserver 连接的端口地址(默认是9420),通信节点
  • 9421 用于客户端对外连接的端口地址(默认是9421)

3、做主节点解析

[root@server1 3.0.103]# vim /etc/hosts
172.25.11.1    server1 mfsmaster

4、打开图形处理工具

 systemctl start moosefs-cgiserv

二、chunk节点配置

1、安装MFS的客户端软件

[root@server1 3.0.103]# scp moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm root@172.25.11.2:/root
  
[root@server1 3.0.103]# scp moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm root@172.25.11.3:/root

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

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

2、添加解析

[root@server3 3.0.103]# vim /etc/hosts
172.25.11.1    server1 mfsmaster
[root@server2 3.0.103]# vim /etc/hosts
172.25.11.1    server1 mfsmaster

3、编辑客户端的配置文件

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

4 、建立该目录,修改该挂载目录的所有人和所有组,这样才可以在目录中进行读写操作

root@server2 ~]# mkdir /mnt/chunk1 
[root@server2 ~]# 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 mfs]# systemctl start moosefs-chunkserver 

三、搭建客户端

1、安装客户端软件

yum install -y moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm 

2、编辑解析文件

 

[root@foundation79 ~]# vim /etc/hosts
172.25.79.1   server1 mfsmaster

3、创建在真机挂载数据的目录并编辑配置文件

 

[root@foundation11 3.0.103]# mfsmount 
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@foundation11 3.0.103]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      228287584 72557488 155730096  32% /
devtmpfs         4012764        0   4012764   0% /dev
tmpfs            4027744      156   4027588   1% /dev/shm
tmpfs            4027744     9276   4018468   1% /run
tmpfs            4027744        0   4027744   0% /sys/fs/cgroup
tmpfs             805552       12    805540   1% /run/user/1000
/dev/loop0       3704296  3704296         0 100% /var/www/html/rhel7.3
mfsmaster:9421  41920512   590464  41330048   2% /mnt/mfs

4、在客户端挂在目录(/mnt/mfs)下创建两个目录用来读写数据,因为有两个chunk,所以建立目录后默认有来两个存储端

[root@foundation11 mfs]# mkdir dir1 dir2
[root@foundation11 mfs]# ls
dir1  dir2
[root@foundation11 mfs]# mfsgetgoal dir1/
dir1/: 2
[root@foundation11 mfs]# mfsgetgoal dir2/
dir2/: 2

5、将目录dir1的存储后端改为一个(存一份,具体存在那个chunk由master决定)

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

6、在目录dir1中写入数据

[root@foundation11 mfs]# cd dir1/
[root@foundation11 dir1]# cp /etc/passwd .
[root@foundation11 dir1]# ls
passwd
[root@foundation11 dir1]# mfsfileinfo passwd 
passwd:
	chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)  ##数据在chunk2(172.25.11.3)上存储了一份

7、给目录dir2中写入数据

[root@foundation11 mfs]# cd dir2/
[root@foundation11 dir2]# cp /etc/passwd .
[root@foundation11 dir2]# mfsfileinfo passwd 
passwd:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID) ##数据在chunk1和chunk2都备份了一份
		copy 2: 172.25.11.3:9422 (status:VALID)

8、由于文件过小,系统默认一次备份大小为60M,所以现在写入大于60M的数据在dir1中

[root@foundation11 dir1]# dd if=/dev/zero of=bigfile bs=1M count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.393101 s, 533 MB/s
[root@foundation11 dir1]# ls
bigfile  passwd
[root@foundation11 dir1]# mfsfileinfo bigfile 
bigfile:
	chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
	chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)
	chunk 2: 0000000000000005_00000001 / (id:5 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
	chunk 3: 0000000000000006_00000001 / (id:6 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)  ##由于截取的文件大小为200M,所以存储是分成了4段存储,由于dir1只有一个chunk备份数据,所以每一段只备份了一份

相同的对于dir2而言

[root@foundation11 dir2]# dd if=/dev/zero of=bigfile1 bs=1M count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.760426 s, 276 MB/s
[root@foundation11 dir2]# ls
bigfile1  passwd
[root@foundation11 dir2]# mfsfileinfo bigfile1 
bigfile1:
	chunk 0: 0000000000000007_00000001 / (id:7 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)
	chunk 1: 0000000000000008_00000001 / (id:8 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)
	chunk 2: 0000000000000009_00000001 / (id:9 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)
	chunk 3: 000000000000000A_00000001 / (id:10 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)  ##每一段都存了两份

9、关闭一个chunk分别查看两个目录

[root@server2 ~]# systemctl stop moosefs-chunkserver




[root@foundation11 dir1]# mfsfileinfo bigfile 
bigfile:
	chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
		no valid copies !!!
	chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)
	chunk 2: 0000000000000005_00000001 / (id:5 ver:1)
		no valid copies !!!
	chunk 3: 0000000000000006_00000001 / (id:6 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID) ##文件不可读取,若cat查看会卡死



[root@foundation11 dir1]# cd ../dir2/
[root@foundation11 dir2]# ls
bigfile1  passwd
[root@foundation11 dir2]# mfsfileinfo bigfile1 
bigfile1:
	chunk 0: 0000000000000007_00000001 / (id:7 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)
	chunk 1: 0000000000000008_00000001 / (id:8 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)
	chunk 2: 0000000000000009_00000001 / (id:9 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)
	chunk 3: 000000000000000A_00000001 / (id:10 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID) ##文件可读取

若重新打开chunk文件立即恢复

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


[root@foundation11 dir2]# mfsfileinfo bigfile1 
bigfile1:
	chunk 0: 0000000000000007_00000001 / (id:7 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)
	chunk 1: 0000000000000008_00000001 / (id:8 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)
	chunk 2: 0000000000000009_00000001 / (id:9 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)
	chunk 3: 000000000000000A_00000001 / (id:10 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
		copy 2: 172.25.11.3:9422 (status:VALID)
[root@foundation11 dir2]# cd ../dir1/
[root@foundation11 dir1]# mfsfileinfo bigfile 
bigfile:
	chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
	chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)
	chunk 2: 0000000000000005_00000001 / (id:5 ver:1)
		copy 1: 172.25.11.2:9422 (status:VALID)
	chunk 3: 0000000000000006_00000001 / (id:6 ver:1)
		copy 1: 172.25.11.3:9422 (status:VALID)

四、文件恢复

对于master而言,在服务未开启时文件名为metadata.mfs。当开启服务会生成metadata.mfs.back文件

[root@server1 3.0.103]# cd /var/lib/mfs/
[root@server1 mfs]# ll
total 3612
-rw-r----- 1 mfs mfs    2876 May 17 23:55 changelog.0.mfs
-rw-r----- 1 mfs mfs     478 May 17 22:58 changelog.1.mfs
-rw-r----- 1 mfs mfs     120 May 17 23:00 metadata.crc
-rw-r----- 1 mfs mfs    3120 May 17 23:00 metadata.mfs.back
-rw-r--r-- 1 mfs mfs       8 May 17 22:38 metadata.mfs.back.1
-rw-r--r-- 1 mfs mfs       8 Nov 23 07:46 metadata.mfs.empty
-rw-r----- 1 mfs mfs 3672832 May 17 23:00 stats.mfs

若不小心删除了客户端的数据

[root@foundation11 dir1]# rm -fr passwd 
root@foundation11 dir1]# rm -fr passwd 
[root@foundation11 dir1]# ls
bigfile

恢复数据

[root@foundation11 dir1]# mkdir /mnt/mfsmeta
[root@foundation11 dir1]# cd /mnt/mfsmeta/
[root@foundation11 mfsmeta]# ls
[root@foundation11 mfsmeta]# cd
[root@foundation11 ~]# mfsmount -m /mnt/mfsmeta/ -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricte
[root@foundation11 mfsmeta]# cd trash/
[root@foundation11 trash]# ls
[root@foundation11 trash]# ls | wc -l
4097
[root@foundation11 trash]# find -name *passwd*
./004/00000004|dir1|passwd
[root@foundation11 trash]# cd 004/
[root@foundation11 004]# ls
00000004|dir1|passwd  undel
[root@foundation11 004]# mv 00000004\|dir1\|passwd undel/
[root@foundation11 004]# cd /mnt/mfs
mfs/     mfsmeta/ 
[root@foundation11 004]# cd /mnt/mfs/
[root@foundation11 mfs]# ls
dir1  dir2
[root@foundation11 mfs]# cd dir1/
[root@foundation11 dir1]# ls
bigfile  passwd
[root@foundation11 dir1]# ls ../dir2/
bigfile1  passwd

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值