关于ceph:cephrbd-高级功能

59次阅读

共计 3297 个字符,预计需要花费 9 分钟才能阅读完成。

RBD 回收站机制 (TRASH)

回收站就是将你的数据放在回收站,失常的 rbd image 一旦删除了就没了,然而 ceph rbd 提供了回收站形式给你反悔的机会, 能够自定义设置保留日期.

  • 创立镜像
rbd create ceph-demo/ceph-trash.img --size 10G
[root@node-1 ~]# rbd -p ceph-demo ls
ceph-trash.img
rbd-demo.img
  • 将镜像挪动到回收站回收后 pool 下将没有这个镜像
rbd trash move ceph-demo/ceph-trash.img --expires-at 20200928
--expires-at 设置指定的过期日期
#查看回收站镜像
[root@node-1 ~]# rbd trash -p ceph-demo ls
16173ad6a4dc ceph-trash.img
  • 还原镜像
[root@node-1 ~]# rbd trash restore  ceph-demo/16173ad6a4dc
[root@node-1 ~]# rbd -p ceph-demo ls
ceph-trash.img
rbd-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.img
SNAPID 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_20200927
Rolling back to snapshot: 100% complete...done.

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

  • 删除快照
[root@node-1 ~]# rbd snap remove ceph-demo/rbd-demo.img@snap_20200927
Removing 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.img
SNAPID NAME     SIZE   PROTECTED TIMESTAMP                
     6 template 20 GiB           Sun Sep 27 10:58:37 2020
rbd snap protect ceph-demo/rbd-demo.img@template
#测试快照是否能够删除
[root@node-1 ~]# rbd snap rm ceph-demo/rbd-demo.img@template
Removing snap: 2020-09-27 11:00:08.251 7f969c484c80 -1 librbd::Operations: snapshot is protected
0% 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 ls
ceph-trash.img
rbd-demo.img
vm1-clone.img
[root@node-1 ~]# rbd info ceph-demo/vm1-clone.img
rbd 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@template
ceph-demo/vm1-clone.image
#勾销模板依赖
[root@node-1 ~]# rbd flatten  ceph-demo/vm1-clone.image
Image 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.img
Exporting image: 100% complete...done.
  • 复原镜像
[root@node-1 ~]# rbd import rbd-demo.img ceph-demo/rbd-demo-test.img
Importing 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

正文完
 0