MooseFS是一个分布式文件系统,其本身具有高可用性,高拓展性,开放源代码,高容错,等在数据的读写性能方面,通过dd测试,MooseFS也就是写入的速度稍微好于NFS,读上没有差别.
- MooseFS的文件系统结构体系可分为以下四种角色,分别对应不同的功能:
- 1.管理服务器managing server (master)
- 2.元数据日志服务器Metalogger server(Metalogger)
- 3.数据存储服务器data servers (chunkservers)
- 4.客户机挂载使用client computers
下面我们分别编译安装MFS的每个组件,实现一个企业环境的分布式文件系统.
实验环境与IP分配
[主机类型] [主机IP] [主机作用] | |
Master-Server 192.168.22.195 主控服务器 | |
MetaLogger-Server 192.168.22.191 备份服务器 | |
Cunk-Server 192.168.22.192 存储节点1 | |
Cunk-Server 192.168.22.193 存储节点2 | |
Client 192.168.22.194 挂载客户端 |
Master-Server配置
管理服务器managing server (master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复,多节点拷贝单个机器管理整个文件系统,用来存储记录每一个文件的Metadata(记录文件的大小、文件的属性、文件的位置,也包括非规则文件的系统,如目录、sockets、管道和设备),Master-Server相当于MFS的大脑,用于管理协调服务器之间正常工作,此处也就是主控服务器.
1.服务器上的/etc/hosts中添加下面指向,指明主服务器IP.
[root@localhost ~]# vim /etc/hosts | |
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 | |
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 | |
192.168.22.195 mfsmaster #在原来的基础上添加这一条即可 |
2.源码编译安装Master-Server.
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
--localstatedir=/var/lib --with-default-user=mfs \ | |
--with-default-group=mfs --disable-mfschunkserver \ | |
--disable-mfsmount | |
--prefix=/usr | |
--sysconfdir=/etc | |
--localstatedir=/var/lib | |
--with-default-user=mfs | |
--with-default-group=mfs | |
--disable-mfschunkserver | |
--disable-mfsmount | |
[ | ]
3.成功安装Master以后,系统会在/etc/mfs
目录自动生成样例配置文件,我们需要将此配置文件修改一下,去掉后缀.sample
配置文件才会生效.
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]
4.启动Master-Server服务和CGI监控服务.
[ | ]|
[ | ]
5.设置Mfsmaster和mfscgiserv进程开机自启动,此处将开机命令追加写入/etc/profile系统每次开机都会执行这条指令,从而实现开机自启动.
[root@localhost ~] | |
[root@localhost ~] |
6.现在我们来测试一下,使用浏览器访问以下地址,成功的话会看到监控页面.
[root@localhost ~]# curl http://192.168.22.195:9425 #查看是否启动成功
MetaLogger-Server配置
元数据日志服务器Metalogger server(Metalogger):负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs
,以便于在master server出问题的时候接替其进行工作,Metalogger server主要作用是主控服务器的备份,他的作用是起到主控服务器崩溃了它自动顶上,所以Metalogger server的安装和master server的安装大体是一样的,当然备份服务器不安装照样能使用,但是就失去了备份的功能.
1.服务器上的/etc/hosts中添加下面指向,指向主服务器IP(可选/如果不做第1步则要做第3步).
[root@localhost ~]# vim /etc/hosts | |
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 | |
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 | |
192.168.22.195 mfsmaster #在原来的基础上添加这一条即可 |
2.源码编译安装Masterlog-Server.
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
--with-default-user=mfs --with-default-group=mfs \ | |
--disable-mfschunkserver --disable-mfsmount | |
--prefix=/usr | |
--sysconfdir=/etc | |
--localstatedir=/var/lib | |
--with-default-user=mfs | |
--with-default-group=mfs | |
--disable-mfschunkserver | |
--disable-mfsmount | |
[ | ]
3.Masterlog-Server修改主配置文件,指定主服务器IP.
#[开启配置文件] | |
#---------------------------------------------------------------------------------- | |
[root@localhost ~]# cd /etc/mfs | |
[root@localhost ~]# cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg | |
#---------------------------------------------------------------------------------- | |
#[配置参数] | |
#---------------------------------------------------------------------------------- | |
[root@localhost ~]# vim /etc/mfs/mfsmetalogger.cfg | |
META_DOWNLOAD_FREQ = 2 #元数据备份文件下载请求频率(默认24小时) | |
MASTER_HOST = 192.168.22.195 #指定Master-Server地址(主控地址) | |
#---------------------------------------------------------------------------------- |
4.启动Metalogger server备用服务器进程,并设置开机自启动.
[ | ]|
[ | ]
5.检查从服务器是否启动成功并同步了数据.
[ | ]|
[ | ]
Cunk-Server配置
数据存储服务器data servers (chunkservers):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.真正存储数据的节点,扩建它增加容量,可以多台每个文件可能在不同服务器间拷贝.
1.Cunk-server服务器上的/etc/hosts中添加下面指向,指明主服务器IP (可选/如果不做第1步则要做第3步).
[root@localhost ~]# vim /etc/hosts | |
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 | |
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 | |
192.168.22.195 mfsmaster #在原来的基础上添加这一条即可 |
2.源码编译安装Cunk-Server.
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
--localstatedir=/var/lib --with-default-user=mfs \ | |
--with-default-group=mfs --disable-mfsmaster | |
--prefix=/usr | |
--sysconfdir=/etc | |
--localstatedir=/var/lib | |
--with-default-user=mfs | |
--with-default-group=mfs | |
--disable-mfschunkserver | |
--disable-mfsmount | |
[ | ]
3.拷贝 Chunk-Server 服务所需的配置文件(开启配置文件),去掉.sample后缀开启.
[ | ]|
[ | ]|
[ | ]
4.修改Chunk-Server 配置文件,指定服务器地址,端口,和共享的磁盘.
[root@localhost ~]# vim /etc/mfs/mfschunkserver.cfg | |
MASTER_HOST = 192.168.22.195 #指明Master-Server服务器地址 | |
MASTER_PORT = 9420 #指明Master-Server端口 | |
HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg #指明哪个配置文件来配置共享磁盘的 |
5.编辑/etc/mfs/mfshdd.cfg
,在最后面添加下面的文本行,并创建相应挂载目录.
在配置文件 mfshdd.cfg 中我们给出了用于客户端挂接 MooseFS 分布式文件系统根分区所使用的共享空间位置. 建议在Chunk-Server上划分单独的空间给 MooseFS 使用,这样做的好处是便于管理剩余空间. 此处我们假定要使用一个共享点/mnt/mfschunk(如果没有,请先创建共享点).
[ | ]|
[ | ]|
[ | ]|
6.启动 Cunk-Server 服务,并设置开机自启动.
[ | ]|
[ | ]
7.现在通过浏览器访问,主控地址.
网页中,应该可以看见这个 MooseFS 系统的全部信息(包括主控 master和存储服务 chunkserver) 在Disks上可以看到我们的挂载/ghost目录了
Client客户端配置
实际的使用节点,例如:每台Apache都挂载上共享目录,即可实现所有Apache服务器全部共享一个目录
1.在/etc/hosts中添加下面指向,指明主服务器IP(可选/不指定则要通过IP挂载).
[root@localhost ~]# vim /etc/hosts | |
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 | |
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 | |
192.168.22.195 mfsmaster #在原来的基础上添加这一条即可 |
2.为了挂载基于MooseFS的文件系统,需要所有客户端安装FUSE包.
[ | ]|
[ | ]|
[ | ]|
[ | ]
3.Linux下执行下面命令,不然编译mfsmount会报Fuse不存在的错.
[root@localhost ~]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
4.编译安装客户端软件mfsmount.
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
--localstatedir=/var/lib --with-default-user=mfs \ | |
--with-default-group=mfs --disable-mfsmaster \ | |
--disable-mfschunkserver | |
--prefix=/usr | |
--sysconfdir=/etc | |
--localstatedir=/var/lib | |
--with-default-user=mfs | |
--with-default-group=mfs | |
--disable-mfschunkserver | |
--disable-mfsmount | |
[ | ]
5.假定客户端的挂接点是 /media,我们将以下面的指令来使用 MooseFS 分布式系统.
[ | ]|
[ | ]|
6.应该写入配置文件/etc/fstab或者/etc/profile开机自动挂载.
[root@localhost ~]# echo "/usr/bin/mfsmount /media -H 192.168.22.195" >> /etc/profile
MooseFS常用功能
1.数据误删除恢复操作,垃圾回收站机制.
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]|
[ | ]
2.快照功能(提取数据).
[ | ]|
[ | ]|
[ | ]|
[ | ]
3.冗余goal设置(自定义备份个数).
[ | ]|
[ | ]|
[ | ]
4.还原 master数据(主服务器的宕机/数据丢失/恢复数据).
我们要去从服务器,将从里的数据拷贝到主上,并重新建立文件索引,即可恢复丢失文件
[ | ]|
[ | ]|
[ | ]