RBD回收站机制(TRASH)

回收站就是将你的数据放在回收站,失常的 rbd image 一旦删除了就没了,然而ceph rbd 提供了回收站形式给你反悔的机会,能够自定义设置保留日期.
  • 创立镜像
rbd create ceph-demo/ceph-trash.img --size 10G[root@node-1 ~]# rbd -p ceph-demo lsceph-trash.imgrbd-demo.img
  • 将镜像挪动到回收站回收后pool下将没有这个镜像
rbd trash move ceph-demo/ceph-trash.img --expires-at 20200928--expires-at 设置指定的过期日期#查看回收站镜像[root@node-1 ~]# rbd trash -p ceph-demo ls16173ad6a4dc ceph-trash.img
  • 还原镜像
[root@node-1 ~]# rbd trash restore  ceph-demo/16173ad6a4dc[root@node-1 ~]# rbd -p ceph-demo lsceph-trash.imgrbd-demo.img

RBD镜像快照(SNAPSHOTS)

快照是映像在某个特定工夫点的一份只读正本。 Ceph 块设施的一个高级个性就是你能够为映像创立快照来保留其历史。 Ceph 还反对分层快照,让你疾速、简便地克隆映像(如 VM 映像)。 Ceph 的快照性能反对 rbd 命令和多种高级接口,包含 QEMU 、 libvirt 、 OpenStack 和 CloudStack.
  • 创立快照
rbd snap create ceph-demo/rbd-demo.img@snap_20200927#查看快照[root@node-1 ~]# rbd snap ls ceph-demo/rbd-demo.imgSNAPID NAME          SIZE   PROTECTED TIMESTAMP                     4 snap_20200927 20 GiB           Sun Sep 27 10:40:17 2020
  • 快照复原
[root@node-1 ~]# rbd snap rollback ceph-demo/rbd-demo.img@snap_20200927Rolling back to snapshot: 100% complete...done.

快照复原后数据仍然还是不存在的,因为复原后磁盘是离线状态,须要unmount而后从新挂载数据能够复原。

  • 删除快照
[root@node-1 ~]# rbd snap remove ceph-demo/rbd-demo.img@snap_20200927Removing snap: 100% complete...done.#查看快照已删除

RBD镜像克隆机制

RBD 反对image快照技术,快照能够保留image的状态历史 ,RBD image 快照只须要保留大量的快照元数据信息,其底层数据 i/o 的实现齐全依 赖于RADOS快照实现,数据对象克隆生成快照对象的COW(copy-on-write)性能实现,云厂商也基于COW过程对RBD客户端而言齐全不感知,RADOS层依据RBD客户端发动的数据对象 I/O 所携带的 SnapContext 信息决定是否要进行COW操作。

RBD 快照是创立于特定工夫点的RBD镜像的只读正本,RBD快照应用写时复制(COW)技术来最大水平缩小所需的存储空间所谓写时复制即快照并没有真正的复制原文件,而只是对原文件的一个援用

  • 创立镜像模板并爱护模板
rbd snap create ceph-demo/rbd-demo.img@template[root@node-1 ~]# rbd snap ls ceph-demo/rbd-demo.imgSNAPID NAME     SIZE   PROTECTED TIMESTAMP                     6 template 20 GiB           Sun Sep 27 10:58:37 2020rbd snap protect ceph-demo/rbd-demo.img@template#测试快照是否能够删除[root@node-1 ~]# rbd snap rm ceph-demo/rbd-demo.img@templateRemoving snap: 2020-09-27 11:00:08.251 7f969c484c80 -1 librbd::Operations: snapshot is protected0% complete...failed.rbd: snapshot 'template' is protected from removal.
  • 镜像克隆
rbd  clone ceph-demo/rbd-demo.img@template ceph-demo/vm1-clone.img[root@node-1 ~]# rbd -p ceph-demo lsceph-trash.imgrbd-demo.imgvm1-clone.img[root@node-1 ~]# rbd info ceph-demo/vm1-clone.imgrbd image 'vm1-clone.img':    size 20 GiB in 5120 objects    order 22 (4 MiB objects)    snapshot_count: 0    id: 17402e7eef15    block_name_prefix: rbd_data.17402e7eef15    format: 2    features: layering    op_features:     flags:     create_timestamp: Sun Sep 27 11:04:47 2020    access_timestamp: Sun Sep 27 11:04:47 2020    modify_timestamp: Sun Sep 27 11:04:47 2020    parent: ceph-demo/rbd-demo.img@template    overlap: 20 GiB# 能够查看其应用的那个父镜像

能够发现克隆的十分快,这利用rbd的COW(copy-on-write)性能实现,云厂商也基于COW这样能够做到速度十分的快,而且很省空间,然而毛病是当快照模板损坏时,基于其创立的镜像都回损坏,所以有时咱们须要勾销他的依赖关系,但这样会破费更多的工夫和更多的磁盘资源。

  • 解除镜像模板父子依赖关系
# 查看基于快照模板创立的镜像[root@node-1 ~]# rbd children ceph-demo/rbd-demo.img@templateceph-demo/vm1-clone.image#勾销模板依赖[root@node-1 ~]# rbd flatten  ceph-demo/vm1-clone.imageImage flatten: 4% complete...

RBD备份与复原

Ceph 提供了一些个性和接口, 能够让咱们很不便地实现 集群的备份与复原. 一种是 通过集群镜像, 能够做到实时备份, 然而这个对网络要求比拟高, 运行一个镜像集群资源耗费也比拟大. 还有一种就是通过 RBD 的快照技术, 实现对 RBD 的数据备份与复原,基于快照的备份是实现在ceph集群外部的,然而当整个ceph集群损坏后,仍然无奈复原所以须要在集群内部实现备份。
  • 导出快照
#创立快照rbd snap create ceph-demo/rbd-demo.img@snap-demo#导出快照[root@node-1 ~]# rbd export ceph-demo/rbd-demo.img@snap-demo  /root/rbd-demo.imgExporting image: 100% complete...done.
  • 复原镜像
[root@node-1 ~]# rbd import rbd-demo.img ceph-demo/rbd-demo-test.imgImporting image: 8% complete...## 从新挂载将会复原数据,能够通过这中办法做ceph集群迁徙
  • 增量备份
rbd export-diff ceph-demo/rbd-demo.img@snap-demo  /root/rbd-demo-test.img将增量文件导入全备文件中rbd import-diff rbd-demo-test.img ceph-demo/rbd-demo-test.img.img