ceph中rbd的增量備份和恢復

ceph中rbd的增量備份和恢復

ceph的文檔地址:Ceph Documentation後端

​ 在調研OpenStack中虛機的備份和恢復時,發現OpenStack和ceph緊密結合,使用ceph作OpenStack的後端簡直是不要太爽,因而調研了使用ceph中的塊設備rbd來對虛機進行增量備份和恢復。如下是虛機備份和恢復的實驗步驟:code

1. 前言:

快照的功能通常是基於時間點作一個標記,而後在某些須要的時候,將狀態恢復到標記的那個點,這個有一個前提是底層的數據沒有破壞,舉個簡單的例子,Vmware 裏面對虛擬機作了一個快照,而後作了一些系統的操做,想恢復快照,前提是存儲快照的存儲系統沒用破壞,一旦破壞了是沒法恢復的。blog

​ ceph也有快照功能,一樣,在這裏的快照是用來保存存儲系統上的狀態的,數據的快照能成功恢復的前提是存儲系統是好的,而一旦存儲系統壞了,快照同時會失效的,因此最好是可以將數據備份下來。本篇博客主要是調研使用ceph的rbd命令來對存儲設備進行基於快照的增量備份。文檔

2. ceph中rbd的經常使用命令:

2.1列出存儲池

ceph osd pool ls

2.2 查看存儲池的內容

rbd ls --pool pool_name
例子
rbd ls --pool volumes

2.3 打快照

rbd snap create {pool-name}/{image-name}@{snap-name}
例如
rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1

2.4 羅列快照

rbd snap ls {pool-name}/{image-name}
例如:
rbd snap ls volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3

2.5 建立image

rbd create --size {pool-name}/{image-name}

3. Nova實例的備份與恢復

以ceph作後端,在建立實例時,須要選擇一個系統盤,系統盤便是咱們的目標數據盤。get

備份實驗步驟:博客

  1. 建立虛機。
  2. 在時間點v1對虛機打快照。
  3. 導出從開始建立image到快照v1那個時間點的差別數據,能夠視爲全量備份。
  4. 使用dd命令寫入文件test.txt
  5. 在時間點v2對虛機打快照。
  6. 導出從開始建立image到快照v2那個時間點的差別數據,能夠視爲全量備份。
  7. 導出了從v1快照時間點到v2快照時間點的差別數據,能夠視爲增量備份。

上文實驗過程的數據:虛擬機

v1時間點數據 + v1_v2之間數據 = v2 時間點數據io

虛機的備份

1. 實例第一次快照:

rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1

2. 第一次全量備份:

rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1 testimage_v1

這個命令是導出了從開始建立image到快照v1那個時間點的差別數據導出來了testimage_v1,導出成本地文件testimage_v1test

3. 寫入文件

dd

寫入文件,以此顯示出v1和v2之間的數據變化,並無其餘做用。import

4. 實例第二次快照

rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2

5. 第二次全量備份:

rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2  testimage_v2

這個命令是導出了從開始建立image到快照v2那個時間點的差別數據導出來了testimage_v2,導出成本地文件testimage_v2

6. 增量備份

增量備份(第二次和第一次的差別文件):

rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2 --from-snap v1 testimage_v1_v2

這個命令是導出了從v1快照時間點到v2快照時間點的差別數據,導出成本地文件testimage_v1_v2

注意:

rbd export-diff rbd/testimage testimage_now

這個是導出了從image建立到當前的時間點的差別數據。

虛機恢復

虛機的恢復過程使用的是剛剛上面提到的備份到本地的那些文件。

1.建立塊設備映像

2.將testimage_v1融入塊設備,恢復v1時間的狀態

3.將testimage_v2融入塊設備,恢復v2時間狀態

4.在2基礎上將v1_v2融入塊設備,恢復至v2時間狀態

上述實驗是全量恢復和增量恢復的兩種狀態。下文將詳細總結項目中增量備份和恢復的使用過程。

1. 建立塊設備映像image

首先隨便建立一個image,名稱大小都不限制,由於後面恢復的時候會覆蓋掉大小的信息

rbd create --size 2048 backups/testbacknew

2. 基於v2的時間點的快照作恢復

2.1 基於V2恢復

直接基於v2的時間點的快照作恢復

rbd import-diff testimage_v2 rbd/testbacknew
2.2 基於v1+ v1_v2數據恢復

直接基於v1的時間點的數據,和後面的增量的v1_v2數據(要按順序導入)

rbd import-diff testimage_v1 backups/testbacknew
rbd import-diff testimage_v1_v2 backups/testbacknew

​ 實際項目當中就是,按期作快照,而後導出某個時間點快照的數據,而後導出增量的快照的數據,就能夠了

4. 實際使用

​ 在實際項目中使用就是,按期作快照,而後導出某個時間點快照的數據,而後導出增量的快照的數據。

例如:

備份:

​ 對全部的rbd的image作一個基礎快照,而後導出這個快照的數據,而後設置天天定時作快照,導出快照時間點之間的數據,這樣天天導出來的就是一個增量的數據了。

​ 設置循環週期,好比三天爲一個週期。每三天循環一次,自動刪除三天前的備份。

恢復:

​ 從第一個快照導入,而後按照順序導入增量的快照便可。

相關文章
相關標籤/搜索