cephfs的mds元数据的冷热备

             这是mds新手入门篇,主要内容讲述mds冷备,热备区别和重放的关系。我们只讨论单active mds的情况

一,mds的冷备

                  1, 我们用ceph-deploy mds create {host-name}创建一个mds, 这时候会有一个active的mds作为文件系统的元数据缓存来为文件系统提供服务,mds缓存了dentry,并且以lru算法的缓存淘汰方式把dentry缓存在了内存中。我们可以设置mds的日志log为 20/20 (命令:ceph tell mds.[name] injectargs '--debug_mds 20/20'),然后再日志中查看cur的值来查看lru链表的长度。

                  

                2,如果我们在其他主机上又创建一个mds,默认是冷备的。创建好2个mds 后如下图,一个 active的mds,一个standy的mds

                 

                   3,我们查看冷备mds的日志后发现,冷备的mds,基本上不做任何事情,只调用handle_mds_beacon()这个函数

                   我们查看一下这个函数内容,发现这个standy mds的函数基本上只和monitor维护一个心跳的动作,其他啥也不做

        

                 4, 我们这时候把active mds 关掉,这时候standy mds,就会变成active mds,再查看日志发现之前的standy mds也就是现在的active mds在一直执行replay操作,因为之前做standy  mds的时候是没有缓存lru数据的,这时候他要把之前缓存的lru数据读进来。

                 

             总结:这就是冷备,备份的mds,只起到一个进程备份的作用,并不备份lru元数据。主备进程保持心跳关系,一旦主的mds挂了,备份mds replay()元数据到缓存,当然这需要消耗一点时间。

二,mds的热备

             1, 我们首先创建一个mds,默认是 active mds。 我们再创建一个mds,默认为备份mds,我们在备份mds启动的时候,指定他为热备。

              --hot-standby
              Start as a hot standby for MDS .

             命令为:ceph-mds -i [mds_name] --hot-standby 0

             其中0为主mds的rank值

             创建后,结果如下:

             

            这个备份mds不仅仅叫standby 了,而叫:standby-replay。

      我们看看这个热备的mds执行什么操作。

    发现热备的mds在时时刻刻做replay的操作。也就是说除了进程备份,他的元数据缓存还时时刻刻的与主mds保持同步。

     2,当 active mds挂掉后,热备的mds直接变成主mds,并且没有replay()的操作,元数据缓存大小和主mds保持一致


--------------------- 
作者:--小史-- 
来源:CSDN 
原文:https://blog.csdn.net/a1454927420/article/details/79086759 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(cephfs)