解决方案
Ceph 支持从 Snapshot 创建 Clone,其被称为快照分层(Snapshot Layering)。虽然 Snapshot 是只读的,但是 COW Clone 是可写的。
Ceph RBD Image 有两种:
1)format 1:默认 Image 格式;
2)format 2:COW 仅支持 Format 2 的 RDB Image;
配置案例
// 创建存储 # rbd create rbd2 --size 10240 --image-feature layering --name client.rbd # rbd info --image rbd2 --name client.rbd // 创建快照 // 并保护快照,否则破坏快照将导致其他克隆无法使用; # rbd snap create rbd/rbd2@snapshot_for_cloning --name client.rbd # rbd snap protect rbd/rbd2@snapshot_for_cloning --name client.rbd // 创建克隆 # rbd clone <pool-name>/<parent-image-name>@<snap-name> <pool-name>/<child_image-name> --image-feature <feature-name> # rbd clone rbd/rbd2@snapshot_for_cloning rbd/clone_rbd2 --image-feature layering --name client.rbd // 查看信息 // 在镜像信息中,将包含父镜像相关的信息 # rbd info rbd/clone_rbd2 --name client.rbd // 摆脱父镜像,实现完整克隆 // 之后,可以考虑移除父镜像 # rbd flatten rbd/clone_rbd2 --name client.rbd # rbd info --image clone_rbd2 --name client.rbd # rbd snap unprotect rbd/rbd2@snapshot_for_cloning --name client.rbd # rbd snap rm rbd/rbd2@snapshot_for_cloning --name client.rbd