• MooseFs集群故障恢复运维


    批量操作集群可以借助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。

  • 相关阅读:
    TODO 模板实践
    C++类继承方式及实践
    【转】C++友元
    C++面向对象实践
    数组指针实践
    引用&指针交换函数实践
    左值引用&右值引用实践【TODO】
    const变量的修改实践
    【转】c语言动态与静态分配
    【转】数组指针&指针数组
  • 原文地址:https://www.cnblogs.com/xrszff/p/10960200.html
Copyright © 2020-2023  润新知