備份數據一致性概念:
首先我們先來了解一下備份一致性的概念:
不一致備份:云服務器中文件或磁盤數據的備份,不在同一時間點產生。
崩潰一致性備份:云服務器中文件或磁盤數據的備份,在同一時間點產生,但不會靜默數據庫等應用系統、不會備份內存數據,不保證應用系統備份的一致性。
應用一致性備份:文件/磁盤數據在同一時間點,并靜默數據庫刷新內存數據,保證應用系統備份的一致性。
應用一致性備份需要在云主機中安裝對應的agent才能實現
工作原理:
友商實現分析:
對一臺虛機進行整機備份時,備份服務對所有云盤發起打快照操作,這樣一組快照會被組織成一個整機的恢復點,這些快照在快照控制臺是可見的。若該虛機所有盤都是ESSD,這些盤會組成一致性快照組后打快照來保障整機的一致性。對于非ESSD云盤,備份服務則是同一時間為每塊盤打快照,實際快照時間點可能會略有差異,不保障所有盤的快照時間點完全相同。
友商有個云盤一性快照組的概念: 一致性快照組
通過創建快照一致性組,您可以為一臺或多臺虛機實例中的多塊云盤同時創建快照。快照一致性組能夠保證在業務系統跨多塊云盤的場景下,數據寫入云盤的時序一致性,并保證其崩潰一致性。
- 業務系統部署在跨虛機實例的集群文件系統中,且要求時序一致性以及崩潰一致性的數據庫或企業級應用的場景。例如,基于虛機自建的MySQL集群,基于多個卷搭建LVM、Oracle、SAP HANA上云場景等。
- 大型項目、多應用協同系統等分布式應用系統所需的統一創建快照的場景。
- 需要對同一地域下多臺虛機實例的云盤數據進行批量備份,且對時序一致性有較高要求的場景。
分析:
針對單臺虛機備份,且對一致性要求不高的場景,可以實現崩潰一致性備份,對虛機先執行凍結IO,再對每一塊盤進行快照。
針對多臺虛機同時進行備份,或者對時序一致性有較高要求的,需要借助ceph的一致性組特性 ,而且需要實現應用一致性
否則,只能建議關機再執行備份。
ceph的一致性組:
一致性組可用于數據保護(快照,備份)和遠程復制(鏡像)。
鏡像支持
將允許在同一個一致性組中設置多個卷的鏡像(即將多個RBD圖像附加到同一個日志以確保一致的重放)。
快照支持
將允許在同一時間點采集同一一致性組中的多個卷的快照,以確保數據一致性。
常用操作:
rbd group create
創建組
rbd group ls [-p | –pool pool-name]
列出組
rbd group image add
添加鏡像到組
rbd group image list
列出組的鏡像
rbd group image remove
從組移除鏡像
rbd group rename
組改名
rbd group rm
刪除組
rbd group snap create
一致性組打快照
rbd group snap list
列出一致性組的快照
rbd group snap rm
刪除一致性組的快照
rbd group snap rename
一致性組改名
rbd group snap rollback
一致性組回滾
實現思路:
基于kubevirt + ceph實現
單臺虛機崩潰一致性備份:
1.新建一個crd,參考VirtualMachineSnapshot邏輯(不能復用VirtualMachineSnapshot,會導致單盤快照依賴整機快照)
2.調用kubevirt接口凍結虛機-》打快照 -》等各個盤快照成功后 -》 解凍虛機 -》快照進行備份
3.整機恢復,默認只恢復掛載在虛機的磁盤,新建一個crd,參考VirtualMachineRestore實現,把整個恢復任務包裝起來
多臺虛機崩潰一致性備份:
1.需要用到ceph 一致性組功能,對多個盤同時創建一致性快照
2.k8s層需要創建新的快照組crd,進行邏輯控制
3.創建一致性組
4. 云盤加入到一致性組-》打快照 -》等各個盤快照成功后 -》快照進行備份
應用一致性備份:
1、開發虛機內部agent,實現邊緣通過虛機agent調用虛機內腳本 (涉及子網訪問,部署等問題)
qemu agent 有對應的接口,可以參考qemu-guest-agent/fsfreeze-hook
2、整機備份需要把虛機的所有云盤加入一致性組
3、調用agent凍結應用 -》 打快照 -》等各個盤快照成功后 -》調用agent解凍應用 -》快照進行備份