美文网首页
ceph:如何计算集群数据恢复时间

ceph:如何计算集群数据恢复时间

作者: ypdai | 来源:发表于2021-02-24 20:13 被阅读0次

    1、前言

    很多场景会导致集群数据进行迁移、恢复,比如磁盘损坏后换盘操作、集群扩容操作、机器下电维护后再次上电等等。数据恢复的时候会一定程度的影响客户端io,我们迫切需要大概知道数据啥时候可以恢复完成,下面就描述一种计算方法。

    2、计算数据恢复需要的时间

    计算方式:需要恢复的总对象数 / 每秒恢复的对象数 = 需要恢复的时间
    比如下面的我测试环境例子:

    [root@node6 ~]# ceph -s -f json-pretty|grep pgmap -A 50
        "pgmap": {
            ...
            "num_pgs": 256,
            "num_pools": 3,
            "num_objects": 23004,
            "data_bytes": 96398382554,
            "bytes_used": 163841966080,
            "bytes_avail": 1554111397888,
            "bytes_total": 1717953363968,
            "inactive_pgs_ratio": 0.01171875,
            "degraded_objects": 9046,
            "degraded_total": 46008,
            "degraded_ratio": 0.19661797948182921,
            "recovering_objects_per_sec": 10,
            "recovering_bytes_per_sec": 19948622,
            "recovering_keys_per_sec": 0,
            "num_objects_recovered": 30,
            "num_bytes_recovered": 125829120,
            "num_keys_recovered": 0
        }
    

    按照计算公式来计算:
    需要恢复的对象总数 = "degraded_objects" + "misplaced_objects"(这里没有misplaced_objects,也就不用加了)
    当前恢复的的速度 = "recovering_objects_per_sec"(这里的恢复速度是在变动的,可以多获取几次取个平均值)
    需要恢复的时间 = 9046 / 10 = 大概900s

    上面是计算整个集群的,如果需要计算某个pool级别的,可以使用 ceph osd pool stats -f json-pretty 来获取pool的 degraded_objects misplaced_objects和recovering_objects_per_sec值,然后计算方式和整个集群的计算方式一样。

    好了,通过上面简单的计算就可以大概推算集群恢复完成的时间了。

    相关文章

      网友评论

          本文标题:ceph:如何计算集群数据恢复时间

          本文链接:https://www.haomeiwen.com/subject/kmfefltx.html