ceph的文檔地址:Ceph Documentation後端
在調研OpenStack中虛機的備份和恢復時,發現OpenStack和ceph緊密結合,使用ceph作OpenStack的後端簡直是不要太爽,因而調研了使用ceph中的塊設備rbd來對虛機進行增量備份和恢復。如下是虛機備份和恢復的實驗步驟:code
快照的功能通常是基於時間點作一個標記,而後在某些須要的時候,將狀態恢復到標記的那個點,這個有一個前提是底層的數據沒有破壞,舉個簡單的例子,Vmware 裏面對虛擬機作了一個快照,而後作了一些系統的操做,想恢復快照,前提是存儲快照的存儲系統沒用破壞,一旦破壞了是沒法恢復的。blog
ceph也有快照功能,一樣,在這裏的快照是用來保存存儲系統上的狀態的,數據的快照能成功恢復的前提是存儲系統是好的,而一旦存儲系統壞了,快照同時會失效的,因此最好是可以將數據備份下來。本篇博客主要是調研使用ceph的rbd命令來對存儲設備進行基於快照的增量備份。文檔
ceph osd pool ls
rbd ls --pool pool_name 例子 rbd ls --pool volumes
rbd snap create {pool-name}/{image-name}@{snap-name} 例如 rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1
rbd snap ls {pool-name}/{image-name} 例如: rbd snap ls volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3
rbd create --size {pool-name}/{image-name}
以ceph作後端,在建立實例時,須要選擇一個系統盤,系統盤便是咱們的目標數據盤。get
備份實驗步驟:博客
上文實驗過程的數據:虛擬機
v1時間點數據 + v1_v2之間數據 = v2 時間點數據io
rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1
rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1 testimage_v1
這個命令是導出了從開始建立image到快照v1那個時間點的差別數據導出來了testimage_v1,導出成本地文件testimage_v1test
dd
寫入文件,以此顯示出v1和v2之間的數據變化,並無其餘做用。import
rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2
rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2 testimage_v2
這個命令是導出了從開始建立image到快照v2那個時間點的差別數據導出來了testimage_v2,導出成本地文件testimage_v2
增量備份(第二次和第一次的差別文件):
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時間狀態
上述實驗是全量恢復和增量恢復的兩種狀態。下文將詳細總結項目中增量備份和恢復的使用過程。
首先隨便建立一個image,名稱大小都不限制,由於後面恢復的時候會覆蓋掉大小的信息
rbd create --size 2048 backups/testbacknew
直接基於v2的時間點的快照作恢復
rbd import-diff testimage_v2 rbd/testbacknew
直接基於v1的時間點的數據,和後面的增量的v1_v2數據(要按順序導入)
rbd import-diff testimage_v1 backups/testbacknew rbd import-diff testimage_v1_v2 backups/testbacknew
實際項目當中就是,按期作快照,而後導出某個時間點快照的數據,而後導出增量的快照的數據,就能夠了
在實際項目中使用就是,按期作快照,而後導出某個時間點快照的數據,而後導出增量的快照的數據。
例如:
備份:
對全部的rbd的image作一個基礎快照,而後導出這個快照的數據,而後設置天天定時作快照,導出快照時間點之間的數據,這樣天天導出來的就是一個增量的數據了。
設置循環週期,好比三天爲一個週期。每三天循環一次,自動刪除三天前的備份。
恢復:
從第一個快照導入,而後按照順序導入增量的快照便可。