(6)ceph RBD 複製

Ceph 存儲集羣能夠從RBD的快照中建立寫時複製 (COW 副本),這就是 Ceph 的快照分層。 Ceph 的這個分層特性容許客戶端建立 Ceph RBD 的多個即時副本, 這個特性對雲平臺和虛擬化平臺很是有 ,例如 OpenStack 、CloudStack 和Qemu/ KVM 這些平臺一般'以快照的形式保護含有 OS/VM 鏡像的Ceph RBD 鏡像 ,而後經過不斷複製這個快照來建立新的虛擬機 /實例 ,快照是隻讀的,可是 COW 副本則是徹底可寫的; Ceph 的這個特性爲雲平臺帶來巨大的靈活性,而且對於雲平臺很是有用,下圖顯示了 RADOS 塊設備、 RBD 快照和COW 快照副本之間的關係。node

每個複製的鏡像(子鏡像)都包含它的父快照的引用,用於讀取鏡像數據。 所以,父快照在用於復 制以前應該處於被保護狀態。當有數據寫入COW 複製的鏡像時,它會爲本身存儲新的數據引用。 COW 複製的鏡像與 RBD是一 樣的。分佈式

它們都很是靈活,相似於 RBD ,也就是說,它們可寫, 可調整容量,能夠建立新的快照,未來還能夠複製。
(6)ceph  RBD 複製ide

RBD 鏡像的類型定義了它所支持的特性,在Ceph 中,有兩種 類型的RBD 鏡像:format-l和 form t-2, format-l和 format-2 類型的 RBD 鏡像 都支持快 照特性。然而,分層特性( 也就是 COW 特性)只有 format-2 類型 RBD 鏡像支持, RBD 鏡像 默認類型是format-l。學習

(1)首先建立一個format2類型的RBD鏡像,而後建立快照,保護快照,最後使用該快照建立一個COW副本。code

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

(2)建立該鏡像的快照orm

[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_cloneblog

(4)複製快照須要父存儲池,RBD鏡像及快照的名稱。
[root@node140 /]# rbd clone rbd/rbd_copy1@snap_for_clone rbd/rbd_copy2虛擬機

(5)建立副本速度很是快,建立完成後,查看新鏡像的信息,發現他的父池、鏡像,以及快照的信息都會顯示出來。it

[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鏡像,基於其父鏡像的快照,但如今不是獨立的,還依賴於父鏡像,要不依賴於父鏡像,須要扁平化該鏡像,其中會從父鏡像的快照中複製數據到子鏡像中。扁平化過程所須要的時間域鏡像中的數據大小相同,扁平化事後無任何依賴,徹底獨立。ast

[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分佈式存儲學習指南》進行學習和實踐

相關文章
相關標籤/搜索