NFS以及openfiler,这两个都是属于存储服务器。但是他们有着共同的缺点,就是性能不好,因为都是通过共享方式共享一个存储空间,使得服务器不堪重负,会出现超时的问题,而且存在着单点故障问题,尽管可以用rsync同步数据到另外一台服务器上做备份,但性能方便没有任何提升。而分布式文件系统把数据分散存储在不同的服务器上,读取数据的时候相当于同时读取,不像nfs是一对多的关系,而是多对多的关系,这样可以使得性能得到大幅提升。
这次使用MFS搭建分布式文件系统,MFS具有容错功能,高可用,可扩展的功能。MFS把数据分散在多台服务器上,但用户看到的只是一个源。
一、实验拓扑
二、实验步骤
1、搭建master server
1)停止防火墙并且安装支持包
2)创建用户
3)安装源码包
[root@centos3 ~]#tar zxf mfs-1.6.27-5.tar.gz
[root@centos3 ~]# cdmfs-1.6.27
[root@centos3mfs-1.6.27]# ./configure \
> --prefix=/usr/local/mfs\ //指定安装目录
> --with-default-user=mfs\ //指定程序运行用户
> --with-default-group=mfs\ //指定程序运行组
> --disable-mfschunkserver \ //禁用Chunk功能
> --disable-mfsmount \ //禁用mfsmount功能
[root@centos3mfs-1.6.27]# make && make install //编译安装
4)复制文件(设置配置文件)
[root@centos3 mfs-1.6.
[root@centos3 mfs]# ls
[root@centos3 mfs]# cd/usr/local/mfs/var/mfs/
[root@centos3 mfs]# ls
这个文件存放master的变化信息
5)启动master server
第一遍启动的时候,可能会出现以下错误信息
[root@centos1mfs]# /usr/local/mfs/sbin/mfsmaster start
loadingsessions ... file not found
如果出现以上信息,则关闭服务并重新启动就可以了
[root@centos1mfs]# /usr/local/mfs/sbin/mfsmaster -s
-s表示停止服务
[root@centos1mfs]#/usr/local/mfs/sbin/mfsmaster start
再启动就不会出现任何信息
6)查看是否启动
7)建立防火墙规则(如果开启了防火墙需要建立规则,如果关闭不用)
[root@centos1 mfs]# iptables -I INPUT -p tcp--dport 9419 -j ACCEPT
[root@centos1 mfs]# iptables -I INPUT -p tcp--dport 9420 -j ACCEPT
[root@centos1 mfs]# iptables -I INPUT -p tcp--dport 9421 -j ACCEPT
[root@centos1 mfs]# service iptables save
2、搭建metalogger server
1)安装mfs(同上)
2)复制文件
3)修改配置文件,添加master服务器的ip地址(注意去掉注释和空格)
4)开启服务
5)查看端口
[root@centos5 mfs]# netstat -anpt | grep 9419
tcp 0 0 192.168.1.2:50929 192.168.1.1:9419 ESTABLISHED 53533/mfsmetalogger
[root@centos5 mfs]# iptables -I INPUT -p tcp--dport 9419 -j ACCEPT
[root@centos5 mfs]# service iptables save
3、搭建chunk server(二台chunk的搭建步骤相同)
1)安装mfs(同上)
2)复制文件
3)修改配置文件(一共2个)
vim mfschunkserver.cfg
vim mfshdd.cfg(添加/data)
4)建立文件夹并开启服务
5)开启例外
[root@centos5 mfs]#ps -ef | grep mfs
mfs 56269 1 0 20:54 ? 00:00:00/usr/local/mfs/sbin/mfschunkserver start
root 56297 48740 0 20:54 pts/0 00:00:00 grep mfs
[root@centos5 mfs]#iptables -I INPUT -p tcp --dport 9422 -j ACCEPT
[root@centos5 mfs]#service iptables save
注意:第二台chunk的配置和上面的配置完全一样,这里就不在说明了
4、客户端配置
1)安装fuseMFS(客户端依赖于FUSE)
2)设置环境变量
添加下面这行
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
3)安装MFS客户端
配置
tar zxf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27
4)挂载文件系统
5)查看挂载情况
6)设置文件被复制的份数并测试
MFS客户端安装完毕后,会生成/usr/local/mfs/bin/目录,在这个目录下有很多命令是用户所需的。
在vim /etc/profile文件中增加一行(为了方便执行命令)
mfsgetgoal命令用来查看文件被复制的分数,利用-r命令可以对整个目录进行递归,goal是指文件比复制的分数。
mfssetgoal命令用来设置文件被复制的分数,生产环境下Chunkserver节点数量应大于2,文件副本数小于Chunk server服务器的数量。由于我有二台Chunk server我将副本数量设置为1
设置查询文件被复制的份数:
在/mnt/mfs中建立文件
分别打开两台chunk查看/data下,都产生了加密的数据,说明成功了
5、mfs监控
mfscgiserv是用python编写的一个web服务器,其监听端口是9425,可以再masster server上通过/usr/local/mfs/sbin/mfscgiserv来启动,用户利用浏览器就可以完全监控所有客户挂接、Chunk server、Master server等。
在一台客户端上通过浏览器访问http://192.168.1.100:9425
在master主机上配置下面的过程
[root@centos3 mfs]#/usr/local/mfs/sbin/mfscgiserv
lockfilecreated and locked
startingsimple cgi server (host: any , port: 9425 , rootpath:/usr/local/mfs/share/mfscgi)
[root@centos3 mfs]# iptables -I INPUT -p tcp --dport9425 -j ACCEPT
6、灾难恢复
MFS维护及灾难恢复
1)MFS集群的启动与停止
MFS集群的启动顺序如下
(1)启动mfsmaster进程
(2)启动所有的mfsChunkserver进程
(3)启动mfsmetalogger进程
(4)在所有客户端上挂载NFS文件系统
MFS集群的停止顺序如下
(1)在所有客户端卸载MFS挂载
(2)停止Chunkserver进程
(3)停止mfsmetalogger进程
(4)停止mfsmaster进程
2)MFS灾难恢复
整个MFS体系中,直接断电只有masterserver进程有可能无法启动,可以在master上使用命令/usr/local/mfs/sbin/mfsmetarestore -a修复
我们将master server直接断电(必须运行的时间够20分钟才可以断电,否则数据很有可能直接丢失)(模拟:直接关闭掉master server主机)
[root@centos1~]# /usr/local/mfs/sbin/mfsmaster start
init:file system manager failed !!!
erroroccured during initialization - exiting
[root@centos1~]# /usr/local/mfs/sbin/mfsmetarestore -a
loadingobjects (files,directories,etc.) ... ok
loadingnames ... ok
loadingdeletion timestamps ... ok
loadingchunks data ... ok
checkingfilesystem consistency ... ok
connectingfiles and chunks ... ok
progress:current change: 0 (first:0 - last:0 - 100% - ETA:finished)
storemetadata into file: /usr/local/mfs/var/mfs/metadata.mfs
[root@centos1~]# /usr/local/mfs/sbin/mfsmaster start
3)从MetaLogger中恢复
MFS元数据通常有两部分的数据,分别如下
(2)元数据改变日志changelog.*.mfs,存储了过去N小时的文件变更。
在Master发生故障时,可以从MetaLogger中恢复,步骤如下
(1)安装一台mfsmaster,利用同样的配置来配置这台mfsmaster,mfsmaster进程先不要启动
(2)将metalogger上/usr/local/mfs/var/mfs/目录下所有文件复制到mfsmaster相应的目录中。
[root@centos3mfs]# /usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back -o metadata.mfs changelog_ml.*.mfs
loadingobjects (files,directories,etc.) ... ok
loadingnames ... ok
loadingdeletion timestamps ... ok
loadingchunks data ... ok
checkingfilesystem consistency ... ok
connectingfiles and chunks ... ok
changelog_ml.0.mfs:1:version mismatch
[root@centos3mfs]# /usr/local/mfs/sbin/mfsmaster start
[root@centos3mfs]# ls
Ceshi
注意:如果是全新安装的master,恢复数据后,需要更改metalogger和chunkserver,配置MASTER_HOST的ip地址,客户端也需要重新挂载mfs目录。
领取专属 10元无门槛券
私享最新 技术干货