轉載 https://my.oschina.net/wangzilong/blog/1595081
ceph 快照,克隆
ceph是一個非常好的后端存儲系統。其中包括最常用的塊存儲,對象存儲,文件系統。下面我們就說說用的最多的塊存儲。
塊存儲的原理和機制大家都了解,但是快存儲也是支持快照和克隆的。
1、快照
ceph的快照是把源鏡像做一個只讀副本,以后用於恢復。
[root@ceph-admin ceph]# rbd ls test_pool7 testRBD test_rbd7 test_rbd_clone7 [root@ceph-admin ceph]# rbd info test_pool7/testRBD rbd image 'testRBD': size 1024 MB in 256 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.e3bcda74b0dc51 format: 2 features: layering flags:
2、克隆
這里主要講的是可以基於快照鏡像克隆,克隆所采用的也就是cow,叫做copy on write 俗話也叫做“寫時復制”,更貼切一點叫做“寫時再復制”。這里的克隆就是基於快照創建的克隆只創建了映射到源(這里的源也就是快照)的邏輯,還沒有給克隆分配真實的物理空間。這一點相信大家都理解。雖然快照是只讀的,但是基於快照創建的克隆是可讀可寫的。當我們對克隆的鏡像執行寫操作的時候,系統才會真正的給克隆的鏡像分配物理空間。克隆的鏡像或者被寫過的克隆鏡像都是可以正常使用的和鏡像本身是一樣的。這就是所謂的cow。當對克隆的鏡像沒有寫而是讀的時候,那么讀取的是要被克隆的快照,明白了上面的道理所以我們知道從快照克隆的鏡像是依賴於快照的,一旦快照被刪除則這個克隆鏡像也就毀了,所以我們要保護好這個快照。
#創建快照 [root@ceph-admin ceph]# rbd snap create test_pool7/testRBD@testRBD-snap---也就是testRBD鏡像的副本 #查看快照 [root@ceph-admin ceph]# rbd snap list test_pool7/testRBD SNAPID NAME SIZE 7 testRBD-snap 1024 MB #創建快照的克隆 [root@ceph-admin ceph]# rbd clone test_pool7/testRBD@testRBD-snap test_pool7/testRBD-snap-clone----對快照進行克隆 2017-12-26 14:05:48.941845 7fe1f4082d80 -1 librbd: parent snapshot must be protected rbd: clone error: (22) Invalid argument # 上面報錯了,告訴你快照創建克隆之前需要被保護-------這個錯誤提醒的很對,要不提醒的 # 保護快照 [root@ceph-admin ceph]# rbd snap protect test_pool7/testRBD@testRBD-snap-----對快照進行保護 # 創建克隆 [root@ceph-admin ceph]# rbd clone test_pool7/testRBD@testRBD-snap test_pool7/testRBD-snap-clone-----再對快照進行克隆 #查看克隆 [root@ceph-admin ceph]# rbd ls test_pool7|grep clone|grep RBD testRBD-snap-clone #查看克隆的詳細信息 [root@ceph-admin ceph]# rbd info test_pool7/testRBD-snap-clone rbd image 'testRBD-snap-clone': size 1024 MB in 256 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.e3f94a2ae8944a format: 2 features: layering flags: parent: test_pool7/testRBD@testRBD-snap overlap: 1024 MB
我們可以看到克隆成功的鏡像是依賴於快照的,能看到 parent,overlap
如果不想被依賴於快照,需要對克隆和快照做一個合並
[root@ceph-admin ceph]# rbd flatten test_pool7/testRBD-snap-clone---對克隆進行合並 Image flatten: 100% complete...done. [root@ceph-admin ceph]# rbd info test_pool7/testRBD-snap-clone rbd image 'testRBD-snap-clone': size 1024 MB in 256 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.e3f94a2ae8944a format: 2 features: layering flags:
現在克隆的鏡像已經不依賴於快照了,看不見parent和overlap
現在我們刪除快照是可以的
# 解除快照保護 [root@ceph-admin ceph]# rbd snap unprotect test_pool7/testRBD@testRBD-snap #刪除快照 [root@ceph-admin ceph]# rbd snap rm test_pool7/testRBD@testRBD-snap