当前位置: 首页 > 科技观察

MooseFS分布式文件系统注意事项及故障排查经验

时间:2023-03-11 23:39:48 科技观察

【专题】MooseFS(简称MFS)是一个分布式文件系统。其运行机制和原理可以参考其官网了解MooseFS的基本概念和原理。部署安装也有介绍,对MooseFS了解不多的朋友可以先自己研究下。这篇文章是我在研究和使用MooseFS过程中总结的一些注意事项和排错经验。我会分享给大家一起讨论。1、关于“复制”MFS语言使用“复制”机制来保证文件的高可用。我们可以通过MFS管理命令setglobal来设置文件的“复制”。该值表示某个目录级别或文件级别的副本数。数字。将“Copy”设置为大于1的数字可启用多个数据服务器的冗余备份。当一个数据文件被保存为多个副本时,当单个数据服务器出现故障时,整个系统仍然可以提供正常的服务。对于一些重要的文件,我们通常会将“copy”设置为大于2的值,这样可以使这些文件能够抵抗多个数据服务器的崩溃。通常,可用副本数应设置为超过预期的不可访问服务器数。在生产过程中,一般设置为3(实际上同一单位时间内2台服务器宕机的概率为零)。这个时候我建议大家可以根据实际情况将chunkserserver数据服务器设置为大于等于4的值。在下面的MFS文件分发应用场景中,我们的chunkserver机器数等于4台,当一台chunkserver数据服务器出现故障,无法被其他服务器访问时,其上的数据仍然会有另外两台备份,仍然可以提供数据的读写服务不会影响用户此时的访问。但此时数据的“副本”值大于当前副本数,因此数据服务器会将数据同步到其他服务器以满足所需的文件副本数。这里有一个特别需要注意的地方,就是可用的chunkserver数据服务器数量小于特定文件的“replicas”值,此时就不会满足要求的replicas数量。同理,当可用的数据服务器数量等于文件的“copy”值时,如果数据服务器的容量已经达到100%,则不再接受大于“copy”值的文件的同步请求.当遇到以上情况时,我们需要尽快增加数据服务器,保存需要的文件副本。当我们添加新的数据服务器时,可以随时将其添加到系统中。新的空间容量将立即生效,用于保存新数据或接收其他数据服务器的同步需求。我们可以通过MFS提供的管理工具mfsfileinfo查询一个文件在系统中的状态,判断当前拷贝数与设置的“拷贝”值是否存在差异。当然,我们也可以通过管理工具修改“副本”的值。另外,数据服务器中的数据有版本信息。当有旧版本数据的数据服务器(比如离线一段时间)重新连接到管理服务器时,它会自己同步新版本的数据,并将旧版本的数据删除以释放空间,从而避免数据不一致。有兴趣的朋友可以阅读MFS的源码,进一步了解MFS的数据分布算法。由于这不在本文的专业范围内,请自行研究。2、DRBD+Heartbeat+mfsmaster实现高可用。通过官网的MFS运行机制,大家应该能了解到MFS元数据服务器的重要性。这时候我们可以使用DRBD+Heartbeat双机来保证MFS元数据服务器的高可用。DRBD的底层设备可以是单独的磁盘,也可以是分区。推荐使用Raid1+0分区运行。DRBD+Heartbeat+mfsmastermetaserver安装注意事项:1.我们在配置DRBD时可能会遇到错误:drbdadmcreate-mdha:exitedwithcoolcode40这是因为DRBD认为底层设备已经被占用,所以我们使用这个问题可以通过破坏dd命令来解决。2、在Primary机器上,可以先启动DRBD,先挂载/drbd到目录,然后./configure--prefix=/drbd/mfs--with-default-user=mfs--with-default-group=mfs注意:安装的时候一定要记得带上prefix=/drbd/mfs,把所有的安装目录都放在DRBD挂载目录下,这样以后挂载就不用再指定路径了。在Secondary机器上不需要执行这一步,因为当Primary机器出现问题时,只有Secondary机器才会真正生效。此时也会根据Heartbeat定义脚本mfsmaster自动挂载。3、双机中资源脚本内容为:centos1.cn7788.comIPaddr::192.168.11.30/24/eth0drbddisk::r0Filesystem::/dev/drbd0::/drbd::ext3mfsmaster的内容mfsmaster脚本的一部分是:#!/bin/bashcase"$1"in'start')drbdadmprimaryr0mount/dev/drbd0/drbd/drbd/mfs/sbin/mfsmasterstart;;'停止')/drbd/mfs/sbin/mfsmaster-sumount/drbddrbdadmsecondaryr0;;'重新开始');;*)echo"Usage:$0{start|stop|restart}";;esacexit0注意:Heartbeat默认采用LSB(LinuxStandardBase)风格,所以必须保证mfsmaster脚本可以接收到start的三个参数,停止,状态.你可以仔细看看。mfsstart启动和关闭的过程刚好相反,启动过程就是手动启动MFS分布式文件系统的过程。3、关于fuse、uid、gid设置MFS中的mastermfsmetadataserver不需要fuse,所以这两台机器我们不需要安装fuse。看了网上很多文章说在mfsmaster机器上安装fuse。其实这一步是多余的,不需要操作。为了避免mfs用户和用户组出现问题,建议将两台机器的mfs的uid和gid配置成相同的,以减少出现问题的几率。命令如下:groupadd-g65534mfsuseradd-u65534-gmfs-s/bin/falsemfs4、网络相关的MFS,和NFS一样,对网络的依赖性很强。建议在内网环境上线前做好监控测试工作。正式上线后,要合理分配带宽资源,优化网络。环境,以保证MFS分布式文件系统的网络稳定性。五、MFS分布式文件系统启动运行过程中的故障排除1、管理服务器进程异常关闭导致启动失败,启动过程中产生如下错误日志:Errorlog1:working目录:/drbd/mfslockfilecreatedandlockedinitializingmfsmastermodules...loadingsessions...oksessionsfilehasbeenloadedexportsfilehasbeenloadedloadingmetadata...can'topenmetadatafileifthisisnewinstalationthenrenamemetadata.mfs.emptyasmetadata.mfsinit:文件系统管理器失败!!!erroroccurredduringinitialization-exiting以上错误提示将metadata.mfs.empty文件重命名为metadata.mfs。解决方法如下:cd/drbd/mfs/var/mfsmvmetadata.mfs.emptymetadata.mfserrorlog2:执行上述命令后再次启动进程,会产生如下错误日志:backupfileisnewer比当前文件-请手动检查-可能你应该运行metarestoreinit:filesystemmanagerfailed!!!erroroccurredduringinitialization-exitingisOK执行以下命令自动恢复元数据文件,命令如下:/drbd/mfs/sbin/mfsmetarestore-a作者简介:于红春(博客、微博),网名富勤竹久,从事系统管理、系统集成多年。《构建高可用Linux服务器》本书的作者。