內存快照,顧名思義,是包含云主機運行時(shí)內存狀態(tài)的快照。在近期發(fā)布的ZStack Cloud 4.4.24中,新增支持云主機內存快照。該功能主要基于快照組實(shí)現,在快照組已提供磁盤(pán)一致性的基礎上,新增提供應用一致性,進(jìn)一步確保數據完整性。內存快照支持以快照組為單位進(jìn)行恢復,同時(shí)還能額外恢復當時(shí)內存快照中的網(wǎng)卡、光驅等配置。本文主要從技術(shù)實(shí)現出發(fā),帶您深入了解ZStack Cloud內存快照功能。
一 技術(shù)背景
ZStack Cloud內存快照主要基于Libvirt接口實(shí)現,我們可通過(guò)virsh命令的幫助信息了解相關(guān)參數。
1、創(chuàng )建內存快照
從上述命令可見(jiàn),通過(guò)[--disk-only],可創(chuàng )建磁盤(pán)快照;通過(guò)[--memspec]以及[--diskspec],可指定對應的快照類(lèi)型、快照文件名等信息。在指定[memspec]的情況下,Libvirt會(huì )額外執行一段保存云主機運行時(shí)狀態(tài)信息的邏輯(實(shí)際上通過(guò)云主機熱遷移實(shí)現),最終將云主機對應的元數據和運行時(shí)狀態(tài)信息寫(xiě)入到[memspec]指定的文件中。將該機制反推,即可將已保存的云主機運行時(shí)狀態(tài)信息恢復,云主機可恢復到快照創(chuàng )建時(shí)的狀態(tài)。
此外,也許您還會(huì )好奇,云主機運行時(shí)創(chuàng )建快照如何保證內存一致性?其實(shí),在創(chuàng )建內存快照時(shí),會(huì )在獲取內存狀態(tài)之前暫停云主機,由于服務(wù)暫停,從而保證了創(chuàng )建內存快照那一時(shí)刻的內存一致性。
2、恢復內存快照
從上述命令可見(jiàn),通過(guò)[--file],可指定待恢復的內存快照文件路徑。
通過(guò)[--xml],可指定待恢復的云主機xml配置文件,該xml配置文件需與內存快照已保存的xml配置文件保持一致,否則內存快照恢復失??;若不指定[--xml],則會(huì )按照內存快照已保存的xml配置文件進(jìn)行恢復。
此外,還可通過(guò)[--running]或[--paused],指定恢復后的云主機狀態(tài)(運行或暫停)。
二 技術(shù)原理
ZStack Cloud內存快照技術(shù)原理可分為以下三個(gè)部分:
保存設備信息
創(chuàng )建內存快照
恢復內存快照
1、保存設備信息
在“技術(shù)背景”章節已提到,保存云主機運行時(shí)狀態(tài)信息的邏輯,實(shí)際上通過(guò)云主機熱遷移實(shí)現。
基于該背景可得知,執行創(chuàng )建/恢復快照組操作,其中已隱含云主機支持熱遷移的前提條件。若僅針對Libvirt層面,直接恢復內存快照就能完成云主機的恢復,但這樣會(huì )造成其它問(wèn)題,比如在外部快照場(chǎng)合,若直接恢復內存快照,將直接讀寫(xiě)一個(gè)只讀的快照文件,這是我們不希望發(fā)生的。
因此,引入保存設備信息機制,可確?;謴偷脑浦鳈C配置是我們所需要的。云主機熱遷移對相應設備的地址信息也有要求。
通過(guò)保存設備信息機制,云主機虛擬設備的地址信息被固定,結合之前物理設備地址信息保留的邏輯,從而實(shí)現設備定制信息的固定。
此外,保存設備信息機制還有存檔功能,支持保留創(chuàng )建內存快照時(shí)刻對應的云主機相關(guān)虛擬資源信息。在創(chuàng )建內存快照后,即使云主機配置變化(比如修改網(wǎng)卡、光驅等),也可將云主機恢復到創(chuàng )建內存快照時(shí)刻的狀態(tài)。
2、創(chuàng )建內存快照
引入保存設備信息機制,創(chuàng )建內存快照已具備實(shí)現基礎,即:可以保存設備地址和設備配置信息。
創(chuàng )建包含內存快照的快照組,實(shí)質(zhì)問(wèn)題是:如何處理內存快照在快照組中的映射關(guān)系?為解決該問(wèn)題,我們新增Memory類(lèi)型云盤(pán)作為內存快照,考慮到內存快照也通過(guò)主存儲保存,只需調整云盤(pán)邏輯,即可讓內存快照與其它云盤(pán)保持邏輯抽象的統一。
內存快照-Memory類(lèi)型
此外,在創(chuàng )建快照組時(shí),需再次建立快照組和設備信息的關(guān)聯(lián)關(guān)系,用于快照組恢復。該關(guān)聯(lián)關(guān)系在刪除內存快照時(shí)連帶刪除。
3、恢復內存快照
內存快照需基于快照組進(jìn)行恢復?;謴蛢却婵煺张c恢復其它快照在實(shí)現邏輯上差別不大。唯一不同的是,恢復內存快照,會(huì )根據快照組和設備信息的關(guān)聯(lián)關(guān)系,先將存檔設備信息還原到當前云主機上,并對云主機配置及設備做一系列檢查,當云主機配置及設備還原后,再進(jìn)行正式的數據面恢復。
三 技術(shù)特色
1、易用性
創(chuàng )建內存快照并未新增功能入口,可直接通過(guò)創(chuàng )建快照組的功能入口實(shí)現。在創(chuàng )建快照組界面,選擇創(chuàng )建內存快照,創(chuàng )建出的快照組將包含內存快照?;謴涂煺战M,也可選擇是否同時(shí)恢復內存快照,針對不同使用場(chǎng)景靈活選擇。
圖2 創(chuàng )建內存快照
2、實(shí)用性
內存快照本身是確保虛擬化場(chǎng)景具備更好可用性的基礎功能。此外,通過(guò)內存快照,可讓云主機在一定程度上規避因變更配置帶來(lái)的風(fēng)險。
3、擴展性
恢復內存快照,支持額外恢復當時(shí)內存快照中的云主機配置(比如網(wǎng)卡、光驅等)。
4、適用性
目前,除Ceph之外的其它主存儲類(lèi)型均支持內存快照功能。
四 技術(shù)價(jià)值
內存快照支持捕獲某一精確時(shí)刻的云主機內存狀態(tài)。比如正在升級中的軟件,若具備內存快照,當升級未按預期完成,或升級后不符合預期,可直接恢復內存快照,將軟件快速回滾至升級之前的狀態(tài)。
對于業(yè)務(wù)連續性要求苛刻的系統,如需進(jìn)行升級或調整(不關(guān)機),可先創(chuàng )建內存快照,保證應用一致性,再開(kāi)始進(jìn)行業(yè)務(wù)變更。若突發(fā)異常,則可直接恢復內存快照,將業(yè)務(wù)系統快速恢復至升級或調整之前的狀態(tài)。
五 結束語(yǔ)
云軸科技ZStack作為一家自主創(chuàng )新、專(zhuān)注產(chǎn)品化的云計算公司,打造好用的云產(chǎn)品,降低用戶(hù)云計算使用門(mén)檻,是我們一直以來(lái)秉持的理念和踐行方向。內存快照功能的推出,讓ZStack Cloud快照功能更加完善,進(jìn)一步保證用戶(hù)數據完整性。未來(lái),我們會(huì )繼續推出更多豐富好用的云計算產(chǎn)品功能,為用戶(hù)創(chuàng )造價(jià)值。