本文将对MFS">分布式存储系统的日常维护进行总结,内容包括:启动MFS集群、停止MFS集群、MFS数据存储服务器的维护、MFS元数据的备份、MFS管理服务器的恢复及从备份恢复MFS管理服务器等内容进行详细的说明。
维护MFS,最重要的是维护元数据服务器,而元数据服务器最重要的目录为/usr/local/mfs/var/mfs,MFS数据的存储、修改、更新等操作变化都会记录在这个目录的某个文件中,因此只要保证这个目录的数据安全,就能保证整个MFS文件系统的安全性和可靠性。
/usr/local/mfs/var/mfs目录下的数据由两部分组成:一部分是元数据服务器的改变日志文件,文件名称类似于changelog.*.mfs:另一部分是元数据文件metadata.mfs,运行mfsmaster时该文件会被命名为metadata.mfs.back。只要保证了这两部分数据的安全,即使元数据服务器遭到致命的破坏,也可以通过备份的元数据文件重新部署一套元数据
服务器。
1、启动MFS集群
最安全的启动MFS集群(避免任何读或写的错误数据或类似的问题)的步骤如下:
1)启动mfsmaster进程。
2)启动所有的mfschunkserver进程。
3)启动mfsmetalogger进程(如果配置了mfsmetalogger)。
当所有的数据存储服务器连接到MFS管理服务器盾,任何数目的客户端都可以利用mfsmount去挂接共享出来的文件系统(可以通过检查管理服务器的日志或CGI监视器来查看所有的数据存储服务器是否被连接)。
2、停止MFS集群
要安全地停止MFS集群,按照如下步骤进行操作:
1)在所有的客户端卸载MFS文件系统(利用umount命令或者其他等效的命令)。
2)利用“mfschunkserver -s”命令停止数据存储服务器进程。
3)利用“mfsmetalogger -s”命令停止元数据日志服务器进程。
4)利用“mfsmaster -s”命令停止管理服务器进程。
3、MFS数据存储服务器的维护
假如每个文件的goal(目标)都不小于2,并且没有under-goal文件(这些可以通过“mfsgetgoal -r”和mfsdirinfo命令来检查),那么一个数据存储服务器在任何时刻都可以停止或重新启动。以后每当需要停止或者重新启动另一个数据存储服务器的时候,要确定之前的数据存储服务器被连接,而且没有under-goal chunks。
4、MFS元数据的备份
通常元数据由两部分数据组成:
口主要元数据文件metadata.mfs,在MFS的管理服务器master运行时会被命名为 metadata.mfs.back。
口元数据改变日志changelog.*.mfs,存储过去N小时内的文件改变(N的数值是由 BACK_LOGS参数设置的,参数的设置在mfschunkserver.cfg配置文件中进行)。
主要的元数据文件需要定期备份,备份的频率取决于多少小时改变日志的储存。元数据改变日志应该实时地自动复制。自从MooseFS l.6.5开始,这两项任务都是由元数据日志服务器守护进程完成的。
5、MFS管理服务器的恢复
一旦管理服务器崩溃(例如由主机或电源失败导致的),需要最后一个元数据改变日志changelog和主要元数据文件metadata.mfs,这个操作可以通过mfsmetarestore工具来完成。
最简单的方法如下:
mfsmetarestore -a
执行此命令后,默认会在/usr/local/mfs/var/mfs目录中自动寻找需要的改变日志文件和主要元数据文件。注意,mfsmetarestore命令在恢复时自动查找的是metadata.mfs.back文件,而不是metadata.mfs文件,如果找不到metadata.mfs.back文件,会继续查找是否存在metadata_ml.mfs.back文件,如果没有,将提示恢复错误。
如果管理服务器的数据被存储在MFS编译指定地点外的路径,则要利用“-d”参数指定使用。如:
mfsmetarestore -a -d /storage/mfsmaster
6、从备份恢复MFS管理服务器
为了从备份中恢复一个管理服务器,需要按以下步骤进行:
1)安装一个管理服务器。
2)利用同样的配置来配置这台管理服务器(利用备份找回mfsmaster.cfg),可见配置文件也是需要备份的。
3)找回metadata.mfs.back文件,可以从备份服务器中找,也可以从元数据日志服务器中找(如果启动了元数据日志服务),然后把metadata.mfs.back放入data目录中,一般为${prefix}/var/mfs。
4)从在管理服务器宕机之前的任何运行元数据日志服务的服务器上复制最后一个changelog.* .mfs文件,放入管理服务器的数据目录。
5)利用mfsmetarestore命令合并元数据改变日志。这时可以采用自动恢复模式,命令如下:
mfsmetarestore -a
也可以利用非自动化恢复模式,在${prefix}/var/mfs目录下执行如下命令:
mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs
通过冗余实现失败防护的解决方案
对一个没有内置失效功能的管理服务器实现冗余功能是正确的选择。这个话题(subject)对应用业务系统来说非常关键,因为冗余在生产系统中是非常重要的,一个没有冗余的MFS应用是不能用在生产系统中的,这是起码的要求。
使用通用地址冗余协议(CARP)就可以解决失败防护的需求,CARP允许同一个LAN中的两台机器用同一个IP,一个作为管理服务器,另一个是备份服务器。因此可以在CARP的网卡接口上设置管理服务器的IP,并且配置为MFS的主要(main)管理服务器。在备份服务器上也要安装管理服务器,但是不要运行它。
MooseFS l.6.5及其以上版本中包含了一个新的程序——mfsmetalogger.这个程序可以运行在任何机器上。这个程序每隔数小时(默认为24小时)从管理服务器上获得一次完整的元数据,并且在现有的基础上形成一个彻底改变的日志。
如果运行的是一个比1.6.5早的版本,那么就需要设置几个简单的脚本并且依据系统的计划任务运行(如每小时运行一次)。脚本的主要内容是从主管理服务器下“PREFIX/var/mfs/metadata.mfs.back”备份元数据文件。
另外,还需要持续地运行一个额外的脚本来检测CARP网卡接口状态,如果该接口在一个MASTER模式进行了改变,那么将会从任何一台数据存储服务器(仅仅通过使用SCP)上获得两个或三个最新的改变日志文件,之后就可以运行“mfsmetarestore”命令并最终切换到新的管理服务器上。这个切换时间大约有几秒钟,随着切换的进行,各台数据存储服务器将重新连接到新的管理服务器,新的管理服务器将会在一分钟内恢复全部功能(读和写)。
在MFS新的版本中,开发者计划加一个让管理服务器运行在只读模式下的选项,这对运行备份服务器将是十分有好处的,它可以确保使系统潜在的两个管理服务器同步,并且合并发生在备份服务器的变化到主管理服务器上。
本章主要讲述了分布式文件存储系统MFS的结构、安装配置和基本的管理维护。在安装配置方面,不但详细介绍了配置方法,而且讲述了安装配置过程中容易出现的问题和经验技巧;在管理维护方面,详细介绍了MFS如何启动和关闭,以及如何进行备份和恢复,还简单说明了MFS常用的几个文件系统命令;最后还介绍了通过冗余实现MFS失败防护的解决方案,并分享了MFS在生产环境中的使用经验和技巧。
作为一个开源的分布式文件存储系统,MFS完成的功能决不逊色于专业的存储系统,而且还可以实现在线扩容。随着MFS版本和功能的升级,相信MFS的应用会越来越广泛!