RBD镜像复制20190815-连长Q629412693

出于示范的目的,首先创建一个RBD_format-2类型的RBD镜像,然后创建它的快照,保护它的快照 ,最后使用该快照创建一个COW副本 。
1)查看RBD镜像
    [root@localhost ~]#  rbd showmapped
    id pool image     snap device    
    1  rbd  foo_image -    /dev/rbd1 
2)创建RBD_format-2类型的RBD镜像:
    # rbd create RBD_RBD_format-2 --size 50 --image-format 2

    [root@localhost ~]#  rbd showmapped
        id pool image     snap device    
        1  rbd  foo_image -    /dev/rbd1 
        
    [root@localhost ~]# rbd create RBD_RBD_format-2 --size 50 --image-format 2
    
    [root@localhost ~]#  rbd showmapped
        id pool image     snap device    
        1  rbd  foo_image -    /dev/rbd1 
        
    [root@localhost ~]# rbd --image RBD_RBD_format-2 info
        rbd image 'RBD_RBD_format-2':
        size 51200 kB in 13 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.121fb2ae8944a
        format: 2
        features: layering
        flags: 
3)创建该 RBD 镜像的快照:
    # rbd snap create rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one
    
    [root@localhost ~]#  rbd snap ls rbd/RBD_RBD_format-2 #查看镜像快照
        SNAPID NAME                                    SIZE 
            20 snapshot_RBD_RBD_format-2_for_c1one 51200 kB 
            
4)要创建COW副本,先要将快照置于保护状态。这是个重要的步骤。我们应该保护该快照 , 因为如果该快照被删除,所有连接到它的COW副本都将被销毁 :
    # rbd snap protect rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one
    
5) 复制快照需要父存储池、RBD镜像以及快照的名称。对于子实例来说, 它需要池以及RBD镜像的名称。
        语法是 rbd clone /@ / 。 实际执行的命令如下 :
        # rbd clone rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one rbd/RBD_RBD_format-2-child
            
6)创建副本速度非常快。创建完成后,查看新镜像的信息 。 你会发现它的父池、镜像,以及快照的信息都会显示出来 。
    # rbd --pool rbd --image RBD_RBD_format-2-child info    
    
    root@localhost ~]# rbd clone rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one rbd/RBD_RBD_format-2-child
    [root@localhost ~]# rbd --pool rbd --image RBD_RBD_format-2-child info
    rbd image 'RBD_RBD_format-2-child':
        size 51200 kB in 13 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.12204238e1f29
        format: 2
        features: layering
        flags: 
        parent: rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one
        overlap: 51200 kB
        
        [root@localhost ~]# rbd ls #罗列块设备映射
            foo_image
            RBD_RBD_format-2
            RBD_RBD_format-2-child

7)至此,你已经有了一个克隆出来的 RBD 镜像,它基于其父镜像的快照 。 要让这个复制的 RBD 镜像不依赖于它的父镜像,需要扁平化( flatten )该镜像,其巾会从父镜像的快照中
复制数据到子镜像中 。 扁平化过程所需要的时间与父镜像中的数据大小相关 。 扁平化过程完成后,复制的 RBD 镜像与它的父镜像快照之间就没有任何依赖了 。 下面我们来实际地执行这个扁平化操作 。
    a)首先使用下列命令启动化扁平化:
    # rbd flatten rbd/RBD_RBD_format-2-child
    b)rbd --pool rbd --image RBD_RBD_format-2-child info
    扁平化完成后 ,如果查看该镜像的信息,你将会看到它的父镜像/快照的名字消失了.    这就使得该复制的镜像变成了 一个独立的镜像 。
    
    [root@localhost ~]# rbd --pool rbd --image RBD_RBD_format-2-child info
        rbd image 'RBD_RBD_format-2-child':
            size 51200 kB in 13 objects
            order 22 (4096 kB objects)
            block_name_prefix: rbd_data.12204238e1f29
            format: 2
            features: layering
            flags: 
            parent: rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one
            overlap: 51200 kB
    [root@localhost ~]# rbd flatten rbd/RBD_RBD_format-2-child
        Image flatten: 100% complete...done.
    [root@localhost ~]# rbd --pool rbd --image RBD_RBD_format-2-child info
        rbd image 'RBD_RBD_format-2-child':
            size 51200 kB in 13 objects
            order 22 (4096 kB objects)
            block_name_prefix: rbd_data.12204238e1f29
            format: 2
            features: layering
            flags: 
    2)如果不再需要父镜像的快照,也可以删除它 。 在删除它之前,首先需要使用下列命令解除保护状态 。
        # rbd snap unprotect rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one
    3)快照处于非保护状态后 ,就可以使用下列命令删除它 :
    # rbd snap rm rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one
    [root@localhost ~]# rbd snap unprotect rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one
    [root@localhost ~]# rbd snap rm rbd/RBD_RBD_format-2@snapshot_RBD_RBD_format-2_for_c1one    
    [root@localhost ~]# rbd ls
    foo_image
    RBD_RBD_format-2
    RBD_RBD_format-2-child
    [root@localhost ~]# rbd snap ls rbd/RBD_RBD_format-2
    [root@localhost ~]# 
                
    


    
 

你可能感兴趣的:(RBD镜像复制20190815-连长Q629412693)