回顾

文件或目录的额外属性(noower,noattracache和noentrycache),可以通过MFS提供的命令(mfsgeteattr,mfsseteattr,mfsdeleattr等)检查、设置和删除。其行为类似于mfsgettoal/mfssetgoal或者mfsgettrashtime/mfssettrashtime。

维护MFS

维护MFS,最重要的是维护元数据服务器,而元数据服务器最重要的目录就是为/usr/local/mfs/var/mfs(源码安装就在这里)。MFS数据的存储、修改和更新操作变化都会记录在这个目录的某个文件中、因此要保证这个目录的数据安全,就能保证整个MFS文件系统的安全性和可靠性。

/usr/local/mfs/var/mfs目录下的数据由两部分组成:一部分是元数据服务器的改变日志文件,文件名是changelog.*.mfs:另一个部分就是元数据文件metadata.mfs,运行mfsmaster时该文件就会被命名为metadata.mfs.back。只要保证了这两部书的数据安全,即使管理服务器操作破坏,也可以通过备份的元数据文件重新部署一套。

启动MFS集群

最安全的启动MFS集群(避免任何读写错误数据或者类似的问题)步骤如下:

  1. 启动mfsmaster进程。
  2. 启动所有的mfschunkserver进程
  3. 启动mfsmetalogger进程(如果有mfsmetalogger服务器的话)

当所有的数据存储服务器连接到MFS管理服务器后,任何数目的客户端都可以利用mfsmount去连接共享出来的文件系统(可以通过mfscgiserver提供的web界面查看或者mfsmaster日志)

停止MFS集群。

安全停止MFS集群,按照如下步骤进行操作:

  1. 在所有的客户端卸载MFS文件系统(利用umount命令即可卸载)。
  2. 利用mfschunkserver stop停止数据存储服务器进程。
  3. 利用mfsmetalogger stop停止元数据日志服务器进程。
  4. 利用mfsmaster stop停止管理服务器进程。

MFS存储服务器的维护

假如每个文件的goal(副本)都不小于2,并且没有under-goal文件(这些可以通过“mfsgetgoal -r”和mfsdirinfo命令来查看),那么一个数据存储服务器在任何时候都可以停止或重新启动。以后每当需要停止或者重新启动另一个数据存储服务器的时候,需要确定之前的数据存储服务器被链接,而且没有under-goal chunks。

MFS元数据备份

  1. 主要元数据文件metadata.mfs,在MFS的管理服务器master运行时会被命名为metadata.mfs.back。
  2. 元数据改变日志changelog.*.mfs,存储过去N小时内的文件改变(N数值是由BACK_LOGS参数设置的。参数设置在mfschunkserver.cfg配置文件中进行)

主要的元数据文件需要定期备份,备份的频率取决于多少个小时改变日志的存储。元数据改变日志应该时时的自动复制。从MFS1.6.5版本后,这两项任务都是由元数据日志服务器进程完成的。

MFS管理服务器的恢复

一旦服务器奔溃,需要最后一个元数据改变日志changelog和主要的元数据文件metadata.mfs。这个操作可以通过mfsmaster(在1.7版本以前用mfsmetarestore)命令来完成。命令如下所示:

[root@localhost mfs]# mfsmaster -a   #执行这个命令的时候,确保mfsmaster进程处于停止状态。
working directory: /usr/local/mfs/var/mfs # 源码安装指定了/usr/local/mfs,那么默认是在这里。

关于恢复的时候指定元数据存储目录,我这也没发现用哪个命令去指定,在1.7版本以前的是mfsmetarestore -d来指定的。

从备份恢复MFS管理服务器。

为了从备份中恢复一个管理服务器,需要以下步骤进行:

  1. 安装一个新管理服务器。
  2. 利用通配的配置来配置新管理服务器(利用备份找回mfsmaster.cfg),配置文件需要备份的。
  3. 找回metadata.mfs.back文件,从备份服务器中找,也可以从元数据日志服务器中找(如果启动了元数据日志服务),然后把metadata.mfs.back文件放入mfs的数据目录下,源码安装的一般为${prefix}/var/mfs。
  4. 从管理服务器宕机之前任何运行元数据日志服务器上复制最后一个changelog.*.mfs文件,放入管理服务器的数据目录。
  5. 利用mfsmaster -a来合并元数据日志,自动恢复模式。

通过冗余实现失败防护的解决方案。

如题所示,其实就是一主一备的模式,当主的宕机后,备用机马上顶上去。

对于高可用的方案,我们可以采用keepalived或者heartbeat来做高可用。

对于元数据的一致性,我们还可以通过unison来做主备之间的双向元数据的同步,确保数据一致。

MooseFs-分布式文件系统系列(四)之简单聊聊MFS的日常维护的更多相关文章

  1. 在CentOS上安装部署MooseFS分布式文件系统

    参考资料: http://www.moosefs.org/tl_files/manpageszip/moosefs-step-by-step-tutorial-cn-v.1.1.pdf 环境介绍:OS ...

  2. MFS分布式文件系统

    一.MFS概述: MooseFS(moose 驼鹿)是一款网络分布式文件系统.它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源.MFS也像其他类unix文件系统一样,包含了层级结构(目录树 ...

  3. FastDFS分布式文件系统

    FastDFS分布式文件系统 阅读目录 相关文章 1 分布式文件系统介绍 2 系统架构介绍 3 FastDFS性能方案 4 Linux基本命令操作 5 安装VirtualBox虚拟机并配置Ubuntu ...

  4. MooseFS分布式文件系统介绍及安装教程详解

    MFS系统由4个部分构成:master.metalogger.chunkserver.client. 1.Master —— mfs的大脑,记录着管理信息,比如:文件大小,存储的位置,份数等,和inn ...

  5. 分布式文件系统MFS(moosefs)实现存储共享(第二版)

    分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...

  6. 分布式文件系统MFS(moosefs)实现存储共享(一)

    分布式文件系统MFS(moosefs)实现存储共享 作者:田逸(sery@163.com) from:[url]http://net.it168.com/a2009/0403/270/00000027 ...

  7. 分布式文件系统MFS(moosefs)实现存储共享

    分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...

  8. 分布式系列四: HTTP及HTTPS协议

    分布式系列四: HTTP及HTTPS协议 非常全面的一篇HTTP的文章: 关于HTTP协议,一篇就够了 还有一个帮助理解HTTPS的文章: 也许,这样理解HTTPS更容易 本文的一些描述摘自这篇文章 ...

  9. Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!

    转自:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929 Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop ...

随机推荐

  1. HTTPS科普扫盲帖

    为什么需要https HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理等. 举个最常见的例子,用户登陆.用户输入账号,密码, ...

  2. 必须要会的技能(一) 如何实现设计时Binding

    今天我们来分享一个主题:DesignTime Binding设计时绑定. 这一项技术可以使用在所有包括WPF及其衍生出来的技术上,比如Sliverlight,当然也包括UWP 先来说明一下设计时Bin ...

  3. 记一次ASP.NET网站的入侵和如何避免被入侵

    ASP.NET网站入侵第二波(LeaRun.信息化快速开发框架 已被笔者拿下) 详细介绍请看第二波 首先我要申明的是不是什么语言写出来的程序就不安全,而是得看写代码的人如何去写这个程序 前些日子我去客 ...

  4. 年中review

    1. 做好已知的各种项目,争取能成立固定团队 (项目一期争取能在本月上线)2. 横向扩展技术学习,了解各种技术,加强技术素养(从Server到前端,现在要关注的知识点越来越多,fighting...) ...

  5. js队列

    用指针和数组模拟基本队列 http://blog.csdn.net/zhuwq585/article/details/53177192 js下的事件队列,或者异步队列 http://www.jb51. ...

  6. VS2013 未找到与約束ContractName

    vs2013打开项目无法加载项目,关闭时提示  未找到与約束ContractName... 解決方法,打開控制面板,找到下面這個程序 右击,选 择 修 复

  7. Service之来电监听(失败的案例)

    Service:服务,可以理解成一个运行再后台没有界面的Activity,集成于Seriver,是四大组件之一 Service的继承关系:Service-->ContextWrapper--&g ...

  8. 使textarea支持tab缩进

    //textarea支持tab缩进 $("textarea").on( 'keydown', function(e) { if (e.keyCode == 9) { e.preve ...

  9. SpringMVC对日期类型的转换

    在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@Date ...

  10. nginx安装(1) – ttlsa教程系列之nginx

    1.必要软件准备 安装pcre 为了支持rewrite功能,我们需要安装pcre   1 # yum install pcre* //如过你已经装了,请跳过这一步 安装openssl 需要ssl的支持 ...