MooseFs集群故障恢复运维

2019/06/01 17:01
阅读数 246

批量操作集群可以借助pssh,封装之

prun: aliased to pssh -O StrictHostKeyChecking=no -t 0 -p 90 -h hosts -l work -o out -e err

master挂了怎么办

如果机器能启动起来,则恢复之。

如果ip没变,只是数据全丢失了,把期中一台metalogger服务器的metadata全部拷贝过来(假设元数据目录是/usr/local/mfs/var/mfs),然后执行 mfsmaster -a 恢复

如果机器完全崩了,想快速换另一台master,则

用其中一台metalogger服务器来恢复,因为是全混布,都有metalogger,所以选哪台都行。

假设master机器10.46.17.17挂了,要换10.46.19.20来当master 在gzns机器的/home/work/pssh/nfs/mfs_conf中修改mfschunkserver.cfgmfsmetalogger.cfg连接master配置

MASTER_HOST = 10.46.19.20

进去gzns机器的zsh状态,批量修改集群的上述两个配置。

prun "cd /home/work/.jumbo/etc/mfs && rm mfschunkserver.cfg; wget ftp://**/home/work/pssh/nfs/mfs_conf/mfschunkserver.cfg"
prun "cd /home/work/.jumbo/etc/mfs && rm mfsmetalogger.cfg; wget ftp://**/home/work/pssh/nfs/mfs_conf/mfsmetalogger.cfg"

检查 10.46.19.20 机器的mfsmaster.cfgmfsexports.cfg配置是否存在且配置正确。如果不正确重新刷,或者单台修改。

prun "cd /home/work/.jumbo/etc/mfs && rm mfsmaster.cfg; wget ftp://**/home/work/pssh/nfs/mfs_conf/mfsmaster.cfg"
prun "cd /home/work/.jumbo/etc/mfs && rm mfsexports.cfg; wget ftp://**/home/work/pssh/nfs/mfs_conf/mfsexports.cfg"

利用mfsmaster -a来合并元数据日志,自动恢复模式。

重启chunkserver和metalogger,如果不重启,可能客户端没法读原来文件,只能写新的,有问题。

prun "ps aux | grep mfschunkserver | grep /home/work/.jumbo/sbin/ | awk '{print $2}' | xargs kill -9"
prun "ps aux | grep mfsmetalogger | grep /home/work/.jumbo/sbin/ | awk '{print $2}' | xargs kill -9"
prun "/home/work/.jumbo/sbin/mfsmetalogger start"
prun "/home/work/.jumbo/sbin/mfschunkserver start"

上面kill命令批量报[FAILURE]没事,其实已经执行成功了。

fusermount -u卸载 因为是fuse挂载的。如果没有卸载成功,在客户端检查下是否还有挂载mfs进程,如果有杀之。

fusermount -u /mnt/mfs

挂载新的master的mfs服务

mfsmount -H 10.46.19.20 /mnt/mfs

当混布chunkserver和metalogger的机器挂了

https://www.cnblogs.com/bugutian/p/6869278.html 没有备份副本肯定就是endangered的了,如果你的所有磁盘都坏了,那必然就是missing等等。moosefs自己有副本平衡的策略,会自动让你的副本数向对角线靠拢。

chunkserver服务器中,存储的.mfs文件没了的话,大概2分钟会自动备份到别的chunkserver服务器上。

当一台chunkserver不发连接后,mfs会在别的服务器上备份副本到指定数目,等那台故障chunkerserver恢复后,多出来的副本也会自动删除直到最后打平回设置副本数。

测试完集群mfs服务,重新刷一遍 (稳定运行后别再刷)

prun "rm -rf /home/work/.jumbo/var/mfs/*"
prun "rm -rf /home/disk1/mfs/*"
prun "rm -rf /home/disk2/mfs/*"
prun "rm -rf /home/disk3/mfs/*"

若报错找不到 metadata.mfs

loading metadata ...
can't find metadata.mfs - try using option '-a'
init: metadata manager failed !!!

/home/work/.jumbo/var/mfs中拷贝metadata.mfs.empty(若被删了,可重新安装moosefs,或者自己建) 为 metadata.mfs,其内容是:

MFSM NEW

再正常启动mfsmaster

/home/work/.jumbo/sbin/mfsmaster start

若启动chunkserver报错不能使用.metaid

hdd space manager: chunkserver without meta id shouldn't use drive with defined meta id (file: '/home/disk1/mfs/.metaid') - use '!' in drive definition to ignore this (dangerous)

先删了.metaid,再启动chunkserver。

prun "rm /home/disk1/mfs/.metaid"
prun "rm /home/disk2/mfs/.metaid"
prun "rm /home/disk3/mfs/.metaid"

误删文件恢复

客户端查看和设置命令:

mfsgettrashtime # 查看回收站保留时间
mfssettrashtime # 设定回收站保留时间

默认是86400秒。

欲恢复,需要先挂针mfsmeta文件系统,用到-m参数。

mfsmount -H **.**.**.** -m /mnt/mfsmeta

..**.**是master机器。 进入/mnt/mfsmeta目录可以看到

  • 目录 trash (包含仍可以被还原的被删除了的文件信息)和 trash/undel (移到该目录则相当于恢复)。
  • 目录 reserved,该目录内是被删除但依然打开着的文件。在用户关闭了这些被打开的文件后,reserved 目录中的文件将被删除。

恢复方法即将欲恢复的文件从 trash 目录移动到 trash/undel 目录下。如果在同一路径下有个新的同名文件,则恢复失败。

读写速率测试

副本数和metalogger增加基本不影响写速率。

若指定goal高于2,客户端将数据发送到一个组块服务器,组块服务器读取,写入数据并将数据发送到另一个组块服务器。这样一来,客户端的输入就不会发送多个副本,而且所有副本几乎同时被写入。

用1.5G的包含大量小文件整个目录写入测试,2m14s,速率大约11M/s。删除耗时42s,速率大约37M/s。

429M大文件写入耗时3.89s,速率大约110M/s。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部