ceph中 up_thru 的 作用

##up_thru
up_thru的概念的引入,是为了解决当断电,或者其它原因,同时导致两个以上的osd处于down,但是monitor在两次epoch 中检测到了这种状态, 从而导致monitor认为它们是先后down掉,后down 的osd 有可能产生数据的更新,这导致需要等待该osd的恢复,否则有可能产生数据丢失。

下面举例说明:

epoch处于 up 的 osd
1A B
2B
3
4A

如上所示的过程:

  1. 在epoch为1时,一个pg中有A,B两个osd(两副本),都处于up的状态
  2. 在epoch 为2时,monitor 只检测到了A 处于down,B 仍然处于 up状态:
  • 情况1:此时如果B确实处于up状态,由于B上保持了完整的数据,pg可以完成peering过程,pg就可以处于active的状态,可以接受数据写操作。

  • 情况2:如果B其实也已经和A同时down,只是monitor没有检测到。此时pg不可能完成pg的peering过程,pg可写。

    上述两种不同的情况,monitor无法区分。

  1. 在epoch为3时,Monitor检测到B 也down了。
  2. 在epoch为4时,A恢复了up的状态,此时该PG 在peering完成后,是否可以处于active状态,继续接受读写操作?
  • 如果在epoch为2 时,属于情况2,pg并没有数据更新,B上不会有新的数据,A不缺失数据,此时pg可以处于active状态,可以接受更新请求;
  • 如果属于情况1,pg上有新数据更新到了osdB, 此时osd A 缺失一些数据,该pg 不会处于active 状态。

为了使monitor能够区分上述两种情况,引入了up_thru的概念,up_thru记录了每个osd完成peering后的epoch值。

如果是上述情况2, pg如果可以恢复为active状态,在peering完成后,必须先向Monitor发送消息,Monitor用数组up_thru[osd] 来记录该osd处于active时的epoch值。

当引入up_thru后,上述例子的处理如下:
情况1:

epoch处于 up 的 osdmonitor up_thru
1A Bup_thru[B]=0
2Bup_thru[B]=0
3
4A

流程如下:

  1. 在epoch1时,up_thru[B]为0,也就是说B在epoch为0时参与完成peering。
  2. 在epoch2时,Monitor检查到osd A 处于down状态,osd B 还处于up状态,osd B没有peering成功,没有向monitor 上报其新的up_thru值,该up_thru没有更新。
  3. epoch3时,AB都down了。
  4. epoch4时,A节点处于up状态,开始Peering,发现up_thru[B]为0,说明在epoch 2是没有更新操作,该pg可以完成peering,处于activate状态。
epoch处于 up 的 osdmonitor up_thru
1A Bup_thru[B]=0
2Bup_thru[B]=0
3up_thru[B]=2
4
5A

情况2:
流程如下:

  1. 在epoch1时,up_thru[B]为0,也就是说B在epoch为0时参与完成peering。
  2. 在epoch2时,Monitor检查到osd A 处于down状态,osd B 还处于up状态,该pg 完成了peering,向monitor 上报B的up_thru变为当前epoch2,有可能有更新操作。
  3. epoch3时,AB都down了,B的up_thru为2。
  4. epoch5时,A节点处于up状态,开始Peering过程,发现up_thru[B]为2,说明在epoch 为2时完成了peering,有可能有更新操作,该pg需要等待B恢复,否则可能B上更新的数据,从而产生数据丢失的风险。。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值