ceph 快照,克隆,cow

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    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
    #查看快照
    [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
    
    

     

转载于:https://my.oschina.net/wangzilong/blog/1595081

你可能感兴趣的:(ceph 快照,克隆,cow)