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

2021-02-24  本文已影响0人  ypdai

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值,然后计算方式和整个集群的计算方式一样。

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

上一篇下一篇

猜你喜欢

热点阅读