(6)ceph RBD 复制

匿名 (未验证) 提交于 2019-12-02 23:56:01

Ceph 存储集群可以从RBD的快照中创建写时复制 (COW 副本),这就是 Ceph 的快照分层。 Ceph 的这个分层特性允许客户端创建 Ceph RBD 的多个即时副本, 这个特性对云平台和虚拟化平台非常有 ,例如 OpenStack 、CloudStack 和Qemu/ KVM 这些平台通常'以快照的形式保护含有 OS/VM 镜像的Ceph RBD 镜像 ,然后通过不断复制这个快照来创建新的虚拟机 /实例 ,快照是只读的,但是 COW 副本则是完全可写的; Ceph 的这个特性为云平台带来巨大的灵活性,并且对于云平台非常有用,下图显示了 RADOS 块设备、 RBD 快照和COW 快照副本之间的关系。

每一个复制的镜像(子镜像)都包含它的父快照的引用,用于读取镜像数据。 因此,父快照在用于复 制之前应该处于被保护状态。当有数据写入COW 复制的镜像时,它会为自己存储新的数据引用。 COW 复制的镜像与 RBD是一 样的。

它们都非常灵活,类似于 RBD ,也就是说,它们可写, 可调整容量,可以创建新的快照,将来还可以复制。

RBD 镜像的类型定义了它所支持的特性,在Ceph 中,有两种 类型的RBD 镜像:format-l和 form t-2, format-l和 format-2 类型的 RBD 镜像 都支持快 照特性。然而,分层特性( 也就是 COW 特性)只有 format-2 类型 RBD 镜像支持, RBD 镜像 默认类型是format-l。

(1)首先创建一个format2类型的RBD镜像,然后创建快照,保护快照,最后使用该快照创建一个COW副本。

[root@node140 /]# rbd create rbd_copy1 --size 10240 --image-format 2 [root@node140 /]# rbd ls  rbd_copy1

(2)创建该镜像的快照

[root@node140 /]# rbd snap create rbd/rbd_copy1@snap_for_clone [root@node140 /]# rbd snap ls rbd/rbd_copy1 SNAPID NAME           SIZE   PROTECTED TIMESTAMP                      8 snap_for_clone 10 GiB           Wed Aug 28 17:27:10 2019 

(3)要创建COW副本,先要将快照置于保护状态,这个步骤很重要,我们应该保护该快照,因为如果删除该快照,所有连接到它的COW副本都将被销毁。
[root@node140 /]# rbd snap protect rbd/rbd_copy1@snap_for_clone

(4)复制快照需要父存储池,RBD镜像及快照的名称。
[root@node140 /]# rbd clone rbd/rbd_copy1@snap_for_clone rbd/rbd_copy2

(5)创建副本速度非常快,创建完成后,查看新镜像的信息,发现他的父池、镜像,以及快照的信息都会显示出来。

[root@node140 /]# rbd --pool rbd --image rbd_copy2 info  rbd image 'rbd_copy2':     size 10 GiB in 2560 objects     order 22 (4 MiB objects)     snapshot_count: 0     id: 1735e1f84c868     block_name_prefix: rbd_data.1735e1f84c868     format: 2     features: layering, exclusive-lock, object-map, fast-diff, deep-flatten     op_features:      flags:      create_timestamp: Wed Aug 28 17:33:38 2019     access_timestamp: Wed Aug 28 17:33:38 2019     modify_timestamp: Wed Aug 28 17:33:38 2019     parent: rbd/rbd_copy1@snap_for_clone   ##依赖父镜像     overlap: 10 GiB

(6)到这里已经克隆了一个RBD镜像,基于其父镜像的快照,但现在不是独立的,还依赖于父镜像,要不依赖于父镜像,需要扁平化该镜像,其中会从父镜像的快照中复制数据到子镜像中。扁平化过程所需要的时间域镜像中的数据大小相同,扁平化过后无任何依赖,完全独立。

[root@node140 /]# rbd flatten rbd/rbd_copy2 Image flatten: 100% complete...done. [root@node140 /]# rbd --pool rbd --image rbd_copy2 info  rbd image 'rbd_copy2':     size 10 GiB in 2560 objects     order 22 (4 MiB objects)     snapshot_count: 0     id: 1735e1f84c868     block_name_prefix: rbd_data.1735e1f84c868     format: 2     features: layering, exclusive-lock, object-map, fast-diff, deep-flatten     op_features:      flags:      create_timestamp: Wed Aug 28 17:33:38 2019     access_timestamp: Wed Aug 28 17:33:38 2019     modify_timestamp: Wed Aug 28 17:33:38 2019

(7)如果要删除父镜像快照,先去保护,然后删除

[root@node140 /]# rbd snap unprotect rbd/rbd_copy1@snap_for_clone [root@node140 /]# rbd snap rm rbd/rbd_copy1@snap_for_clone Removing snap: 100% complete...done.

注释:引用《ceph分布式存储学习指南》进行学习和实践

转载请标明出处:(6)ceph RBD 复制
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!