转载 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

 

  

  

05-28 23:02