1 2 3 4 5 6 7
| 作者:李晓辉
联系方式:
1. 微信:Lxh_Chat
2. 邮箱:939958092@qq.com
|
利用 RBD 导出与导入机制,你可以在同一集群中,也可以使用另一独立集群维护拥有完整功能和可访问性的 RBD 镜像操作副本。你可以将这些副本用于各种不同的用例,包括:
利用实际的数据卷测试新版本
利用实际的数据卷运行质量保障流程
实施业务连续性方案
将备份进程从生产块设备分离
RADOS 块设备功能支持导出和导入整个 RBD 镜像,也可以仅导出和导入两个时间点之间的 RBD 镜像变化。
导出RBD镜像
rbd export
命令将 RBD 镜像导出到文件。此命令可以将 RBD 镜像或 RBD 镜像快照导出到指定的目标文件
1 2 3 4
| [root@clienta ~]# rbd export rbdpool/test export.dat Exporting image: 100% complete...done. [root@clienta ~]# ll -h export.dat -rw-r--r--. 1 root root 10G Aug 7 04:14 export.dat
|
导入RBD镜像
Ceph Storage提供了rbd import命令,用于从文件中导入rbd镜像。该命令创建一个test2新镜像
1 2 3 4 5 6
| [root@clienta ~]# rbd import export.dat rbdpool/test2 Importing image: 100% complete...done. [root@clienta ~]# rbd ls -p rbdpool clone1 test test2
|
导出和导入RBD镜像的变化部分
rbd export-diff
和 rbd import-diff
命令来导出和导入在两个时间点之间对 RBD 镜像的变更
端点时间可以是:
起始时间可以是:
如果你指定起始点快照,命令将导出你创建该快照后的更改。如果不指定快照,命令将导出自 RBD 镜像创建之后的所有更改,这与常规的 RBD 镜像导出操作相同。
导出两个快照的不同之处
我们已经有一个包含数据的snap1,我们再向test镜像中写入点内容,然后重做一个新快照
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| [root@clienta ~]# rbd snap ls rbdpool/test SNAPID NAME SIZE PROTECTED TIMESTAMP 10 snap1 10 GiB yes Wed Aug 7 04:06:46 2024 [root@clienta ~]# rbd map rbdpool/test /dev/rbd0 [root@clienta ~]# mount /dev/rbd0 /mnt mount: /mnt: /dev/rbd0 already mounted on /mnt. [root@clienta ~]# dd if=/dev/zero of=/mnt/test2.data bs=10M count=1 1+0 records in 1+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0199916 s, 525 MB/s [root@clienta ~]# ls /mnt lxh test2.data [root@clienta ~]# fsfreeze --freeze /mnt [root@clienta ~]# rbd snap create rbdpool/test@snap2 Creating snap: 100% complete...done. [root@clienta ~]# fsfreeze --unfreeze /mnt [root@clienta ~]# rbd snap ls rbdpool/test SNAPID NAME SIZE PROTECTED TIMESTAMP 10 snap1 10 GiB yes Wed Aug 7 04:06:46 2024 11 snap2 10 GiB Wed Aug 7 04:30:54 2024
|
导出其不同之处,这就相当于做了一个增量备份
导出的是snap1到snap2的增量
1 2 3 4
| [root@clienta ~]# rbd export-diff --from-snap snap1 rbdpool/test@snap2 diff.dat Exporting image: 100% complete...done. [root@clienta ~]# ll -h diff.dat -rw-r--r--. 1 root root 2.3M Aug 7 04:31 diff.dat
|
导入这个增量数据到镜像
不要随便导入这个增量数据,除非你发生了数据丢失,比如snap2不见了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [root@clienta ~]# rbd snap ls rbdpool/test SNAPID NAME SIZE PROTECTED TIMESTAMP 10 snap1 10 GiB yes Wed Aug 7 04:06:46 2024 13 snap2 10 GiB Wed Aug 7 04:33:18 2024 [root@clienta ~]# rbd snap rm rbdpool/test@snap2 Removing snap: 100% complete...done. [root@clienta ~]# rbd snap ls rbdpool/test SNAPID NAME SIZE PROTECTED TIMESTAMP 10 snap1 10 GiB yes Wed Aug 7 04:06:46 2024 [root@clienta ~]# rbd import-diff ./diff.dat rbdpool/test Importing image diff: 100% complete...done. [root@clienta ~]# rbd snap ls rbdpool/test SNAPID NAME SIZE PROTECTED TIMESTAMP 10 snap1 10 GiB yes Wed Aug 7 04:06:46 2024 15 snap2 10 GiB Wed Aug 7 04:33:38 2024
|
合并差异
写入点数据,然后再做一个增量备份
导出的是snap2到实时的增量
1 2 3 4 5
| [root@clienta ~]# touch /mnt/diff2 [root@clienta ~]# ls /mnt/ diff2 lxh test2.data [root@clienta ~]# rbd export-diff --from-snap snap2 rbdpool/test diff2.dat Exporting image: 100% complete...done.
|
合并两次差异
1 2
| [root@clienta ~]# rbd merge-diff diff.dat diff2.dat mergeresult.dat Merging image diff: 100% complete...done.
|
版权声明: 本博客中的内容未经允许不得转载和引用,转载和引用需获得作者同意, 作者微信: Lxh_Chat