6.智能克隆
Smart-Cloning(智能克隆)¶
智能克隆其实就是利用快照加速对PVC克隆的一种方法。在满足特定条件时,CDI会自动选择克隆策略,所以才叫智能克隆。
在讲DV克隆时,有讲到过可以通过指定一个输入源为PVC来创建DV,这样会触发对原始PVC的克隆操作,也就是创建DV的source是pvc CDI实现PVC克隆的方式是通过主机辅助克隆(host assisted clone),即从源PVC流式读取数据并写入到新的PVC中。 为了提高克隆过程的性能,引入了智能克隆功能,该功能利用了快照。 智能克隆 当存在具有快照功能的CSI插件时,CDI利用通过快照创建PVC的功能,更高效地克隆PVC。智能克隆过程中,DV的yaml结构和注解保持不变。
k8s在v1.12引入了一项特性,就是基于快照创建PVC,有关更多详情,请参阅此处 。
注意:要启用从卷快照数据源恢复卷的支持,需要在apiserver和controller-manager上启用VolumeSnapshotDataSource特性门控。
流程描述 以下是智能克隆流程的描述:
- 创建带有PVC源的数据卷(DataVolume)
- 检查是否可以进行智能克隆:
- 源PVC与目标PVC必须在同一存储类下
- 与此存储类关联的必须有一个快照类
- 如果可以进行智能克隆:
- 创建源PVC的快照
- 从创建的快照创建一个新的PVC
- 删除已创建的快照
- 如果请求的大小大于快照大小,则扩展新PVC
- 若DataVolume位于不同命名空间,可通过
Namespace Transfer API将新PVC "转移"到目标命名空间
- 如果不能进行智能克隆:
- 触发较慢的"主机辅助克隆"
- 注意:对于某些CSI驱动程序,在从快照恢复时,新PVC的大小必须等于创建快照时的原PVC大小。
禁用智能克隆 如果出于某种原因,您不希望使用智能克隆而倾向于采用主机辅助克隆,可以通过编辑CDI来禁用智能克隆: 如果snapshot可用,则默认为智能克隆,否则为主机辅助克隆。
再次启用智能克隆: