zoukankan      html  css  js  c++  java
  • CEPH集群RBD快照创建、恢复、删除、克隆(转)

     Ceph支持一个非常好的特性,以COW(写时复制)的方式从RBD快照创建克隆,在Ceph中被称为快照分层。分层特性允许用户创建多个CEPH RBD克隆实例。这些特性应用于OpenStack等云平台中

    ,使用快照形式保护ceph RBD 镜像,快照是只读的,但COW克隆是完全可以写 ,可以多次来孵化实例,对云平台来说是非常有用的。

        Ceph RBD镜像有format-1  和 format-2两种类型,RBD支持这两种类型,但是分层特性COW克隆特性只支持format-2镜像,默认RBD创建的镜像是format-1。

    ceph snap几个主要命令

    ceph snap create (snap add)      Create a snapshot.

        snap list (snap ls)         Dump list of image snapshots.

        snap protect                Prevent a snapshot from being deleted.

        snap purge                  Deletes all snapshots.

        snap remove (snap rm)       Deletes a snapshot.

        snap rename                 Rename a snapshot.

        snap rollback (snap revert) Rollback image to snapshot.

        snap unprotect              Allow a snapshot to be deleted.

    一、创建RBD镜像实例:

    1、在pool1上创建一个RBD镜像,不使用-p <pool name>默认在rbd存储池上创建,默认是M

    [root@node2 ~]# rbd create rbd1 -p pool1 --size 1024 --image-format 1

    rbd: image format 1 is deprecated

    查看创建结果,使用-p指定存储池

    [root@node2 ~]# rbd list -p pool1

    rbd1

    [root@node2 ~]# rbd info --image pool1/rbd1

    rbd image ‘rbd1‘:

        size 5120 MB in 1280 objects

        order 22 (4096 kB objects)

        block_name_prefix: rb.0.15d23.238e1f29

        format: 1

    2、映射块设备

    [root@node2 ~]# rbd map --image pool1/rbd1

    /dev/rbd3

     

     查看映射的块设备

    [root@node2 ~]# rbd showmapped

    id pool  image         snap device   

    0  rbd   block-device1 -    /dev/rbd0

    1  rbd   block-device3 -    /dev/rbd1

    2  rbd   block-device4 -    /dev/rbd2

    3  pool1 rbd1          -    /dev/rbd3

     

    3、挂载文件系统使用

    [root@node2 ~]# mkfs.xfs /dev/rbd3

    meta-data=/dev/rbd3              isize=256    agcount=9, agsize=162816 blks

             =                       sectsz=512   attr=2, projid32bit=1

             =                       crc=0        finobt=0

    data     =                       bsize=4096   blocks=1310720, imaxpct=25

             =                       sunit=1024   swidth=1024 blks

    naming   =version 2              bsize=4096   ascii-ci=0 ftype=0

    log      =internal log           bsize=4096   blocks=2560, version=2

             =                       sectsz=512   sunit=8 blks, lazy-count=1

    realtime =none                   extsz=4096   blocks=0, rtextents=0

    [root@node2 ~]# mkdir /mnt/rbd3

    [root@node2 ~]# mount /dev/rbd3 /mnt/rbd3

    [root@node2 ~]# mount | grep rbd3

    /dev/rbd3 on /mnt/rbd3 type xfs (rw,relatime,attr2,inode64,sunit=8192,swidth=8192,noquota)

    [root@node2 ~]# touch /mnt/rbd3/test

    [root@node2 ~]# ls /mnt/rbd3/

    test

    4、创建快照

    [root@node2 ~]# rbd snap create pool1/rbd1@snapshot1

    [root@node2 ~]# rbd snap ls pool1/rbd1

    SNAPID NAME         SIZE

         4 snapshot1 5120 MB

    5、在rbd3目录下创建文件test1

    [root@node2 ~]# touch /mnt/rbd3/test1

    [root@node2 ~]# ls /mnt/rbd3/

    test  test1

    6、恢复rbd1的快照

    [root@node2 ~]# rbd snap rollback pool1/rbd1@snapshot1

    Rolling back to snapshot: 100% complete...done.

    语法:rbd snap rollback <pool-name>/<image-name>@<snap-name> 

    7、重新挂载文件系统,发现已经恢复到之前的状态了

    [root@node2 ~]# umount /mnt/rbd3

    [root@node2 ~]# mount /dev/rbd3 /mnt/rbd3/

    [root@node2 ~]# ls /mnt/rbd3/

    test

    [root@node2 ~]#

    8、不再使用镜像时可以删除掉镜像

    [root@node2 ~]# rbd snap rm pool1/rbd1@snapshot1

    [root@node2 ~]# rbd snap ls pool1/rbd1

    语法:rbd snap rm <pool-name>/<image-name>@<snap-name>

    9、删除多个快照

    [root@node2 ~]# rbd snap purge pool1/rbd1

    语法:rbd snap purge <pool-name>/<image-name>

    二、使用RBD克隆

    创建rbd2,类型为format2的RBD镜像

    [root@node2 ~]# rbd create rbd2 --size 10240 --image-format 2

    [root@node2 ~]# rbd info --image rbd2

    rbd image ‘rbd2‘:

        size 10240 MB in 2560 objects

        order 22 (4096 kB objects)

        block_name_prefix: rbd_data.15821238e1f29

        format: 2

        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

        flags:

    创建RBD镜像快照

    [root@node2 ~]# rbd snap create rbd/rbd2@snapshot1

    [root@node2 ~]# rbd snap ls rbd/rbd2

    SNAPID NAME          SIZE

         7 snapshot1 10240 MB

    创建COW镜像前先要保护这个快照,这是非常重要的一步

    [root@node2 ~]# rbd snap protect rbd/rbd2@snapshot1

    通过快照创建一个克隆的RBD镜像

    [root@node2 ~]# rbd clone rbd/rbd2@snapshot1 rbd/clone_rbd2

    [root@node2 ~]# rbd info --image rbd/clone_rbd2

    rbd image ‘clone_rbd2‘:

        size 10240 MB in 2560 objects

        order 22 (4096 kB objects)

        block_name_prefix: rbd_data.15c1b3d1b58ba

        format: 2

        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

        flags:

        parent: rbd/rbd2@snapshot1

        overlap: 10240 MB

    创建克隆好了一个依赖于父镜像快照的RBD镜像后,为了让这个克隆的RBD镜像独立于父镜像,我们需要将父镜像的信息合并flattern到子镜像,一旦合并完成,RBD镜像和它的父镜像就不会存在任何关系了。

    使用flatten合并

    [root@node2 ~]# rbd flatten rbd/clone_rbd2

    Image flatten: 100% complete...done.

    合并完成后,查看这个镜像信息,发现父镜像/快照名字不存大了

    [root@node2 ~]# rbd info --image clone_rbd2

    rbd image ‘clone_rbd2‘:

        size 10240 MB in 2560 objects

        order 22 (4096 kB objects)

        block_name_prefix: rbd_data.15c1b3d1b58ba

        format: 2

        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

        flags:

    [root@node2 ~]#

    如果你不再使用父镜像,可以先移除它的保护状态,再删除它

    [root@node2 ~]# rbd snap unprotect rbd/rbd2@snapshot1

    [root@node2 ~]# rbd snap rm rbd/rbd2@snapshot1

    本文出自 “技术成就梦想” 博客,请务必保留此出处http://andyliu.blog.51cto.com/518879/1856669

  • 相关阅读:
    基于jquery 的插件,让IE支持placeholder属性
    MongoDB入门_MongoDB安装与配置
    MongoDB入门_MongoDB特色
    MongoDB入门_相关网站
    MongoDB入门_学习目标
    Shell编程
    redis数据类型及基本命令
    redis配置文件详解
    redis命令
    安装运行redis
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/6692491.html
Copyright © 2011-2022 走看看