软件定义存储 简化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]