潘力
摘 要:針對云計算環(huán)境下在線遷移的問題,文章提出了一種基于內(nèi)核虛擬機的在線遷移優(yōu)化方案,研究目的是在KVM虛擬化平臺中實現(xiàn)虛擬機跨越遷移,保證數(shù)據(jù)的兩端一致性,從而實現(xiàn)各種大型云平臺負載平衡、系統(tǒng)的實現(xiàn)運行和維護、保證虛擬機性能的穩(wěn)定性和可靠性。實踐證明提出的優(yōu)化方案能夠很好地解決線上各種遷移場景轉(zhuǎn)換,為遷移工作的穩(wěn)定與可靠提供了重要技術(shù)支持。
關(guān)鍵詞:KVM;虛擬化;在線遷移
云計算是針對如何通過互聯(lián)網(wǎng)對虛擬化硬件計算資源池進行訪問的一種計算模型。用戶可以在線支付相關(guān)費用使用云計算資源及相關(guān)服務(wù),同時可以參與開發(fā)各種基于虛擬資源的擴展插件。云計算的核心技術(shù)主要指虛擬化技術(shù),通過耦合技術(shù)實現(xiàn)底層硬件和上層軟件服務(wù)分離,最終目的是通過云計算的虛擬化技術(shù)實現(xiàn)本地物理資源的云端和異地重新整合與分配,降低存儲成本,提高本地和云端資源的使用效率[1]。云計算服務(wù)包括虛擬機在線遷移技術(shù)服務(wù),服務(wù)內(nèi)容主要包括云計算資源和服務(wù)供應(yīng)商統(tǒng)一管理大規(guī)模的云計算資源,云存儲資源,實現(xiàn)高效的運營管理成本及效率。虛擬化在線遷移過程中需要務(wù)必保證虛擬機服務(wù)應(yīng)用程序的持續(xù)安全運行,不能意外中斷。虛擬化在線遷移指的是通過云端虛擬機從一個本地的具體的物理主機將虛擬機數(shù)據(jù)磁盤,內(nèi)存數(shù)據(jù)和設(shè)備狀態(tài)遷移到另一個異地的物理主機,但是,由于虛擬機在線遷移過程中的數(shù)據(jù)傳輸需要占用相當一部分硬件資源,導致虛擬機在線遷移服務(wù)在整個過程中將受到影響,特別是當虛擬機的運行占用較高、內(nèi)存不足時,虛擬機上的應(yīng)用程序?qū)⒖赡軐е轮T多意外的中斷[2]。因此,虛擬機在線遷移時間的優(yōu)化已成為研究熱點。
1 KVM虛擬化技術(shù)
通過虛擬交換機(Kernel-based Virtual Machine,KVM)模塊上的內(nèi)存和處理器虛擬化使客戶端在虛擬環(huán)境中運行并支持這些客戶虛擬機的運行即可實現(xiàn)KVM完全虛擬化。完成基于Linux內(nèi)核在線虛擬化遷移解決方案完全有必要借助于一款免費且開源的系統(tǒng),如KVM[3]。KVM體系結(jié)構(gòu)如圖1所示,基于架構(gòu)的設(shè)計模塊和思路發(fā)現(xiàn),最初的設(shè)計是基于內(nèi)核的模塊化設(shè)計主要是指開源且免費的KVM內(nèi)核。隨著Linux內(nèi)核的不斷擴展,更多復雜的高集成度的虛擬化功能聚合到一起,所以KVM逐漸發(fā)展成為Hyperbivisor虛擬監(jiān)視器模式。在KVM中,虛擬機基于Linux內(nèi)核,運行進程收Linux受指令控制,KVM虛擬機是通過多個QemuI/O來模擬完成的,服務(wù)于多個用戶。
2 在線遷移
在線遷移,是將源主機上的虛擬機(Virtual Machine,VM)(此處為源VM)遷移到目的主機,在遷移完成后目標主機上的VM(即目標VM)需要繼續(xù)運行源VM上的應(yīng)用服務(wù)。因此,需要保證源VM和目標VM之間的信息狀態(tài)完全一致,為了實現(xiàn)源VM和目標VM間的完全同步,在遷移中需要向目的服務(wù)器傳送源VM的各種信息,包括中央處理器(Central Processing Unit,CPU)寄存器的狀態(tài)、內(nèi)存中加載運行的頁面數(shù)據(jù)、磁盤的文件系統(tǒng)和I/O設(shè)備的使用狀態(tài)[4]。由于各部分信息所包含的數(shù)據(jù)量不同,以及對虛擬機運行的重要性不同,遷移處理的方式也不完全相同。
3 技術(shù)模塊
當CPU開始在線虛擬化進程時,首先KVM模塊需要初始化VM中的內(nèi)存數(shù)據(jù),檢測處理器運行狀態(tài),一切檢測符合設(shè)置時,運行計算機進行初步虛擬化操作。接著,打開本地和異地的VM主機是實現(xiàn)虛擬化第二步,緊接著通過一連串的進程指令創(chuàng)建必備的虛擬化系統(tǒng)文件。在虛擬機的創(chuàng)建和運行的后臺運行模式種,務(wù)必需要保證用戶模擬器(QEMU)和KVM兩個模塊的持續(xù)不間斷的安全運行。虛擬化過程中,系統(tǒng)設(shè)定是通過設(shè)計好的設(shè)備狀態(tài)和運行文件保證KVM模塊和用戶模擬器之間信息交互式訪問和請求實現(xiàn)。在最初的KVM設(shè)計中,只需要在設(shè)備中寫入dev和KVM兩個參數(shù)文件,實現(xiàn)第一個虛擬機的初步的創(chuàng)建完成。在實現(xiàn)虛擬化在線遷移的過程中,常常遇到的一個難題就是如何更好地實現(xiàn)內(nèi)存的可用性,即將內(nèi)存虛擬化有效聚合到KVM模塊中。在最新的技術(shù)解決方案中,在KVM模塊中添加進了一種多維應(yīng)答機制,首先記錄虛擬內(nèi)存首次請求訪問時間,記錄下來,并且反向追蹤兩個地理位置編碼及位置編碼,可以方便地將需要虛擬物理地址同實際物理地址進行對調(diào),同時隱藏地址信息。
通過軟件編程及圖形化界面展示的用戶模擬器具有兩個最突出的優(yōu)點:第一個優(yōu)點是在支持編譯和操作的編譯環(huán)境或者軟件平臺上可以實現(xiàn)在線虛擬化;第二個優(yōu)點是支持各種異構(gòu)系統(tǒng)模式。最新的用戶模擬器已經(jīng)實現(xiàn)了全硬件的技術(shù)支持,同時可以支持多終端的控制以及多模式自動切換,增加了WINDOWS系統(tǒng)的支持。傳統(tǒng)的運行模式需要用戶首先切換到系統(tǒng)默認的仿真模式環(huán)境中,然后等待系統(tǒng)調(diào)用內(nèi)核完成后,依賴于Linux的指令實現(xiàn)進程一步步運行。一個更超前的的虛擬機設(shè)計計劃已經(jīng)被諸多云計算服務(wù)商嘗試于用戶模擬器中,第一階段的代碼實現(xiàn)了外設(shè)虛擬化的接入,同時完整地嵌入了全部CPU以及完整的內(nèi)存,這種先進的設(shè)計逐步被眾多技術(shù)員與用戶所接受。隨著技術(shù)的改進和代碼的優(yōu)化,更多基于KVM模塊的用戶模擬器優(yōu)化方案被提出來,例如在虛擬機運行過程中時,使用KVM模塊將用戶模擬器優(yōu)先調(diào)用到Linux內(nèi)核中,并將用戶模擬器置于相應(yīng)的運行模式,而不是傳統(tǒng)的模式。每當虛擬機處理輸入和輸出操作請求時,由用戶模擬器決定是否需要調(diào)用KVM獲取上一次的接入信息調(diào)用并反饋給用戶模擬器。進一步理解,用戶模擬器使用KVM模塊的目的是提供基于全硬件資源下的虛擬化加速,從而將虛擬機的處理效率和內(nèi)存占用控制在一個合理的閾值內(nèi)。換句話說,我們將在用戶模擬器的代碼寫入一個共享的設(shè)備文件中,同時加載入KVM模塊中的代碼文件,兩者的代碼可以互相調(diào)用并檢測運行狀態(tài),這樣用戶模擬器可以根據(jù)設(shè)備文件的返回參數(shù)決定是否有必要更改當前的環(huán)境設(shè)置或者直接停止并調(diào)用備用虛擬加速資源。綜合當前主流技術(shù),KVM完全可以聚合任何選擇支持的模擬程序,但是實際運行結(jié)果顯示目前最成熟的案例還是用戶模擬器與KVM的匹配模式。endprint
Libvirt是支持Linux環(huán)境下的免費、開源的最主流的虛擬化工具的C函數(shù)庫,可以為不同類型的虛擬機監(jiān)視器比如Hyperbivisor虛擬監(jiān)視器分享一個統(tǒng)一的圖形化管理模式。 Libvirt不是Tools,而僅僅是為虛擬化技術(shù)服務(wù)提供管理工具的API庫。Libvirt除了支持監(jiān)視器服務(wù)外,最主要的任務(wù)是方便管理員管理虛擬機和虛擬機上運行參數(shù)控制包括磁盤存儲空間的分配與管理,網(wǎng)絡(luò)狀態(tài)的控制,內(nèi)存占用控制和最關(guān)鍵的虛擬化遷移進程保證等。
在線遷移包括3個階段:準備階段,遷移階段和轉(zhuǎn)換階段,介紹了基于KVM虛擬化技術(shù)的在線遷移方案。同時,研究如何通過UCloud底層KVM虛擬化技術(shù)優(yōu)化虛擬機的在線遷移[5-7]。其中,遷移環(huán)境為虛擬化的底層KVM + Qemu,虛擬化管理Libvirt,虛擬化網(wǎng)絡(luò)Openvstack。
4 結(jié)語
通過上述的在線遷移優(yōu)化步驟,可以在KVM虛擬化平臺中實現(xiàn)虛擬機跨越遷移,保證數(shù)據(jù)的兩端一致性,從而實現(xiàn)各種大型云平臺負載平衡和系統(tǒng)的實現(xiàn)運行和維護保證虛擬機性能的穩(wěn)定性和可靠性。同時,從用戶的角度來看,可以持續(xù)與虛擬機交互,整個遷移過程對用戶來說是透明的。目前的KVM虛擬化在線遷移可以適應(yīng)大多數(shù)用戶虛擬機遷移,避免繁瑣的步驟,并減少數(shù)據(jù)丟失的可能性。
[參考文獻]
[1]楊坤.基于Xen的虛擬機遷移的研究及應(yīng)用[D].蘭州:西北師范大學,2013.
[2] 周揚,龔暢,徐平平.基于動態(tài)目標遺傳算法的云計算工作流調(diào)度方法[J].湘潭大學自然科學學報,2017(1):123-126.
[3]張博.基于Xen的虛擬化在線遷移技術(shù)的研究與實現(xiàn)[D].沈陽:中國科學院研究生院(沈陽計算技術(shù)研究所),2016.
[4]張翔.虛擬機性能優(yōu)化和遷移關(guān)鍵技術(shù)研究[D].北京:中國科學院研究生院(中國科學院大學),2011.
[5]賀佰元.面向電信業(yè)務(wù)的Xen虛擬機遷移的研究及優(yōu)化[D].北京:北京郵電大學,2013.
[6]沈曉茹.基于虛擬集群在線遷移的虛擬化資源整合算法研究[D].長春:吉林大學,2014.
[7]蔣本立.基于“微課”建設(shè)的移動云平臺的設(shè)計[J].湘潭大學自然科學學報,2016(1):120-122.endprint