4321 发表于 2016-9-27 08:45:04

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存储池上创建
# rbd create rbd1 -p pool1 --size 5G --image-format 1
rbd: image format 1 is deprecated

查看创建结果,使用-p指定存储池
# rbd list -p pool1
rbd1
# 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、映射块设备
# rbd map --image pool1/rbd1
/dev/rbd3

查看映射的块设备
# rbd showmapped
id poolimage         snap device   
0rbd   block-device1 -    /dev/rbd0
1rbd   block-device3 -    /dev/rbd1
2rbd   block-device4 -    /dev/rbd2
3pool1 rbd1          -    /dev/rbd3

3、挂载文件系统使用
# 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

# mkdir /mnt/rbd3
# mount /dev/rbd3 /mnt/rbd3
# mount | grep rbd3
/dev/rbd3 on /mnt/rbd3 type xfs (rw,relatime,attr2,inode64,sunit=8192,swidth=8192,noquota)
# touch /mnt/rbd3/test
# ls /mnt/rbd3/
test

4、创建快照
# rbd snap create pool1/rbd1@snapshot1
# rbd snap ls pool1/rbd1
SNAPID NAME         SIZE
   4 snapshot1 5120 MB

5、在rbd3目录下创建文件test1
# touch /mnt/rbd3/test1
# ls /mnt/rbd3/
testtest1

6、恢复rbd1的快照
# rbd snap rollback pool1/rbd1@snapshot1
Rolling back to snapshot: 100% complete...done.
语法:rbd snap rollback <pool-name>/<image-name>@<snap-name>

7、重新挂载文件系统,发现已经恢复到之前的状态了
# umount /mnt/rbd3
# mount /dev/rbd3 /mnt/rbd3/
# ls /mnt/rbd3/
test
#

8、不再使用镜像时可以删除掉镜像
# rbd snap rm pool1/rbd1@snapshot1
# rbd snap ls pool1/rbd1
语法:rbd snap rm <pool-name>/<image-name>@<snap-name>

9、删除多个快照
# rbd snap purge pool1/rbd1
语法:rbd snap purge <pool-name>/<image-name>

二、使用RBD克隆
创建rbd2,类型为format2的RBD镜像
# rbd create rbd2 --size 10240 --image-format 2
# 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镜像快照
# rbd snap create rbd/rbd2@snapshot1
# rbd snap ls rbd/rbd2
SNAPID NAME          SIZE
   7 snapshot1 10240 MB

创建COW镜像前先要保护这个快照,这是非常重要的一步
# rbd snap protect rbd/rbd2@snapshot1
通过快照创建一个克隆的RBD镜像

# rbd clone rbd/rbd2@snapshot1 rbd/clone_rbd2
# 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合并
# rbd flatten rbd/clone_rbd2
Image flatten: 100% complete...done.

合并完成后,查看这个镜像信息,发现父镜像/快照名字不存大了
# 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:
#

如果你不再使用父镜像,可以先移除它的保护状态,再删除它
# rbd snap unprotect rbd/rbd2@snapshot1
# rbd snap rm rbd/rbd2@snapshot1

页: [1]
查看完整版本: CEPH集群RBD快照创建、恢复、删除、克隆