MFS分布式文件系统
一、 实验名称:
- MFS分布式文件系统
二、 实验目的:
- 熟悉MFS文件系统的组成
- 熟悉MFS读写数据的处理过程
- 搭建MFS文件系统
- 对MFS进行故障恢复
三、 实验环境:
主机 |
操作系统 |
IP地址 |
主要软件 |
Master |
CentOS 7 x86_64 |
192.168.10.101 |
mfs-1.6.27-5.tar.gz |
MetaLogger |
CentOS 7 x86_64 |
192.168.10.102 |
mfs-1.6.27-5.tar.gz |
Chunk Server1 |
CentOS 7 x86_64 |
192.168.10.103 |
mfs-1.6.27-5.tar.gz |
Chunk Server2 |
CentOS 7 x86_64 |
192.168.10.104 |
mfs-1.6.27-5.tar.gz |
Chunk Server3 |
CentOS 7 x86_64 |
192.168.10.105 |
mfs-1.6.27-5.tar.gz |
Client |
CentOS 7 x86_64 |
192.168.10.106 |
mfs-1.6.27-5.tar.gz fuse-2.9.2.tar.gz |
将所需软件拷贝至各个服务器的/usr/src目录中
四:实验思路:
- 搭建master server
- 搭建MetaLogger Server
- 搭建Chunk Server
- 配置客户端
- MFS监控
实验过程
一:配置master server
1:按照图表设置各个服务器的ip地址
2:关闭每台服务器的firewalld防火墙和selinux
3:设置每台服务器的yum源
4:创建用户
[root@localhost ~]# useradd mfs -s /sbin/nologin
5:安装源码包
[root@localhost ~]# yum -y install zlib-devel
[root@localhost ~]# yum -y install gcc*
[root@localhost ~]# tar xf mfs-1.6.27-5.tar.gz
[root@localhost ~]# cd mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
[root@localhost mfs-1.6.27]# make
[root@localhost mfs-1.6.27]# make install
6:复制文件
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# ll
总用量 16
-rw-r--r--. 1 root root 4060 11月 14 19:31 mfsexports.cfg.dist
-rw-r--r--. 1 root root 1020 11月 14 19:31 mfsmaster.cfg.dist
-rw-r--r--. 1 root root 417 11月 14 19:31 mfsmetalogger.cfg.dist
-rw-r--r--. 1 root root 1123 11月 14 19:31 mfstopology.cfg.dist
[root@localhost mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@localhost mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@localhost mfs]# cp mfstopology.cfg.dist mfstopology.cfg
[root@localhost mfs]# cd /usr/local/mfs/var/mfs/
[root@localhost mfs]# ll
总用量 4
-rw-r--r--. 1 root root 8 11月 14 19:31 metadata.mfs.empty
[root@localhost mfs]# cp metadata.mfs.empty metadata.mfs
7:配置文件
(1):mfsmaster.cfg的配置文件(无需修改)
[root@localhost mfs]# vi /usr/local/mfs/etc/mfs/mfsmaster.cfg
(2)mfsexports.cfg的配置文件(无需修改)
[root@localhost mfs]# vi /usr/local/mfs/etc/mfs/mfsexports.cfg
8:启动master server
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmaster start
[root@localhost mfs]# ps -ef | grep mfs \检查是否启动
mfs 42599 1 1 21:56 ? 00:00:00 /usr/local/mfs/sbin/mfsmaster start
root 42601 12890 0 21:56 pts/0 00:00:00 grep mfs
二:搭建MetaLogger Server(可以将日志服务器安装在master上,只需操作黄色区域的命令即可)
[root@localhost 桌面]# yum -y install zlib-devel
[root@localhost 桌面]# yum -y install gcc*
[root@localhost 桌面]# useradd mfs -s /sbin/nologin
[root@localhost 桌面]# cd /usr/src
[root@localhost src]# tar xf mfs-1.6.27-5.tar.gz
[root@localhost src]# cd mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
[root@localhost mfs-1.6.27]# make
[root@localhost mfs-1.6.27]# make install
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# ll
总用量 16
-rw-r--r--. 1 root root 4060 11月 14 20:03 mfsexports.cfg.dist
-rw-r--r--. 1 root root 1020 11月 14 20:03 mfsmaster.cfg.dist
-rw-r--r--. 1 root root 417 11月 14 20:03 mfsmetalogger.cfg.dist
-rw-r--r--. 1 root root 1123 11月 14 20:03 mfstopology.cfg.dist
[root@localhost mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@localhost mfs]# vi mfsmetalogger.cfg
修改:
MASTER_HOST = 192.168.10.101 \注意去掉前面的注释符
[root@localhost 桌面]# chown -R mfs:mfs /usr/local/mfs/var/mfs/
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmetalogger start
[root@localhost mfs]# ps -ef | grep mfs
mfs 42599 1 0 21:56 ? 00:00:00 /usr/local/mfs/sbin/mfsmaster start
mfs 42612 1 0 21:58 ? 00:00:00 /usr/local/mfs/sbin/mfsmetalogger start
root 42614 12890 0 21:59 pts/0 00:00:00 grep mfs
三:chunk server的设置(每台chunk server主机的安装方法和配置都是一样的)
[root@localhost 桌面]# yum -y install zlib-devel
[root@localhost mfs-1.6.27]# yum -y install gcc*
[root@localhost ~]# useradd mfs -s /sbin/nologin
[root@localhost ~]# cd /usr/src
[root@localhost src]# tar xf mfs-1.6.27-5.tar.gz
[root@localhost src]# cd mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
[root@localhost mfs-1.6.27]# make
[root@localhost mfs-1.6.27]# make install
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# ll
总用量 8
-rw-r--r--. 1 root root 531 11月 14 20:22 mfschunkserver.cfg.dist
-rw-r--r--. 1 root root 57 11月 14 20:22 mfshdd.cfg.dist
[root@localhost mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@localhost mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@localhost mfs]# vi mfschunkserver.cfg
修改:
MASTER_HOST = 192.168.10.101 \注意去掉前面的注释符,此处设置为master的ip地址
[root@localhost mfs]# vi mfshdd.cfg
添加:
/data \在最末尾添加
[root@localhost mfs]# mkdir /data
[root@localhost mfs]# chown -R mfs:mfs /data
[root@localhost mfs]# /usr/local/mfs/sbin/mfschunkserver start
[root@localhost mfs]# ps -ef | grep mfs
mfs 18627 1 0 22:04 ? 00:00:00 /usr/local/mfs/sbin/mfschunkserver start
root 18653 12893 0 22:05 pts/0 00:00:00 grep mfs
四:客户端配置
1:安装FUSE
用户空间文件系统(Filesystem in Userspace),是Linux 中用于挂载某些网络空间用的。
[root@localhost 桌面]# yum -y install zlib-devel
[root@localhost mfs-1.6.27]# yum -y install gcc*
[root@localhost ~]# tar xf fuse-2.9.2.tar.gz
[root@localhost ~]# cd fuse-2.9.2
[root@localhost fuse-2.9.2]# ./configure
[root@localhost fuse-2.9.2]# make
[root@localhost fuse-2.9.2]# make install
[root@localhost fuse-2.9.2]# vi /etc/profile
在末尾添加:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
pkg-config用来检索系统中安装库文件的信息,在此指定其路径
[root@localhost fuse-2.9.2]# source /etc/profile
注释:使依赖此链接库的其它程序能够借助pkg-config自动加载该库,避免编译期错误
2:安装mfs客户端
[root@localhost fuse-2.9.2]# useradd mfs -s /sbin/nologin
[root@localhost fuse-2.9.2]# cd /usr/src
[root@localhost src]# tar xf mfs-1.6.27-5.tar.gz
[root@localhost src]# cd mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
[root@localhost mfs-1.6.27]# make
[root@localhost mfs-1.6.27]# make install
3:挂在MFS文件系统
[root@localhost mfs-1.6.27]# mkdir /mnt/mfs
[root@localhost mfs-1.6.27]# modprobe fuse
[root@localhost mfs-1.6.27]# /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.1.101 # IP为master的 IP
[root@localhost mfs-1.6.27]# df –TH
4:MFS常用操作
[root@localhost 桌面]# vi /etc/profile
末尾添加
export PATH=/usr/local/mfs/bin:$PATH
[root@localhost 桌面]# source /etc/profile
[root@localhost 桌面]# mfsgetgoal -r /mnt/mfs \查看文件被复制的份数
[root@localhost 桌面]# mfssetgoal -r 3 /mnt/mfs \设置文件被复制的份数
5:创建测试文件
[root@localhost 桌面]# cd /mnt/mfs
[root@localhost mfs]# touch test
[root@localhost mfs]# mfsgetgoal test
6:故障测试
将chunkserver全都断开,测试是否能继续写入数据(能够用touch命令创建新的文件,但无法写入数据)
五:MFS监听
1:在master server上启动监听服务
[root@localhost 桌面]# /usr/local/mfs/sbin/mfscgiserv
2:在任何一台机器上打开
六:MFS的维护与灾难恢复
1:MFS群集的启动顺序
启动mfsmaster
启动所有的mfschunkserver
启动mfsmetalogger
在所有的客户端挂在MFS文件系统
2:停止集群的顺序
在所有的客户端卸载MFS文件系统
用mfschunkserver –s命令停止chunkserver进程
用mfsmetalogger –s命令停止metalogger进程
用mfsmaster –s命令停止master进程
3:MFS灾难恢复
1) 如果突然断电造成master进程无法启动可用如下命令修复
/usr/local/mfs/sbin/mfsmetarestore -a
2) master发生故障时,从metalogger中恢复
- 安装一台新的mfsmaster服务器
- 将metalogger上的/usr/loal/mfs/var/mfs/目录中的所有文件复制到新的mfsmaster服务器的同样的目录中。
- 在新的master服务器中合并元数据changlogs
/usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back -o metadata.mfs changelog_ml.*.mfs修改metalogger和chunkserver中配置文件中MASTER_HOST参数的ip地址