文章目錄
- 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
全量數據和增量數據都在,數據完整。