MFS分布式文件系统实战(二)——搭建基本的MFS文件系统及配置

一、搭建基本的MFS系统

实验环境

主机名(ip) 角色
server1(172.25.2.1) mfs-master
server2(172.25.2.2) mfs-chunk
server3(172.25.2.3) mfs-chunk
server5(172.25.2.5) mfs-client

1.1 YUM源安装配置MooseFS系统

在每个节点上

1、添加键值

curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS

2、添加YUM源

curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo

在这里插入图片描述server1上

3、安装MooseFS组件。

yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y

在这里插入图片描述
4、编辑解析文件 /etc/hosts,并发送给其他节点。

scp /etc/hosts server2:/etc/
scp /etc/hosts server3:/etc/
scp /etc/hosts server5:/etc/

在这里插入图片描述
5、安装完,可以看到MFS的配置文件 mfsmaster.cfgmfsexports.cfg

在这里插入图片描述

  • mfsexports.cfg:被挂接目录及权限设置

  • mfsmaster.cfg:主配置文件,凡是用#注释掉的变量均使用其默认值。

vim /etc/mfs/mfsmaster.cfg
# WORKING_ USER = mfs      #运行master server 的用户
# WORKING_ GROUP = mfs     #运行master server 的组
# SYSLOG_IDENT = mfsmaster #master server 在syslog 中的标识,说明是由master serve 产生的
# LOCK_MEMORY = 0          #是否执行mlockall()以避免mfsmaster 进程溢出(默认为0
# NICE_LEVEL = -19         #运行的优先级(如果可以默认是-19; 注意: 进程必须是用root 启动)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被挂接目录及其权限控制文件的存放位置
# DATA_PATH = /usr/local/mfs/var/mfs    #数据存放路径,此目录下大致有三类文件,changelog,sessions 和stats;
# BACK_LOGS = 50                        #metadata 的改变log 文件数目(默认是50);
# REPLICATIONS_ DELAY_INIT = 300        #延迟复制的时间(默认是300s);
# REPLICATIONS_ DELAY_DISCONNECT = 3600 #chunkserver 断开的复制延迟(默认是3600);
# MATOML_LISTEN_HOST = *     #metalogger 监听的IP 地址(默认是*,代表任何IP)
# MATOML_LISTEN_PORT = 9419 #metalogger 监听的端口地址(默认是9419)
# MATOCS_LISTEN_ HOST = *   #用于chunkserver 连接的IP 地址(默认是*,代表任何IP);
# MATOCS_LISTEN_PORT = 9420 #用于chunkserver 连接的端口地址(默认是9420);
# MATOCU_LISTEN_HOST = *    #用于客户端挂接连接的IP 地址(默认是*,代表任何IP)
# MATOCU_LISTEN_PORT = 9421 #用于客户端挂接连接的端口地址(默认是9421);
# CHUNKS_LOOP_TIME = 300    #chunks 的回环频率(默认是:300 秒);# CHUNKS_DEL_LIMIT = 100
# CHUNKS_WRITE_REP_LIMIT = 1 #在一个循环里复制到一个chunkserver 的最大chunk 数目(默认是1
# CHUNKS_READ_REP_LIMIT = 5  #在一个循环里从一个chunkserver 复制的最大chunk 数目(默认是5
# REJECT_OLD_ CLIENTS = 0    #弹出低于1.6.0 的客户端挂接(0 1,默认是0

6、此时,启动moosefs-mastermoosefs-cgiserv,查看端口发现开启了9419,9420,9421,9425端口。

systemctl start moosefs-master  #启动MASTER
netstat -antlupe
systemctl start moosefs-cgiserv  #启动WEBUI监控服务
netstat -antlupe
  • 9419:metalogger监听的端口地址
  • 9420:用于chunkserver连接的端口地址
  • 9421:用于客户端挂接连接的端口地址
  • 9425:监控各个分布节点的端口

在这里插入图片描述
7、在web界面访问:172.25.2.1:9425,可以看到分布式文件系统的监控页面
在这里插入图片描述
在server2和server3上,Chunk Server

8、在server2和server3上,真正存储数据的节点安装moosefs-chunkserver

yum install moosefs-chunkserver -y

在这里插入图片描述

9、安装之后在两个节点都会生成一个mfs用户

在这里插入图片描述

10、编辑配置文件mfshdd.cfg,写入mfs的分区/mnt/chunk1

  • mfshdd.cfg:MFS使用空间配置文件

在这里插入图片描述在这里/mnt/chunk1 是一个给mfs 的分区,但在本机上是一个独立的目录,最好是一个单独的硬盘或者一个raid 卷,最低要求是一个分区。
在这里插入图片描述
11、更改目录/mnt/chunk 的权限,因为mfschunkserver进程是用mfs运行的

chown -R mfs:mfs /mnt/chunk1

在这里插入图片描述
由于 mfschunkserver.cfg chunk配置文件,默认Master为mfsmaster,且已做解析。

12、开启chunkserver

systemctl start moosefs-chunkserver
netstat -antlupe  ##开通监控的端口9422


在这里插入图片描述
在这里插入图片描述
13、此时,在server1上就可以看到,mfsmaster与server2建立了连接

在这里插入图片描述
server3同上操作
在这里插入图片描述可以看出server2和server3同时通过server1的9420端口与server1进行交互
在这里插入图片描述
14、此时,在web监控页面就可以看到在这里插入图片描述

MFS Client

15、在server5上,安装MFS Client客户端

yum install moosefs-client -y

在这里插入图片描述16、编辑挂载配置文件mfsmount.cfg,写入挂载点目录/mnt/mfs并创建。
在这里插入图片描述
17、挂载 mfsmount

在这里插入图片描述 到此为止,我们的MFS集群已经搭建完成。

二、MFS的高级特性

2.1 冗余goal设置

目标(goal),是指文件被拷贝的份数,设定了拷贝的份数后是可以通过mfsgetgoal 命令来证实的,也可以通过mfsrsetgoal 来改变设定。

mfssetgoal -r 份数 目录/文件
  • 实际的拷贝份数可以通过mfscheckfilemfsfile info 命令来证实
[root@server5 mfs]# mkdir rr1
[root@server5 mfs]# mkdir rr2
[root@server5 mfs]# ls
rr1  rr2
[root@server5 mfs]# mfssetgoal -r 1 rr1
rr1:
 inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0
[root@server5 mfs]# cd rr1
[root@server5 rr1]# cp /etc/passwd .
[root@server5 rr1]# ls
passwd
[root@server5 rr1]# mfsfileinfo passwd
passwd:
	chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
		copy 1: 172.25.2.3:9422 (status:VALID)
[root@server5 mfs]# mfssetgoal -r 2 rr2
rr2:
 inodes with goal changed:                       0
 inodes with goal not changed:                   1
 inodes with permission denied:                  0
[root@server5 mfs]# cd rr2
[root@server5 rr2]# cp /etc/fstab .
[root@server5 rr2]# ls
fstab
[root@server5 rr2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.2.2:9422 (status:VALID)
		copy 2: 172.25.2.3:9422 (status:VALID)

  • 文件可以有多份copy,当goal为1时,文件会被随机存到一台chunkserver上,当goal的数大于1时,copy会由master调度保存到不同的chunkserver上,goal的大小不要超过chunkserver的数量,否则多出的copy,不会有chunkserver去存。

此时,如果server3宕机,那么copy到server3上的副本就打不开了。

在这里插入图片描述
在这里插入图片描述

2.2 垃圾回收站

被删除的文件能够存放在一个“ 垃圾箱”的时间就是一个隔离时间,用mfsgettrashtime 命令查看,用mfssettrashtime 命令来设置

  • 删除文件可以通过一个单独安装MFSMETA 文件系统。特别是它包含目录/ trash (包含任然可以被还原的被删除文件的信息)和/ trash/undel (用于获取文件)。只有管理员有权限访问MFSMETA(用户的uid 0,通常是root)。
[root@server5 ~]# mkdir /mnt/mfsmeta
[root@server5 ~]# mfsmount -m /mnt/mfsmeta
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@server5 ~]# mount
mfsmaster:9421 on /mnt/mfsmeta type fuse.mfsmeta (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
[root@server5 ~]# cd /mnt/mfsmeta
[root@server5 mfsmeta]# ls
sustained  trash
[root@server5 mfsmeta]# cd trash/
[root@server5 trash]# find -name *passwd*
./004/00000004|rr1|passwd
[root@server5 trash]# mv ./004/00000004\|rr1\|passwd undel/
[root@server5 trash]# cd /mnt/mfs
[root@server5 mfs]# ls
rr1  rr2
[root@server5 mfs]# cd rr1
[root@server5 rr1]# ls
passwd
[root@server5 rr1]# 

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 被删文件的文件名在“垃圾箱”目录里还可见,文件名由一个八位十六进制的数i-node 和被删文件的文件名组成,在文件名和i-node 之间不是用“/”,而是用了“|”替代。如果一个文件名的长度超过操作系统的限制(通常是255个字符),那么部分将被删除。通过从挂载点起全路径的文件名被删除的文件任然可以被读写。
    移动这个文件到trash/undel 子目录下,将会使原始的文件恢复到正确的MooseFS文件系统上路径下(如果路径没有改变)。 如果在同一路径下有个新的同名文件,那么恢复不会成功。从“垃圾箱”中删除文件结果是释放之前被它站用的空间(删除有延迟,数据被异步删除)。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

三、MFS的常见问题

3.1 启动MFS集群

最安全的启动MooseFS 集群(避免任何读或写的错误数据或类似的问题)的方式是按照以下命令步骤:

  1. 启动mfsmaster 进程
  2. 启动所有的mfschunkserver 进程
  3. 启动mfsmetalogger 进程(如果配置了mfsmetalogger)
  4. 当所有的chunkservers 连接到MooseFS master 后,任何数目的客户端可以利用mfsmount 去挂接被export 的文件系统。(可以通过检查master 的日志或是CGI 监视器来查看是否所有的chunkserver被连接)。

3.2 停止MFS集群

  1. 在所有的客户端卸载MooseFS 文件系统(用umount 命令或者是其它等效的命令)
  2. 用mfschunkserver stop 命令停止chunkserver 进程
  3. 用mfsmetalogger stop 命令停止metalogger 进程
  4. 用mfsmaster stop 命令停止master 进程

3.3 MFS Master的恢复

  • 在正常关闭的时候,/var/lib/mfs目录中会产生metadata.mfs这个文件,这个文件是开启mfsmaster服务时必备的文件。如果没有该文件,那么mfsmaster服务也就起不来。
  • 在正常开启的时候,/var/lib/mfs目录中就会产生metadata.mfs.back这个文件。
    修改mfsmaster的启动脚本
systemctl daemon-reload

在这里插入图片描述

发布了127 篇原创文章 · 获赞 26 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章