09 RDB 高级功能

RDB 回收机制

ceph RBD 默认提供回收站机制 trash,也就是我们可以把块数据放在回收站,在回收站中保持一定的存储周期,当我们后期还需要使用的时候可以在回收站在拿回来。

同样,在公有云也有硬盘的回收站,作用和 RBD 回收站类似,当我们后不确定是否后期还会使用,回收站会为我们保留一定时间的周期

到期 7 天后仍未续费的云硬盘,会在回收站中保留 7 天,这期间您可以续费进行恢复。7 天后,这些云硬盘会被彻底释放,不可恢复。

回收站有两个好处

  • 可以有效的防止误删除操作 (正常情况下数据就会销毁掉了,但是有了回收站,数据是存放在回收站中)
  • 还有一种情况多发生的云存储中,例如我们的服务器忘记续费,过期后默认情况下是直接被释放了,但是有了回收站,数据就会在回收站在为我们保留一段时间

RDB 直接删除

# 新建一个 RDB 块
[root@node0 ceph-deploy]# rbd create ceph-demo/ceph-trash.img --size 10G

# 查看 RDB 块信息
[root@node0 ceph-deploy]# rbd info ceph-demo/ceph-trash.img
rbd image 'ceph-trash.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 14ba472ea35d9
        block_name_prefix: rbd_data.14ba472ea35d9
        format: 2
        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
        op_features: 
        flags: 
        create_timestamp: Tue Nov  1 17:04:06 2022
        access_timestamp: Tue Nov  1 17:04:06 2022
        modify_timestamp: Tue Nov  1 17:04:06 2022

# 查看 RDB 信息
[root@node0 ceph-deploy]# rbd -p ceph-demo ls
ceph-trash.img  # 新创建的 RDB 快
crush-demo.img
rdb-demo.img

# 直接删除 RDB 块
[root@node0 ceph-deploy]# rbd rm ceph-demo/ceph-trash.img
Removing image: 100% complete...done.

# 查看 RDB 信息,没有 ceph-trash.img 块信息
[root@node0 ceph-deploy]# rbd -p ceph-demo ls
crush-demo.img
rdb-demo.img

# 查看 RDB 回收站信息,无数据
[root@node0 ceph-deploy]# rbd -p ceph-demo trash ls

RDB 放入回收站

# 新建一个 RDB 块
[root@node0 ceph-deploy]# rbd create ceph-demo/ceph-trash.img --size 10G

# 查看 rbd trash move 命令帮助信息
[root@node0 ceph-deploy]# rbd help trash move 
usage: rbd trash move [--pool <pool>] [--namespace <namespace>] 
                      [--image <image>] [--expires-at <expires-at>] 
                      <image-spec> 

Move an image to the trash.

Positional arguments
  <image-spec>            image specification
                          (example: [<pool-name>/[<namespace>/]]<image-name>)

Optional arguments
  -p [ --pool ] arg       pool name
  --namespace arg         namespace name
  --image arg             image name
  --expires-at arg (=now) set the expiration time of an image so it can be
                          purged when it is stale

# RDB 放入回收站,并设置过期时间 20221103
[root@node0 ceph-deploy]# rbd trash move ceph-demo/ceph-trash.img --expires-at 20221103

# 查看 RDB 信息
[root@node0 ceph-deploy]# rbd -p ceph-demo ls
crush-demo.img
rdb-demo.img

# 查看 RDB 回收站信息
[root@node0 ceph-deploy]# rbd -p ceph-demo trash ls
14bdab3117858 ceph-trash.img

RDB 数据还原

# 查看 RDB 回收站信息
[root@node0 ceph-deploy]# rbd -p ceph-demo trash ls
14bdab3117858 ceph-trash.img

# 查看 rbd trash restore 命令帮助信息
[root@node0 ceph-deploy]# rbd help trash restore
usage: rbd trash restore [--pool <pool>] [--namespace <namespace>] 
                         [--image-id <image-id>] [--image <image>] 
                         <image-id> 

Restore an image from trash.

Positional arguments
  <image-id>           image id
                       (example: [<pool-name>/]<image-id>)

Optional arguments
  -p [ --pool ] arg    pool name
  --namespace arg      namespace name
  --image-id arg       image id
  --image arg          image name

# 从回收站还原数据信息
[root@node0 ceph-deploy]# rbd trash restore -p ceph-demo 14bdab3117858

# 查看 RDB 信息
[root@node0 ceph-deploy]# rbd -p ceph-demo ls
ceph-trash.img  # 数据已还原
crush-demo.img
rdb-demo.img

RDB 镜像制作快照

和云硬盘一样,RBD 也是支持快照的功能,对某个时刻的 RBD 文件进行保留生成快照。

RBD 是块存储基于文件系统上的,我们在生成快照时需要确保文件系统正常。否则生成的快照也出现损坏

制作快照准备

# 新建一个 RDB 块
[root@node0 ceph-deploy]# rbd create ceph-demo/rbd-test.img --image-feature layering --size 10G

# 查看 RDB 信息
[root@node0 ceph-deploy]# rbd -p ceph-demo ls
ceph-trash.img
crush-demo.img
rbd-test.img    # 新建 RDB 块
rdb-demo.img

# 查看 RDB 块信息
[root@node0 ceph-deploy]# rbd info ceph-demo/rbd-test.img
rbd image 'rbd-test.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 14c288be2e51
        block_name_prefix: rbd_data.14c288be2e51
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov  1 17:25:26 2022
        access_timestamp: Tue Nov  1 17:25:26 2022
        modify_timestamp: Tue Nov  1 17:25:26 2022

# 挂载 RDB 块信息
[root@node0 ceph-deploy]# rbd device map ceph-demo/rbd-test.img
/dev/rbd0

# 初始化块设备
[root@node0 ceph-deploy]# mkfs.ext4 /dev/rbd0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1024 blocks, Stripe width=1024 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

# 挂载磁盘到 media 目录
[root@node0 ceph-deploy]# mount /dev/rbd0 /media/

# 新建测试文件测试
[root@node0 ceph-deploy]# cd /media/
[root@node0 media]# ls
lost+found

[root@node0 media]# echo "evescn" > test.txt
[root@node0 media]# ls
lost+found  test.txt

[root@node0 media]# cat test.txt 
evescn

# 同步信息到磁盘
[root@node0 media]# sync

制作快照

# 制作快照
[root@node0 media]# rbd snap create ceph-demo/rbd-test.img@snap_20221101

# 查看快照
[root@node0 media]# rbd snap ls ceph-demo/rbd-test.img
SNAPID NAME          SIZE   PROTECTED TIMESTAMP                
     4 snap_20221101 10 GiB           Tue Nov  1 17:30:18 2022

RDB 快照数据恢复

当我们做好备份后,后续有需求需要回滚。 可以通过下面的命令进行回滚操作。

将 rbd 文件恢复到之前创建好快照的位置

删除数据

[root@node0 media]# rm -f test.txt 
[root@node0 media]# ls
lost+found

快照恢复

建议恢复快照的时候,停止对磁盘访问,比如关闭服务器或者临时卸载 RDB 磁盘

# 使用快照回滚
[root@node0 media]# rbd snap rollback ceph-demo/rbd-test.img@snap_20221101
Rolling back to snapshot: 100% complete...done.

# 回滚后发现文件没有恢复,此时需要重新挂载下 磁盘信息,建议使用快照恢复时,先卸载 RDB 磁盘
[root@node0 media]# ls
lost+found

# 重新挂载磁盘
[root@node0 ceph-deploy]# umount /media
[root@node0 ceph-deploy]# rbd device ls
id pool      namespace image        snap device    
0  ceph-demo           rbd-test.img -    /dev/rbd0 
[root@node0 ceph-deploy]# mount /dev/rbd0 /media/

# 再次验证信息,test.txt 文件已恢复,文件内容 OK
[root@node0 ceph-deploy]# cd /media/
[root@node0 media]# ls
lost+found  test.txt
[root@node0 media]# cat test.txt 
evescn

删除快照命令

# 格式和创建的格式相同,命令替换为remove (相当于rm)  
[root@node0 media]# rbd snap remove ceph-demo/rbd-test.img@snap_20221101
Removing snap: 100% complete...done.

[root@node0 media]# rbd snap ls ceph-demo/rbd-test.img

# 如果镜像没有在使用了,可以通过purge直接删除所有快照  
[root@node0 media]# rbd snap purge ceph-demo/rbd-test.img  
Removing all snapshots: 100% complete...done.  

[root@node0 media]# rbd snap ls ceph-demo/rbd-test.img

RDB 镜像克隆机制

Ceph 支持为块设备快照创建许多写时复制 COW 克隆。快照分层使 Ceph 块设备客户端能够非常快速的创建映射。例如,我们创建一个块设备镜像,其中写入一个 Linux;然后对镜像进行快照、保护快照并创建写时克隆。快照是只读的,写入将写入到新的位置--进行快速克隆

  • 完整克隆
  • 快速克隆 (快速克隆使用的就是写时复制)

每个克隆镜像子级存储对父级镜像为引用作用,子级会读取父级别的数据

parent 代表镜像父级

Child 代表克隆的子级

COW 克隆和 Ceph 块设备完全相同,可以进行读取、写入和调整镜像大小。克隆镜像没用特殊限制。但是,写时复制克隆是指快照,因此必须在克隆快照之前对其保护

Ceph 目前只支持 format 2 镜像的克隆,内核 rbd create --image-format 2 还不支持。rbd 因此必须使用 QEMU/KVM 或者 librbd 直接访问版本中的克隆

RBD 分层概念

Ceph 块设备分层是一个简单的过程,首先我们必须创建镜像的快照,并且需要保护快照,保护完成就可以开始克隆快照

克隆的镜像有对父快照的引用,包括池 ID、镜像 ID 和快照 ID。

1.镜像模板: 块设备分层的一个常见用例是创建一个主镜像和一个用做克隆模板的快照。

2.扩展模板: 提供比基础镜像更多的信息,例如用户可以克隆镜像并按照其他软件,然后对扩展镜像进行快照,该扩展镜像本身可以更新就像基本镜像一样

3.模板池: 使用块设备分层的一个方法是创建一个 pool,其中包含充当模板的主镜像以及这些模板的快照。然后可以将只读权限扩展到用户,以便可以直接克隆快照,但是无法在池中写入和执行

4.镜像迁移/恢复: 使用块设备分层的一个方法是将数据从一个 pool 迁移或者恢复到另一个 pool 中

RBD 创建快照

[root@node0 media]# rbd snap create ceph-demo/rbd-test.img@template
[root@node0 media]# rbd snap ls ceph-demo/rbd-test.img
SNAPID NAME     SIZE   PROTECTED TIMESTAMP                
     6 template 10 GiB           Tue Nov  1 18:01:18 2022 

快照保护

如果用户不小心删除了父快照,所有的克隆都会终端。为了防止克隆的镜像丢失,必须保护快照才可以进行克隆

# protect 创建快照保护
[root@node0 media]# rbd snap protect ceph-demo/rbd-test.img@template

# rm 删除快照,测试是否可以正常删除
[root@node0 media]# rbd snap rm ceph-demo/rbd-test.img@template
Removing snap: 2022-11-01 18:02:35.581 7fe062d42c80 -1 librbd::Operations: snapshot is protected
0% complete...failed.
rbd: snapshot 'template' is protected from removal.

取消保护,如果我们想取消保护,可以通过 unprotect 参数

[root@node0 media]# rbd snap unprotect ceph-demo/xxx.img@template  

快照 clone

# 快速创建3个 clone 磁盘
[root@node0 media]# rbd clone ceph-demo/rbd-test.img@template ceph-demo/vm1-clone.img
[root@node0 media]# rbd clone ceph-demo/rbd-test.img@template ceph-demo/vm2-clone.img
[root@node0 media]# rbd clone ceph-demo/rbd-test.img@template ceph-demo/vm3-clone.img

# 查看 RDB 信息
[root@node0 media]# rbd -p ceph-demo ls
ceph-trash.img
crush-demo.img
rbd-test.img
rdb-demo.img
vm1-clone.img
vm2-clone.img
vm3-clone.img

# 查看 vm1-clone.img 块信息
[root@node0 media]# rbd -p ceph-demo info vm1-clone.img
rbd image 'vm1-clone.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 14cc7fa778cf7
        block_name_prefix: rbd_data.14cc7fa778cf7
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov  1 18:03:55 2022
        access_timestamp: Tue Nov  1 18:03:55 2022
        modify_timestamp: Tue Nov  1 18:03:55 2022
        parent: ceph-demo/rbd-test.img@template     # 父镜像
        overlap: 10 GiB

挂载 clone 的 RDB 磁盘查看数据信息

# 挂载磁盘
[root@node0 media]# rbd device map ceph-demo/vm1-clone.img
/dev/rbd1
[root@node0 media]# mount /dev/rbd1 /mnt

# 查看磁盘信息
[root@node0 media]# cd /mnt/
[root@node0 mnt]# ls
lost+found  test.txt
[root@node0 mnt]# cat test.txt 
evescn

RDB 解除依赖关系

解除 clone 出来的镜像和 template 镜像的依赖关系,删除 temp 模板镜像后也不影响 clone 出来的镜像使用

使用 flatten 取消依赖关系,抽离了依赖关系后,clone 的镜像就是独立的镜像,但会占用更多的空间

查看快照下面创建的镜像

# 查看 快照 clone 出来的 RDB 磁盘信息
[root@node0 mnt]# rbd -h | grep chil
    children                          Display children of an image or its
    clone                             Clone a snapshot into a CoW child image.

# 查看 children 命令帮助
[root@node0 mnt]# rbd help children
usage: rbd children [--pool <pool>] [--namespace <namespace>] 
                    [--image <image>] [--snap <snap>] [--snap-id <snap-id>] 
                    [--all] [--descendants] [--format <format>] 
                    [--pretty-format] 
                    <image-or-snap-spec> 

Display children of an image or its snapshot.

Positional arguments
  <image-or-snap-spec>  image or snapshot specification
                        (example:
                        [<pool-name>/[<namespace>/]]<image-name>[@<snap-name>])

Optional arguments
  -p [ --pool ] arg     pool name
  --namespace arg       namespace name
  --image arg           image name
  --snap arg            snapshot name
  --snap-id arg         snapshot id
  -a [ --all ]          list all children (include trash)
  --descendants         include all descendants
  --format arg          output format (plain, json, or xml) [default: plain]
  --pretty-format       pretty formatting (json and xml)

# 查看 ceph-demo/rbd-test.img@template clone 出来的 RDB 磁盘
[root@node0 mnt]# rbd children ceph-demo/rbd-test.img@template
ceph-demo/vm1-clone.img
ceph-demo/vm2-clone.img
ceph-demo/vm3-clone.img

解除快照和镜像的绑定关系

# 查看解除绑定命令帮助
[root@node0 mnt]# rbd help flatten
usage: rbd flatten [--pool <pool>] [--namespace <namespace>] [--image <image>] 
                   [--no-progress] 
                   <image-spec> 

Fill clone with parent data (make it independent).

Positional arguments
  <image-spec>         image specification
                       (example: [<pool-name>/[<namespace>/]]<image-name>)

Optional arguments
  -p [ --pool ] arg    pool name
  --namespace arg      namespace name
  --image arg          image name
  --no-progress        disable progress output

# 解除 ceph-demo/vm1-clone.img 和 ceph-demo/rbd-test.img@template 的依赖
[root@node0 mnt]# rbd flatten ceph-demo/vm1-clone.img
Image flatten: 100% complete...done.

# 查看信息,已经没有 parent 信息
[root@node0 mnt]# rbd info ceph-demo/vm1-clone.img
rbd image 'vm1-clone.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 14cc7fa778cf7
        block_name_prefix: rbd_data.14cc7fa778cf7
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov  1 18:03:55 2022
        access_timestamp: Tue Nov  1 18:03:55 2022
        modify_timestamp: Tue Nov  1 18:03:55 2022

# 解除 ceph-demo/vm2-clone.img 和 ceph-demo/rbd-test.img@template 的依赖
[root@node0 mnt]# rbd flatten ceph-demo/vm2-clone.img
Image flatten: 100% complete...done.
[root@node0 mnt]# rbd info ceph-demo/vm2-clone.img
rbd image 'vm2-clone.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 14cd0bdcdf111
        block_name_prefix: rbd_data.14cd0bdcdf111
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov  1 18:04:02 2022
        access_timestamp: Tue Nov  1 18:04:02 2022
        modify_timestamp: Tue Nov  1 18:04:02 2022

# 不解除 ceph-demo/vm3-clone.img 的依赖,查看信息
[root@node0 mnt]# rbd info ceph-demo/vm3-clone.img
rbd image 'vm3-clone.img':
        size 10 GiB in 2560 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 14cd9c67305e7
        block_name_prefix: rbd_data.14cd9c67305e7
        format: 2
        features: layering
        op_features: 
        flags: 
        create_timestamp: Tue Nov  1 18:04:05 2022
        access_timestamp: Tue Nov  1 18:04:05 2022
        modify_timestamp: Tue Nov  1 18:04:05 2022
        parent: ceph-demo/rbd-test.img@template     # RDB 磁盘关联的依赖父快照信息
        overlap: 10 GiB

删除模版快照

# 解除 ceph-demo/vm3-clone.img 和 ceph-demo/rbd-test.img@template 的依赖
[root@node0 mnt]# rbd flatten ceph-demo/vm3-clone.img
Image flatten: 100% complete...done.

# 取消 ceph-demo/rbd-test.img@template 快照的保护标记
[root@node0 mnt]# rbd snap unprotect ceph-demo/rbd-test.img@template

# 删除模版快照
[root@node0 mnt]# rbd snap rm ceph-demo/rbd-test.img@template
Removing snap: 100% complete...done.

# 查看 RDB DEVICE 映射信息
[root@node0 mnt]# rbd device ls
id pool      namespace image         snap device    
0  ceph-demo           rbd-test.img  -    /dev/rbd0 
1  ceph-demo           vm1-clone.img -    /dev/rbd1 

# 查看 RDB 信息
[root@node0 mnt]# rbd -p ceph-demo ls
ceph-trash.img
crush-demo.img
rbd-test.img
rdb-demo.img
vm1-clone.img
vm2-clone.img
vm3-clone.img

RDB 备份与恢复

RBD 备份分为两种,一种是全备,另外一个是增量备份

防止 ceph 集群坏掉,快照都无法正常使用的情况出现,需要离线备份,异地备份等

用于数据恢复或者数据迁移等场景

RDB 创建快照

[root@node0 ceph-deploy]# rbd snap create ceph-demo/rbd-test.img@snap-demo
[root@node0 ceph-deploy]# rbd snap ls ceph-demo/rbd-test.img
SNAPID NAME      SIZE   PROTECTED TIMESTAMP                
     8 snap-demo 10 GiB           Wed Nov  2 09:57:25 2022 

RDB 数据备份

# 查看 export 导出数据命令帮助
[root@node0 ceph-deploy]# rbd help export
usage: rbd export [--pool <pool>] [--namespace <namespace>] [--image <image>] 
                  [--snap <snap>] [--path <path>] [--no-progress] 
                  [--export-format <export-format>] 
                  <source-image-or-snap-spec> <path-name> 

Export image to file.

Positional arguments
  <source-image-or-snap-spec>  source image or snapshot specification
                               (example:
                               [<pool-name>/[<namespace>/]]<image-name>[@<snap-n
                               ame>])
  <path-name>                  export file (or '-' for stdout)

Optional arguments
  -p [ --pool ] arg            source pool name
  --namespace arg              source namespace name
  --image arg                  source image name
  --snap arg                   source snapshot name
  --path arg                   export file (or '-' for stdout)
  --no-progress                disable progress output
  --export-format arg          format of image file


# 备份数据
[root@node0 ceph-deploy]# mkdir rdb
[root@node0 ceph-deploy]# rbd export ceph-demo/rbd-test.img@snap-demo ./rdb/rdb-test.img
Exporting image: 100% complete...done.
[root@node0 ceph-deploy]# ls ./rdb/ -lh
total 84M
-rw-r--r-- 1 root root 10G Nov  2 10:11 rdb-test.img

数据删除,模拟数据丢失

[root@node0 ceph-deploy]# cd /media/
[root@node0 media]# ls
lost+found  test.txt
[root@node0 media]# rm ./test.txt -rf

RDB 数据恢复

# 查看数据盘挂载,卸载 RDB 磁盘挂载
[root@node0 ceph-deploy]# df 
Filesystem              1K-blocks    Used Available Use% Mounted on
devtmpfs                   919528       0    919528   0% /dev
tmpfs                      931512       0    931512   0% /dev/shm
tmpfs                      931512   41264    890248   5% /run
tmpfs                      931512       0    931512   0% /sys/fs/cgroup
/dev/mapper/centos-root  38770180 2633828  36136352   7% /
/dev/sda1                 1038336  153608    884728  15% /boot
tmpfs                      931512      24    931488   1% /var/lib/ceph/osd/ceph-0
tmpfs                      931512      52    931460   1% /var/lib/ceph/osd/ceph-3
/dev/rbd0                10190100   36892   9612536   1% /media
/dev/rbd1                10190100   36892   9612536   1% /mnt
tmpfs                      186304       0    186304   0% /run/user/0

[root@node0 ceph-deploy]# rbd device ls
id pool      namespace image         snap device    
0  ceph-demo           rbd-test.img  -    /dev/rbd0 
1  ceph-demo           vm1-clone.img -    /dev/rbd1 

[root@node0 ceph-deploy]# umount /media

# 数据恢复
[root@node0 ceph-deploy]# rbd import ./rdb/rdb-test.img ceph-demo/rbd-test-new.img
Importing image: 100% complete...done.
[root@node0 ceph-deploy]# rbd -p ceph-demo ls
ceph-trash.img
crush-demo.img
rbd-test-new.img    # 新恢复的数据
rbd-test.img
rdb-demo.img
vm1-clone.img
vm2-clone.img
vm3-clone.img

# 映射新的 RDB 磁盘
[root@node0 ceph-deploy]# rbd device map ceph-demo/rbd-test-new.img
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable ceph-demo/rbd-test-new.img object-map fast-diff deep-flatten".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address

# 直接映射报错,取消磁盘携带的 feature
[root@node0 ceph-deploy]# rbd feature disable ceph-demo/rbd-test-new.img object-map fast-diff deep-flatten

# 重新映射新的 RDB 磁盘
[root@node0 ceph-deploy]# rbd device map ceph-demo/rbd-test-new.img
/dev/rbd2

# 重新挂载磁盘
[root@node0 ceph-deploy]# r

# 检验数据
[root@node0 ceph-deploy]# cd /media/
[root@node0 media]# ls -l
total 20
drwx------ 2 root root 16384 Nov  1 17:27 lost+found
-rw-r--r-- 1 root root     7 Nov  1 17:28 test.txt
[root@node0 media]# cat test.txt 
evescn

RDB 增量备份与恢复

对于增量备份,常用于 ceph 异地备份,或者 kvm、OpenStack 相关备份。可以减少空间占用大小 可以写成定时脚本,定时基于全备添加增量的备份

rbd-test-new.img 镜像进行快照,并添加增量数据

# 查看 rbd-test-new.img 镜像快照情况
[root@node0 ceph-deploy]# rbd snap ls ceph-demo/rbd-test-new.img

# 创建快照
[root@node0 ceph-deploy]# rbd snap create ceph-demo/rbd-test-new.img@testv1
[root@node0 ceph-deploy]# rbd snap ls ceph-demo/rbd-test-new.img
SNAPID NAME   SIZE   PROTECTED TIMESTAMP                
    15 testv1 10 GiB           Wed Nov  2 14:10:26 2022

# 添加增量数据
[root@node0 ceph-deploy]# cd /media/

[root@node0 media]# ls -l
total 20
drwx------ 2 root root 16384 Nov  1 17:27 lost+found
-rw-r--r-- 1 root root     7 Nov  1 17:28 test.txt

[root@node0 media]# echo gmkk > file2
[root@node0 media]# ls -l
total 24
-rw-r--r-- 1 root root     5 Nov  2 14:10 file2
drwx------ 2 root root 16384 Nov  1 17:27 lost+found
-rw-r--r-- 1 root root     7 Nov  1 17:28 test.txt

[root@node0 media]# sync

# 添加增量数据后自作快照
[root@node0 media]# rbd snap create ceph-demo/rbd-test-new.img@testv2

# 查看 rbd-test-new.img 镜像快照情况
[root@node0 media]# rbd snap ls ceph-demo/rbd-test-new.img
SNAPID NAME   SIZE   PROTECTED TIMESTAMP                
    15 testv1 10 GiB           Wed Nov  2 14:10:26 2022 
    16 testv2 10 GiB           Wed Nov  2 14:11:15 2022 

导出全量快照和增量快照,以便后续数据恢复

[root@node0 media]# cd -
/data/ceph-deploy

# 导出全量快照
[root@node0 ceph-deploy]# rbd export ceph-demo/rbd-test-new.img@testv1 ./rdb/rbd-test-new.img
Exporting image: 100% complete...done.

# 导出增量快照
[root@node0 ceph-deploy]# rbd export-diff ceph-demo/rbd-test-new.img@testv2 ./rdb/rbd-test-new.img@testv2
Exporting image: 100% complete...done.

使用全量+增量快照进行数据恢复

# 使用全量快照恢复
[root@node0 ceph-deploy]# rbd import ./rdb/rbd-test-new.img ceph-demo/rbd-test-new2.img
Importing image: 100% complete...done.

# 追加增量快照数据           
[root@node0 ceph-deploy]# rbd import-diff ./rdb/rbd-test-new.img@testv2 ceph-demo/rbd-test-new2.img
Importing image diff: 100% complete...done.

# 挂载磁盘
[root@node0 ceph-deploy]# rbd feature disable ceph-demo/rbd-test-new2.img object-map fast-diff deep-flatten

[root@node0 ceph-deploy]#  rbd device map ceph-demo/rbd-test-new2.img
/dev/rbd3
[root@node0 ceph-deploy]# mount /dev/rbd3 /opt/

[root@node0 ceph-deploy]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M   41M  870M   5% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root   37G  2.7G   35G   8% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    910M   24K  910M   1% /var/lib/ceph/osd/ceph-0
tmpfs                    910M   52K  910M   1% /var/lib/ceph/osd/ceph-3
tmpfs                    182M     0  182M   0% /run/user/0
/dev/rbd2                9.8G   37M  9.2G   1% /media
/dev/rbd3                9.8G   37M  9.2G   1% /opt

# 查看数据信息
[root@node0 ceph-deploy]# ls /opt/ -lh
total 24K
-rw-r--r-- 1 root root   5 Nov  2 14:10 file2
drwx------ 2 root root 16K Nov  1 17:27 lost+found
-rw-r--r-- 1 root root   7 Nov  1 17:28 test.txt

# 查看新增文本数据信息
[root@node0 ceph-deploy]# cat /opt/file2 
gmkk

RDB 导入导出总结

  • 场景1:VMware 迁移至 openstack
  • 场景2:数据备份,备份至专属备份系统
  • 场景3:最少宕机离线迁移

img

posted @   evescn  阅读(316)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
  1. 1 毛不易
  2. 2 青丝 等什么君(邓寓君)
  3. 3 最爱 周慧敏
  4. 4 青花 (Live) 摩登兄弟刘宇宁/周传雄
  5. 5 怨苍天变了心 葱香科学家(王悠然)
  6. 6 吹梦到西洲 恋恋故人难/黄诗扶/王敬轩(妖扬)
  7. 7 姑娘别哭泣 柯柯柯啊
  8. 8 我会好好的 王心凌
  9. 9 半生雪 七叔-叶泽浩
  10. 10 用力活着 张茜
  11. 11 山茶花读不懂白玫瑰 梨笑笑
  12. 12 赴春寰 张壹ZHANG/Mukyo木西/鹿予/弦上春秋Official
  13. 13 故事终章 程响
  14. 14 沿海独白 王唯一(九姨太)
  15. 15 若把你 越南电音 云音乐AI/网易天音
  16. 16 世间美好与你环环相扣 柏松
  17. 17 愿你如愿 陆七言
  18. 18 多情种 胡杨林
  19. 19 和你一样 李宇春
  20. 20 晚风心里吹 李克勤
  21. 21 世面 黄梓溪
  22. 22 等的太久 杨大六
  23. 23 微醺状态 张一
  24. 24 醉今朝 安小茜
  25. 25 阿衣莫 阿吉太组合
  26. 26 折风渡夜 沉默书生
  27. 27 星河万里 王大毛
  28. 28 满目星辰皆是你 留小雨
  29. 29 老人与海 海鸣威/吴琼
  30. 30 海底 一支榴莲
  31. 31 只要有你 曹芙嘉
  32. 32 兰花指 阿里郎
  33. 33 口是心非 张大帅
  34. 34 爱不得忘不舍 白小白
  35. 35 惊鸿醉 指尖笑
  36. 36 如愿 葱香科学家(王悠然)
  37. 37 晚风心里吹 阿梨粤
  38. 38 惊蛰·归云 陈拾月(只有影子)/KasaYAYA
  39. 39 风飞沙 迪克牛仔
  40. 40 把孤独当做晚餐 井胧
  41. 41 星星点灯 郑智化
  42. 42 客子光阴 七叔-叶泽浩
  43. 43 走马观花 王若熙
  44. 44 沈园外 阿YueYue/戾格/小田音乐社
  45. 45 盗将行 花粥/马雨阳
  46. 46 她的眼睛会唱歌 张宇佳
  47. 47 一笑江湖 姜姜
  48. 48 虎二
  49. 49 人间烟火 程响
  50. 50 不仅仅是喜欢 萧全/孙语赛
  51. 51 你的眼神(粤语版) Ecrolyn
  52. 52 剑魂 李炜
  53. 53 虞兮叹 闻人听書_
  54. 54 时光洪流 程响
  55. 55 桃花诺 G.E.M.邓紫棋
  56. 56 行星(PLANET) 谭联耀
  57. 57 别怕我伤心 悦开心i/张家旺
  58. 58 上古山海经 小少焱
  59. 59 你的眼神 七元
  60. 60 怨苍天变了心 米雅
  61. 61 绝不会放过 王亚东
  62. 62 可笑的孤独 黄静美
  63. 63 错位时空 艾辰
  64. 64 像个孩子 仙屁孩
  65. 65 完美世界 [主题版] 水木年华
  66. 66 我们的时光 赵雷
  67. 67 万字情诗 椒椒JMJ
  68. 68 妖王 浮生
  69. 69 天地无霜 (合唱版) 杨紫/邓伦
  70. 70 塞北殇 王若熙
  71. 71 花亦山 祖娅纳惜
  72. 72 醉今朝 是可乐鸭
  73. 73 欠我个未来 艾岩
  74. 74 缘分一道桥 容云/青峰AomineDaiky
  75. 75 不知死活 子无余/严书
  76. 76 不可说 霍建华/赵丽颖
  77. 77 孤勇者 陈奕迅
  78. 78 让酒 摩登兄弟刘宇宁
  79. 79 红尘悠悠DJ沈念版 颜一彦
  80. 80 折风渡夜 (DJ名龙版) 泽国同学
  81. 81 吹灭小山河 国风堂/司南
  82. 82 等什么君 - 辞九门回忆 张大帅
  83. 83 绝世舞姬 张曦匀/戚琦
  84. 84 阿刁(无修音版|live) 张韶涵网易云资讯台
  85. 85 往事如烟 蓝波
  86. 86 清明上河图 李玉刚
  87. 87 望穿秋水 坤坤阿
  88. 88 太多 杜宣达
  89. 89 小阿七
  90. 90 霞光-《精灵世纪》片尾曲 小时姑娘
  91. 91 放开 爱乐团王超
  92. 92 醉仙美 娜美
  93. 93 虞兮叹(完整版) 黎林添娇kiki
  94. 94 单恋一枝花 夏了个天呐(朴昱美)/七夕
  95. 95 一个人挺好 (DJ版) 69/肖涵/沈子凡
  96. 96 一笑江湖 闻人听書_
  97. 97 赤伶 李玉刚
  98. 98 达拉崩吧 (Live) 周深
  99. 99 等你归来 程响
  100. 100 责无旁贷 阿悠悠
  101. 101 你是人间四月天(钢琴弹唱版) 邵帅
  102. 102 虐心 徐良/孙羽幽
  103. 103 大天蓬 (女生版) 清水er
  104. 104 赤伶 是二智呀
  105. 105 有种关系叫知己 刘大壮
  106. 106 怎随天下 王若熙
  107. 107 有人 赵钶
  108. 108 海底 三块木头
  109. 109 有何不可 许嵩
  110. 110 大天蓬 (抖音版) 璐爷
  111. 111 我吹过你吹过的晚风(翻自 ac) 辛辛
  112. 112 只爱西经 林一
  113. 113 关山酒 等什么君(邓寓君)
  114. 114 曾经的你 年少不川
  115. 115 倔强 五月天
  116. 116 Lydia F.I.R.
  117. 117 爱你 王心凌
  118. 118 杀破狼 哥哥妹妹
  119. 119 踏山河 七叔-叶泽浩
  120. 120 错过的情人 雷婷
  121. 121 你看到的我 黄勇/任书怀
  122. 122 新欢渡旧爱 黄静美
  123. 123 慕容晓晓-黄梅戏(南柯一梦 / 明洋 remix) 南柯一梦/MINGYANG
  124. 124 浮白 花粥/王胜娚
  125. 125 叹郁孤 霄磊
  126. 126 贝加尔湖畔 (Live) 李健
  127. 127 不虞 王玖
  128. 128 麻雀 李荣浩
  129. 129 一场雨落下来要用多久 鹿先森乐队
  130. 130 野狼disco 宝石Gem
  131. 131 我们不该这样的 张赫煊
  132. 132 海底 一支榴莲
  133. 133 爱情错觉 王娅
  134. 134 你一定要幸福 何洁
  135. 135 往后余生 马良
  136. 136 放你走 正点
  137. 137 只要平凡 张杰/张碧晨
  138. 138 只要平凡-小石头和孩子们 小石头和孩子们
  139. 139 红色高跟鞋 (Live) 韩雪/刘敏涛/万茜
  140. 140 明月天涯 五音Jw
  141. 141 华年 鹿先森乐队
  142. 142 分飞 徐怀钰
  143. 143 你是我撞的南墙 刘楚阳
  144. 144 同簪 小时姑娘/HITA
  145. 145 我的将军啊-唯美独特女版 熙宝(陆迦卉)
  146. 146 我的将军啊(女版戏腔) Mukyo木西
  147. 147 口是心非 南柯nanklo/乐小桃
  148. 148 DAY BY DAY (Japanese Ver.) T-ara
  149. 149 我承认我怕黑 雅楠
  150. 150 我要找到你 冯子晨
  151. 151 你的答案 子尧
  152. 152 一剪梅 费玉清
  153. 153 纸船 薛之谦/郁可唯
  154. 154 那女孩对我说 (完整版) Uu
  155. 155 我好像在哪见过你 薛之谦
  156. 156 林中鸟 葛林
  157. 157 渡我不渡她 (正式版) 苏谭谭
  158. 158 红尘来去梦一场 大壮
  159. 159 都说 龙梅子/老猫
  160. 160 산다는 건 (Cheer Up) 洪真英
  161. 161 听说 丛铭君
  162. 162 那个女孩 张泽熙
  163. 163 最近 (正式版) 王小帅
  164. 164 不谓侠 萧忆情Alex
  165. 165 芒种 音阙诗听/赵方婧
  166. 166 恋人心 魏新雨
  167. 167 Trouble Is A Friend Lenka
  168. 168 风筝误 刘珂矣
  169. 169 米津玄師-lemon(Ayasa绚沙 Remix) Ayasa
  170. 170 可不可以 张紫豪
  171. 171 告白の夜 Ayasa
  172. 172 知否知否(翻自 胡夏) 凌之轩/rainbow苒
  173. 173 琵琶行 奇然/沈谧仁
  174. 174 一曲相思 半阳
  175. 175 起风了 吴青峰
  176. 176 胡广生 任素汐
  177. 177 左手指月 古琴版 古琴唐彬/古琴白无瑕
  178. 178 清明上河图 排骨教主
  179. 179 左手指月 萨顶顶
  180. 180 刚刚好 薛之谦
  181. 181 悟空 戴荃
  182. 182 易燃易爆炸 陈粒
  183. 183 漫步人生路 邓丽君
  184. 184 不染 萨顶顶
  185. 185 不染 毛不易
  186. 186 追梦人 凤飞飞
  187. 187 笑傲江湖 刘欢/王菲
  188. 188 沙漠骆驼 展展与罗罗
  189. 189 外滩十八号 男才女貌
  190. 190 你懂得 小沈阳/沈春阳
  191. 191 铁血丹心 罗文/甄妮
  192. 192 温柔乡 陈雅森
  193. 193 似水柔情 王备
  194. 194 我只能爱你 彭青
  195. 195 年轻的战场 张杰
  196. 196 七月七日晴 许慧欣
  197. 197 心爱 金学峰
  198. 198 Something Just Like This (feat. Romy Wave) Anthony Keyrouz/Romy Wave
  199. 199 ブルーバード いきものがかり
  200. 200 舞飞扬 含笑
  201. 201 时间煮雨 郁可唯
  202. 202 英雄一怒为红颜 小壮
  203. 203 天下有情人 周华健/齐豫
  204. 204 白狐 陈瑞
  205. 205 River Flows In You Martin Ermen
  206. 206 相思 毛阿敏
  207. 207 只要有你 那英/孙楠
  208. 208 Croatian Rhapsody Maksim Mrvica
  209. 209 来生缘 刘德华
  210. 210 莫失莫忘 麦振鸿
  211. 211 往后余生 王贰浪
  212. 212 雪见—仙凡之旅 麦振鸿
  213. 213 让泪化作相思雨 南合文斗
  214. 214 追梦人 阿木
  215. 215 真英雄 张卫健
  216. 216 天使的翅膀 安琥
  217. 217 生生世世爱 吴雨霏
  218. 218 爱我就跟我走 王鹤铮
  219. 219 特别的爱给特别的你 伍思凯
  220. 220 杜婧荧/王艺翔
  221. 221 I Am You Kim Taylor
  222. 222 起风了 买辣椒也用券
  223. 223 江湖笑 周华健
  224. 224 半壶纱 刘珂矣
  225. 225 Jar Of Love 曲婉婷
  226. 226 野百合也有春天 孟庭苇
  227. 227 后来 刘若英
  228. 228 不仅仅是喜欢 萧全/孙语赛
  229. 229 Time (Official) MKJ
  230. 230 纸短情长 (完整版) 烟把儿
  231. 231 离人愁 曲肖冰
  232. 232 难念的经 周华健
  233. 233 佛系少女 冯提莫
  234. 234 红昭愿 音阙诗听
  235. 235 BINGBIAN病变 Cubi/多多Aydos
  236. 236 说散就散 袁娅维TIA RAY
  237. 237 慢慢喜欢你 莫文蔚
  238. 238 最美的期待 周笔畅
  239. 239 牵丝戏 银临/Aki阿杰
  240. 240 夜的钢琴曲 K. Williams
野百合也有春天 - 孟庭苇
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Loading

点击右上角即可分享
微信分享提示