一、MFS分布式文件系统说明
1、 MFS文件系统的4个角色
管理服务器 --- Master Server 元数据日志服务器 --- Metalogger 数据存储服务器 --- Chunk Server 客户端 --- Client
2、 角色作用
管理服务器--mfsmaster: 有时也称为元数据服务器,负责管理各个数据存储服务器,调度文件读写,回收文件空间以 及恢复多节点拷贝。 元数据服务器-mfsmetalogger: 负责备份管理服务器的变化日志,文件类型为changelog_ml.*.mfs,以便于在管理服务器 出现问题时接替期进行工作。这类服务器是在mfs1.6版本后新增的服务,可以把元数据日 志保留在管理服务器中,也可以单独存在一台服务器中。为保证数据的安全性和可靠性,建 议单独使用一台服务器来存放元数据日志,需要注意的是,元数据日志守护进程跟管理服务 器在同一个服务器,备份元数据日志服务器作为它的客户端,从管理服务器取得日志文件进 行备份。 数据存储服务器-mfschunkserver: 这类是真正存储用户数据的服务器。在存储文件时,首先把文件分成块,然后把这些块在数 据存储服务器之间互相复制,同事,数据存储服务器还负责连接管理服务器,听从管理服务 器调度,并为客户提供数据传输。数据存储服务器可以有多个,并且数量越多,可靠性越高 。MFS可用的磁盘空间也越大。 客户端-mfsclient: 客户端通过fuse内核接口挂载远程服务器上所管理的数据存储服务器,使共享的文件系统和 使用本地linux文件系统的效果看起来一样的。
二、实验环境说明
1、关闭防火墙、selinux
2、所有节点配置时间同步服务器
3、节点说明
192.168.15.51 MfsMaster
192.168.15.52 MfsMetalogger
192.168.15.53 MfsChunkServer1
192.168.15.54 MfsChunkServer2
192.168.15.55 MfsClient
4、源码包下载地址:源码包下载地址是:
http://ppa.moosefs.com/src/moosefs-3.0.84-1.tar.gz
三、源码包安装
1、 安装 master server 管理服务器(192.168.15.51)
1)编译安装
yum -y install pcre pcre-devel zlib zlib-devel gcc*
tar -xf moosefs-3.0.84-1.tar.gz
cd moosefs-3.0.84
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make && make install
cd /usr/local
useradd -s /sbin/nologin -M mfs
chown -R mfs.mfs mfs/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
ls mfs/
bin #存放CLient端的命令
etc #角色配置文件模版目录
sbin #角色存放
share #监控网站位置
var #空模版文件
2) mfsmaster.cfg(master端配置文件)
cd /usr/local/mfs/etc/mfs
cp -a mfsmaster.cfg.sample mfsmaster.cfg # 无需修改
# vim mfsmaster.cfg
# 配置文件说明
WORKING_USER = mfs
WORKING_GROUP = mfs
SYSLOG_IDENT = mfsmaster #在syslog中的表示,说明这是mfsmaster产生的
LOCK_MEMORY = 0 # 是否执行mlockall()以避免mfsmaster内存溢出(默认为0)
NICE_LEVEL = -19 # 运行的优先级(默认-19,注意,这进程必须是root启动 )
DATA_PATH = /usr/local/mfs/var/mfs (重要)
#数据存放路径,该目录下有三大类文件,changelog,sessions,stats
EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg (重要)
#被挂载目录以及其权限控制文件的存放位置
BACK_LOGS = 50 #元数据的改变日志文件数量(默认是50)
MATOML_LISTEN_HOST = * (重要)
# 元数据日志服务器监听的IP地址(默认是*,代表任何IP)
MATOML_LISTEN_PORT = 9419 (重要) # 元数据日志服务器监听的端口地址,默认是9419
MATOCS_LISTEN_HOST = * # 用于存储服务器(Chunk Server)连接的IP地址
MATOCS_LISTEN_PORT = 9420 # 是存储服务器(Chunk server)连接的端口地址
REPLICATIONS_DELAY_INIT = 300 # 延迟复制的时间(默认是300)
CHUNKS_LOOP_MIN_TIME = 300 # chunks 的回环率
CHUNKS_SOFT_DEL_LIMIT = 10
CHUNKS_WRITE_REP_LIMIT = 2,1,1,4
#在一个循环里复制到一个CHUNK Server的最大chunks数目
CHUNKS_READ_REP_LIMIT = 10,5,2,5
MATOCL_LISTEN_HOST = *
MATOCL_LISTEN_PORT = 9421
3) mfsexports.cfg(权限文件)
cp -a mfsexports.cfg.sample mfsexports.cfg
vim mfsexports.cfg #末尾处添加即可
192.168.15.0/24 . rw,alldirs,maproot=0
#配置文件说明
192.168.15.0/24 #表示MFSMETA文件系统
rw.alldirs,maproot=0 #表示客户端拥有的权限。所有客户端都有权限挂载
#权限部分选项如下:
#ro 只读模式共享
#rw 读写方式共享
#alldirs 允许挂载任何指定的子目录
#maproot 映射为root用户还是指定的用户
#password 指定客户端密码
4) metadata.mfs
#将metadata.mfs加载到内存中
cd /usr/local/mfs/var/mfs/
cp -a metadata.mfs.empty metadata.mfs
ll #确保文件的所有者所属主为 mfs.mfs
5)启动master server
mfsmaster start
mfscgiserv #查看监控信息(端口以及监控地址)
#starting simple cgi server (host: any , port: 9425 ,
#rootpath: /usr/local/mfs/share/mfscgi)
#浏览器查看MFS自带的监控(搭建的时候用,可以看到挂载信息以及共享的磁盘信息等)
#(disk 以及 mount)
192.168.15.51:9425
netstat -lnpt #查看监听端口,确保启动成功A
#ctive Internet connections (only servers)Proto Recv-Q Send-Q Local
#State PID/Program name '''tcp 0 0 0.0.0.0:9419
#5944/mfsmaster tcp 0 0 0.0.0.0:9420
#5944/mfsmaster '''
说明:停止master server,安全停止master server是非常必要的,千万不要kill,而是利用自带的命令mfsmaster来安全停止master server,mfsmaster stop,我们安装后采用默认的配置,没有做任何更改,所以默认的日志是写入/var/log/messages。
2、192.168.15.52 安装元数据日志服务器
1)编译安装
yum -y install pcre pcre-devel zlib zlib-devel gcc*
tar -xf moosefs-3.0.84-1.tar.gz
cd moosefs-3.0.84
useradd -s /sbin/nologin -M mfs
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make && make install
cd /usr/local
chown -R mfs.mfs mfs/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
2) mfsmetalogger.cfg
cd /usr/local/mfs/etc/mfs
cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
vim mfsmetalogger.cfg
MASTER_HOST = 192.168.15.51#52行取消注释并修改为主服务器的地址
MASTER_PORT = 9419 #55行取消注释
META_DOWNLOAD_FREQ = 24 #39行
#39行元数据备份文件下载请求频率,默认是24小时,即每2小时从master server上下载一个
3)启动元数据服务器
mfsmetalogger start # 启动命令
ls /usr/local/mfs/var/mfs # 查看工作目录下是否有元数据文件
3、192.168.15.53/54 安装数据存储服务器
1)编译安装
#两台虚拟机分别添加一块新磁盘,并分区
fdisk /dev/sdb
n-p-1-w
mkfs.ext4 /dev/sdb1
partprobe /dev/sdb1
mkdir /mfs
/bin/mount -t ext4 /dev/sdb1 /mfs
echo "/bin/mount -t ext4 /dev/sdb1 /mfs" >> /etc/rc.local
yum -y install pcre pcre-devel zlib zlib-devel gcc*
tar -xf moosefs-3.0.84-1.tar.gz
cd moosefs-3.0.84
useradd -s /sbin/nologin -M mfs
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make && make install
cd /usr/local
chown -R mfs.mfs mfs/
ln -s /usr/local/mfs/bin/* /usr/local/bin/
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
2)mfschunkserver
cd /usr/local/mfs/etc/mfs/
cp -a mfschunkserver.cfg.sample mfschunkserver.cfg
vim mfschunkserver.cfg
MASTER_HOST = 192.168.15.51 #71行 取消注释 指明master server服务器地址
MASTER_PORT = 9420 #74行取消注释 指明master server 端口
HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg #33行取消注释
# 这个指明哪个配置文件来配置共享磁盘的
3)mfshdd
cp -a mfshdd.cfg.sample /usr/local/mfs/etc/mfs/mfshdd.cfg
vim mfshdd.cfg #末尾添加
/mfs
chown -R mfs.mfs /mfs
4)启动服务
mfschunkserver start
#浏览器查看MFS自带的监控,(disk)是否有挂载信息
192.168.15.51:9425
#ps -ef | grep mfsmfs
#405681002:14 ? 00:00:00 mfschunkserver startroot
#4062517565002:15 pts/000:00:00grep mfs
3、192.168.15.55 安装数据存储服务器(fuse)
1)编译安装
yum -y install fuse fuse-devel fuse-libs
yum -y install pcre pcre-devel zlib zlib-devel gcc*
tar -xf moosefs-3.0.84-1.tar.gz
cd moosefs-3.0.84
useradd -s /sbin/nologin -M mfs
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver
make && make install
mkdir /mfsclient
cd /usr/local
chown -R mfs.mfs /mfs
ln -s /usr/local/mfs/bin/* /usr/local/bin/
ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
mfsmount /mfsclient/ -H 192.168.15.51#-H 指定 master server IP
mount
cd /mfsclient/
while 2>1; do; echo "1" >> 1.txt; done
du -sh 1.txt #复制一个路径进行测试
cat 1.txt
cp -a /var/log/文件名 /mfsclient/
cd /mfsclient/
mfsgetgoal 文件名 #查看默认的goal的数量
mfsfileinfo 文件名 #查看保存在哪几个chunkserver上
mfssetgoal 1 文件名 #修改goal的数量
2)测试
#关闭其中一台Chunkserver,查看
mfsfileinfo messages
mfsfileinfo 文件名
#打开关闭的Chunkserver,查看
#看出的动态添加,动态扩容
四、特殊功能
1、误删除处理,垃圾回收站机制
mfsgettrashtime 文件名 #查看被删除后文件保存时间(不能低于6万秒)
mfssettrashtime 64800 /mfs/文件名 #修改删除文件保存时间
rm -rf 文件名
mkdir /back
chown mfs.mfs /back
mfsmount -m /back -H 192.168.15.51
cd /back
#sustained #持久化数据目录 trash 垃圾箱的块文件目录
tree . >> /root/file.info
vim /root/file.info
mv 002/00000002\|1.txt /back/trash/undel/
#undel 放在此目录内代表不删除了
cd /mfsclient/ #查看内容是否被找回
#批量找回自己写脚本
2、快照功能
# client
mkdir bb
chown mfs.mfs bb/
mfsmakesnapshot 1.txt bb/
cd bb/
3、冗余 goal 设置
mfssetgoal 3 mfs/test1
mfssetgoal /mfs/test1
mfsfileinfo /mfs/test1
4、还原 master
#将master服务器,恢复快照,模拟masters服务器损毁,尝试恢复
#新增一个master服务器,配置好需要配置的服务。
cd /usr/local/mfs/var/mfs/
rm -rf *
#元数据服务器操作
cd /usr/local/mfs/var/mfs/
scp -r * root@192.168.15.51:/usr/local/mfs/var/mfs/
#master服务器操作
chown -R mfs.mfs *
mfsmaster -a #-a代表修复并启动,若不加-a会报错
#client端测试是否恢复。