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

CEPH集群RBD快照创建、恢复、删除、克隆(转)的更多相关文章

  1. 分布式存储系统之Ceph集群RBD基础使用

    前文我们了解了Ceph集群cephx认证和授权相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16748149.html:今天我们来聊一聊ceph集群的 ...

  2. CEPH-2:rbd功能详解及普通用户应用ceph集群

    ceph集群rbd使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍rbd存储功能如何灵活的使用,集群背景: $ ceph -s cluster: id: 53717 ...

  3. 使用虚拟机CentOS7部署CEPH集群

    第1章   CEPH部署 1.1  简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...

  4. ceph集群部署(基于jewel版)

    环境 两个节点:ceph1.ceph2 ceph1: mon.mds.osd.0.osd.1 ceph2: osd.2.osd.3 网络配置: ceph1: 管理网络,eth0,10.0.0.20 存 ...

  5. Ubuntu 18.04.5 LTS Ceph集群之 cephx 认证及使用普通用户挂载RBD和CephFS

    1.cephx认证和授权 1.1 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证: 1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈 2. MON会返 ...

  6. 删除ceph集群mds

    ceph集群新搭建以后是只有一个默认的存储池rbd的池 ## 创建文件接口集群 1.创建一个元数据池 [root@mytest ~]# ceph osd pool create metadata 20 ...

  7. docker创建ceph集群

    背景 Ceph官方现在提供两类镜像来创建集群,一种是常规的,每一种Ceph组件是单独的一个镜像,如ceph/daemon.ceph/radosgw.ceph/mon.ceph/osd等:另外一种是最新 ...

  8. CEPH集群操作入门--配置

      参考文档:CEPH官网集群操作文档   概述 Ceph存储集群是所有Ceph部署的基础. 基于RADOS,Ceph存储集群由两种类型的守护进程组成:Ceph OSD守护进程(OSD)将数据作为对象 ...

  9. 最新ceph集群常用命令梳理

    结合网络.官网.手动查询等多方渠道,整理ceph维护管理常用命令,并且梳理常规命令在使用过程中的逻辑顺序.另外整理期间发现ceph 集群的命令体系有点乱,详细情况各自体验. 一:ceph集群启动.重启 ...

随机推荐

  1. 如何通过.Net Compact Framework来获得应用程序的当前路径

    在Win CE上是没有驱动器的概念的,所以要想使用System.IO.Directory.GetCurrentDirectory()来获得当前路径的话,在CF中会遇到未知错误.   应该使用Path. ...

  2. web项目中遇到的Maven包依赖冲突问题解决

      在搭建web项目时,出现一个比较诡异的问题,任何JSP页面突然都不能够正常地显示,系统爆出HTTP:500(服务器内部错误)的页面   HTTP Status 500 - java.lang.No ...

  3. 十四 关于interrupt, interrupted, isInterrupted

    1 判断线程是否是停止状态? interrupt() : interrupt方法用于中断线程.调用该方法的线程的状态为将被置为"中断"状态. 注意:线程中断仅仅是置线程的中断状态位 ...

  4. node中的ajax提交小例子

    我们看一个HTML5页面中通过AJAX请求的方式获取HTTP服务器返回数据的代码示例.由于我们把服务器的端口指定为1337,并将从端口为80的网站中运行HTML5页面,因此这是一种跨域操作,需要在HT ...

  5. ThinkPHP 目录结构

    2.0 ThinkPHP 目录结构 在前面的博客中,通过一个简单的案例向大家演示了在ThinkPHP 框架下开发的大致法程,本篇博客将对ThinkPHP框架目录结构进行详细讲解. 要想在项目中熟练地使 ...

  6. SharePoint 事件 7363:对象缓存:缓存使用的超级读者帐户没有足够的权限访问SharePoint数据库。

    转自MSND:http://technet.microsoft.com/zh-cn/library/ff758656(v=office.14) 对象缓存存储 Microsoft SharePoint ...

  7. pandas入门学习

    索引对象 pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等).构建series或DataFrame时,所用到的任何数组或其他序列的标签都会转换成一个index: In [1]: impo ...

  8. Resetting the Root Password Using rd.break for RHEL7

    Start the system and, on the GRUB 2 boot screen, press the e key for edit. Remove the rhgb and quiet ...

  9. C# 生成序号不足补0

    int Num=13 var code =Num.ToString().PadLeft(4, '0'); code:0013

  10. HTTP接口开发专题一(四种常见的 POST 提交数据方式对应的content-type取值)

    application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...