我们小小的啊 发表于 2020-3-31 14:52:28

软件定义存储 简化RBD 克隆流程

  这是Ceph开发每周谈的第一百零五篇文章,记录从18年1月2号到18年1月07号的社区开发情况。
  一句话消息
  圣诞到元旦大部分开发者都已经休假了
  简化RBD克隆流程
  软件定义存储在最近的CDM讨论了rbd克隆流程的简化,为了能够避免protect和unprotect流程。目前的rbd克隆流程如下:
  1)创建快照(rbdsnapcreate<image>@<snap>)
  2)保护快照(rbdsnapprotect<image>@><snap>)
  3)从保护快照中克隆出(rbdclone<image>@<snap><clone>)
  目前的“snapprotect”步骤主要是用于支持从一个readonly的池子中克隆出卷,并通过两步方式:
  CloneOperation
  1)验证快照已经被保护
  2)增加对在<clonepool>/rbd_children对象中对克隆卷的保护
  3)重新验证快照已经被保护,否则回滚
  UnprotectOperation
  1)设置快照状态为UNPROTECTING
  2)扫描所有rbd_children对象,确认没有image被引用,否则回滚
  3)设置快照状态为UNPROTECTED
  简化方案
  通过兼容老的模式,来实现对于新的方法来避免保护和未保护的要求,主要是未来支持从一个只读的池中克隆出,需要给OSDcap增加一个cls方法:
  “allowclassrbdclone_addobject_prefixrbd_header.”
  新的克隆可以只需要调用“rbd.clone_add”来原子性注册和避免快照被删除,调用“rbd.remove_snap”来解决原子性删除的问题。
  同时会增加一个RBD_FEATURE_OPERATION标记来显示是否支持,如果是显示有这个标记,意味着用户可以去掉protect和unprotect过程。

页: [1]
查看完整版本: 软件定义存储 简化RBD 克隆流程