文章目录
- 1.RBD块存储的离线备份机制
- 2.RBD块存储的备份导出操作
- 2.1.为RBD块存储设备创建一个快照
- 2.2.基于快照文件备份到本地系统
- 2.3.基于块设备备份到本地系统
- 3.RBD块存储的备份还原导入操作
- 4.RBD块存储的增量备份与增量还原
- 4.1.增量备份的操作
- 4.2.增量备份的还原操作
1.RBD块存储的离线备份机制
在前面是通过快照的形式备份RBD块存储设备的,但是快照只能在集群内部进行使用,当整个集群出现故障时,快照还原将无法使用,另外如果想将数据迁移到另一个Ceph集群,快照也是无法实现的,因此就有了RBD存储的离线备份。
离线备份就与传统的备份一样了,将RBD的数据导出成本地的某个文件,数据丢失时,可以直接还原。
RBD的备份可以基于块设备备份,也可以基于块设备的快照进行备份,建议使用基于快照进行导出的备份。
RBD的离线备份是靠RBD块设备的导入导出来实现的。
RBD块设备导入导出常应用于数据迁移、数据备份的场景。
2.RBD块存储的备份导出操作
RBD备份可以基于快照备份也可以基于块设备进行备份。
2.1.为RBD块存储设备创建一个快照
[root@ceph-node-1 ~]# rbd snap create pool-test/rbd-storage.img@rbd-storage-backup
[root@ceph-node-1 ~]# rbd snap ls pool-test/rbd-storage.img
SNAPID NAME SIZE PROTECTED TIMESTAMP 8 rbd-storage-backup 10 GiB Sat Apr 9 19:47:56 2022
2.2.基于快照文件备份到本地系统
命令参数:rbd export {块设备名称|快照名称} {本地路径}
[root@ceph-node-1 ~]# rbd export pool-test/rbd-storage.img@rbd-storage-backup /root/snap-rbd-storage-backup.img
Exporting image: 100% complete...done.
2.3.基于块设备备份到本地系统
[root@ceph-node-1 ~]# rbd export pool-test/rbd-storage.img /root/rbd-storage-bak.img
Exporting image: 100% complete...done.
3.RBD块存储的备份还原导入操作
当块设备的数据丢失时,可以通过备份在本地的备份文件进行还原,只需要将备份文件导入到集群中,即可实现还原。
导入集群时为了不覆盖现有的块设备,建议将块设备重新命名。
命令格式:rbd import {备份文件名称} {块设备名称}
1.基于快照的备份还原
[root@ceph-node-1 ~]# rbd import /root/snap-rbd-storage-backup.img pool-test/rbd-storage-20220409.img
Importing image: 100% complete...done.2.基于块设备的备份还原
[root@ceph-node-1 ~]# rbd import /root/rbd-storage-bak.img pool-test/rbd-storage-20220409.img#二者还原一样,只不过导出的文件命名不同而已,两种备份方法都可以。3.还原导入成功
[root@ceph-node-1 ~]# rbd -p pool-test ls
ceph-trash.img
rbd-storage-20220409.img
rbd-storage.img
vm1-clone.img
vm2-clone.img#此时就可以将导入的块设备映射成磁盘,寻找丢失的文件即可。
备份的文件不一定非以img命名,以tar.gz命名也可以,只是一个后缀而已。
[root@ceph-node-1 ~]# rbd export pool-test/rbd-storage.img /root/rbd-storage-img.tar.gz
Exporting image: 100% complete...done.[root@ceph-node-1 ~]# rbd import /root/rbd-storage-img.tar.gz pool-test/rbd-storage-202204091.img
Importing image: 100% complete...done.
4.RBD块存储的增量备份与增量还原
在前面,是直接将整个块设备进行备份和还原的,长期下来,数据量会很大,磁盘的增长速度也会很快,RBD块存储的导入导出功能还提供了增量机制,可以通过增量导入导出,只将变化的数据进行备份导出,还原时,需要先还原一个全量的备份,然后根据增量的周期,一个一个的还原到集群中。
4.1.增量备份的操作
1)首先在块设备中写入新的文件
[root@ceph-node-1 ~]# touch /media/new_file{1..5}
[root@ceph-node-1 ~]# sync
2)对当前状态的块设备做一次快照
[root@ceph-node-1 ~]# rbd snap create pool-test/rbd-storage.img@zl-v1
[root@ceph-node-1 ~]# rbd snap ls pool-test/rbd-storage.img
SNAPID NAME SIZE PROTECTED TIMESTAMP 8 rbd-storage-backup 10 GiB Sat Apr 9 19:47:56 2022 9 zl-v1 10 GiB Sat Apr 9 20:14:00 2022
3)对快照进行增量备份
命令格式:rbd export-diff {快照名称} {备份文件名称}
[root@ceph-node-1 ~]# rbd export-diff pool-test/rbd-storage.img@zl-v1 /root/rbd-storage-zl-v1.img
Exporting image: 100% complete...done.
4.2.增量备份的还原操作
命令格式:rbd import-diff {备份文件名称} {块设备名称}
1)还原数据到新的块设备
1.首先还原一个全量备份
[root@ceph-node-1 ~]# rbd import /root/rbd-storage-img.tar.gz pool-test/rbd-storage-new.img
Importing image: 100% complete...done.2.然后再还原增量的备份
[root@ceph-node-1 ~]# rbd import-diff /root/rbd-storage-zl-v1.img pool-test/rbd-storage-new.img
Importing image diff: 100% complete...done.
2)将块设备映射成裸磁盘并挂载到文件系统观察数据。
1.禁用不支持的特性
[root@ceph-node-1 ~]# rbd feature disable pool-test/rbd-storage-new.img object-map fast-diff deep-flatten2.映射成磁盘
[root@ceph-node-1 ~]# rbd device map pool-test/rbd-storage-new.img
/dev/rbd23.挂载到文件系统
[root@ceph-node-1 ~]# mount /dev/rbd2 /mnt/new-data4.观察数据是否完整
[root@ceph-node-1 ~]# ls /mnt/new-data
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 lost+found new_file1 new_file2 new_file3 new_file4 new_file5
全量数据和增量数据都在,数据完整。