ceph中rbd的增量備份和恢復
ceph中rbd的增量備份和恢復
ceph的文檔地址:
在調研OpenStack中虛機的備份和恢復時,發現OpenStack和ceph緊密結合,使用ceph做OpenStack的後端簡直是不要太爽,於是調研了使用ceph中的塊設備rbd來對虛機進行增量備份和恢復。以下是虛機備份和恢復的實驗步驟:
1. 前言:
快照的功能一般是基於時間點做一個標記,然後在某些需要的時候,將狀態恢復到標記的那個點,這個有一個前提是底層的數據沒有破壞,舉個簡單的例子,Vmware 裏面對虛擬機做了一個快照,然後做了一些系統的操作,想恢復快照,前提是存儲快照的存儲系統沒用破壞,一旦破壞了是無法恢復的。
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做後端,在創建實例時,需要選擇一個系統盤,系統盤即是我們的目標數據盤。
備份實驗步驟:
- 創建虛機。
- 在時間點v1對虛機打快照。
- 導出從開始創建image到快照v1那個時間點的差異數據,可以視為全量備份。
- 使用dd命令寫入文件test.txt
- 在時間點v2對虛機打快照。
- 導出從開始創建image到快照v2那個時間點的差異數據,可以視為全量備份。
- 導出了從v1快照時間點到v2快照時間點的差異數據,可以視為增量備份。
上文實驗過程的數據:
v1時間點數據 + v1_v2之間數據 = v2 時間點數據
虛機的備份
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_v1
3. 寫入文件
dd
寫入文件,以此显示出v1和v2之間的數據變化,並沒有其他作用。
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做一個基礎快照,然後導出這個快照的數據,然後設置每天定時做快照,導出快照時間點之間的數據,這樣每天導出來的就是一個增量的數據了。
設置循環周期,比如三天為一個周期。每三天循環一次,自動刪除三天前的備份。
恢復:
從第一個快照導入,然後按照順序導入增量的快照即可。
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】
※帶您來了解什麼是 USB CONNECTOR ?
※平板收購,iphone手機收購,二手筆電回收,二手iphone收購-全台皆可收購
※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象
※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!
※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化
※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益