劉 清 王 帆 夏天鶴 施 濤
(中國西安衛(wèi)星測控中心 西安 710043)
在我國航天測控工程領域,為解決共享和遠程控制難題,采用多活性代理理論部署測控設備集中監(jiān)控系統(tǒng)[1]。在傳統(tǒng)分布式環(huán)境中,這種代理模式能有效解決測控軟件的集中監(jiān)控問題[2],但代理是駐留在客戶機中的計算實體,存在于客戶機的整個生命周期,其運行會額外消耗一定的CPU和內(nèi)存資源。當工程應用中出現(xiàn)超出當前硬件負荷情況時,通常采取增加硬件資源的解決辦法[3]。
無代理模式,即不在客戶機中設置代理的工作方式,能夠避免了上述代理導致的問題而在云計算領域逐漸流行,主要有在線和離線兩種方式。離線方式,是脫機訪問虛擬磁盤,“l(fā)ibguestfs”和“discutils”等主要采用脫機讀寫虛擬磁盤扇區(qū)的機制[4]。在線方式,可分為讀寫虛擬磁盤扇區(qū)字符流[5~6]和克隆虛擬機操作[7]等技術(shù)。虛擬磁盤扇區(qū)無代理讀寫技術(shù),集中宿主服務器系統(tǒng)中直接讀取各虛擬機磁盤的扇區(qū)字符流,但如何識別和組織這些字符流是一項十分繁瑣的工作??寺√摂M機操作技術(shù),將客戶機的每次寫操作克隆到宿主機的用戶空間進程,僅當有寫磁盤扇區(qū)操作時,才處理文件系統(tǒng)更新,但克隆或模擬虛擬機操作機制會導致一定的處理時延。
為了降低代理導致的額外資源消耗,優(yōu)化當今云計算領域無代理模式的處理效率問題,本文設計了一種效率更高的無代理實現(xiàn)技術(shù)。
傳統(tǒng)分布式環(huán)境中大量部署使用代理的工作模式,在云計算環(huán)境中可以進一步優(yōu)化改進。通過將部署在各虛擬客戶機中的多個代理減少為運行在宿主服務器中的一個無代理工具,能夠有效節(jié)約服務器資源開銷。通過操作映射算法的優(yōu)化改進,將對虛擬客戶機文件系統(tǒng)的訪問操作直接映射為對宿主服務器文件系統(tǒng)的操作,避免虛擬環(huán)境的多次輸入輸出操作,可以大幅提高操作效率。
因為在云環(huán)境中,運行在宿主服務器上的虛擬客戶機本質(zhì)上是服務器系統(tǒng)中的一個進程,承載虛擬客戶機文件系統(tǒng)的虛擬磁盤是宿主服務器文件系統(tǒng)的一部分,所以對虛擬客戶機的操作,最終必然會映射為對宿主服務器文件系統(tǒng)的操作。因此,本文基于特定的文件操作映射機制,直接在服務器中實現(xiàn)對各虛擬客戶機的操作,主要包括用戶請求捕獲、審核管理、動態(tài)操作執(zhí)行和對用戶響應這四個流程,其整體部署如圖1所示。
圖1 整體部署示意圖
主要有以下兩個方面進行了改進:
1)減少代理數(shù)量。本文在宿主服務器中設置一個無代理工具,代替作為計算實體存在于各個虛擬客戶機中的代理,從而實現(xiàn)集中對各客戶機的操作。這樣,整個服務器中運行的多個代理,將有效地減少為一個無代理工具。代理數(shù)量的大幅減少,將減少服務器資源的不必要消耗。
2)降低處理時延。在云計算環(huán)境中,對客戶虛擬機操作的克隆和模擬是導致處理時延,從而影響操作效率的重要因素。其中,克隆操作時延是虛擬機監(jiān)視器克隆虛擬操作而產(chǎn)生的時延;模擬操作時延,主要是指虛擬機的多次輸入/輸出操作模擬所導致的時延。對于傳統(tǒng)的代理模式,在新的云計算環(huán)境中,當對虛擬機文件系統(tǒng)訪問操作時,就需要經(jīng)過多次模擬輸入/輸出操作,才能最終實現(xiàn);對于一般無代理模式,在線虛擬磁盤文件訪問機制中,除了讀寫虛擬磁盤扇區(qū)技術(shù),其他的技術(shù)往往包括對虛擬機操作的克隆和模擬。對此,本文通過虛擬機監(jiān)視器提供的系統(tǒng)層接口,直接將對虛擬機中航天測控軟件應用的重配置操作映射到對宿主服務器文件系統(tǒng)的操作,集中在服務器中完成對各航天測控軟件應用的動態(tài)重配置。這樣,避免了對虛擬客戶機操作的克隆和輸入/輸出操作的多次模擬,有效地降低了處理時延,從而提高了操作效率。
VirtFS是系統(tǒng)層虛擬化技術(shù)的實現(xiàn),可以向虛擬客戶機提供系統(tǒng)層的服務接口[8],通過與虛擬機監(jiān)視器交互,能夠獲得較好的文件訪問性能。因此,本文基于使用VirtFS提供的系統(tǒng)層接口,構(gòu)建服務器與客戶機的共享文件空間,建立虛擬客戶機與宿主服務器的操作映射機制,從而實現(xiàn)在宿主服務器文件系統(tǒng)集中對服務器中各客戶機進行訪問和控制,系統(tǒng)整體架構(gòu)如圖2所示。
圖2 無代理系統(tǒng)整體架構(gòu)
其中,物理設備是被VirtFS化了的Linux系統(tǒng)宿主服務器;使用KVM虛擬化技術(shù)[9],通過QEMU模擬運行客戶機[10];分割共享文件空間得到客戶機對應子空間,并基于分割子空間定制fsdev文件系統(tǒng)設備和VirtIO-9P-PCI設備;客戶虛擬機根據(jù)分組標簽識別和掛載VirtIO-9P-PCI設備,這樣通過VirtFS提供的系統(tǒng)層接口與虛擬機監(jiān)視器交互,使用分組標簽進行彼此隔離,實現(xiàn)讀取并響應Web服務器中的用戶操作請求,通過相關(guān)算法和機制直接在宿主服務器文件系統(tǒng)中完成各客戶機的訪問操作。
整個無代理技術(shù)設計與實現(xiàn)的難點包括捕獲及響應用戶請求、虛擬磁盤多機同時訪問、操作隔離和降低處理時延等四個方面。
將以接口方式對外提供服務,在每臺宿主服務器中搭建Web服務,當用戶的操作和相關(guān)參數(shù)通過HTTP請求傳遞到Web服務器后,無代理工具的接口程序會通過讀寫Servlet的方式進行捕獲和解析,提交管理程序處理,并根據(jù)管理程序處理結(jié)果生成對用戶的響應信息,最后通過Web服務器返回HTTP響應。用戶請求捕獲詳見圖3所示。
其中,Servlet容器用于實現(xiàn)Web服務器與應用系統(tǒng)之間的標準通信,應用系統(tǒng)中用于被Web服務器動態(tài)調(diào)用的部分放置在實現(xiàn)Servlet接口的類中[11]。將軟件應用無代理動態(tài)重配置的接口類,設計為Servlet接口類,便于在接口類中動態(tài)捕獲用戶請求的操作名稱、相關(guān)參數(shù)和請求端IP地址,并根據(jù)管理程序處理結(jié)果產(chǎn)生Web服務器的動態(tài)響應。
圖3 用戶請求捕獲/響應示意圖
Linux系統(tǒng)的文件緩存機制,導致了作為宿主機文件存在的虛擬磁盤除非是只讀模式,否則不能被多個客戶機、服務器和客戶機同時訪問[12~13]。另一方面,要實現(xiàn)對客戶虛擬機的在線訪問控制,必然要求虛擬磁盤是讀寫模式。因此,需要建立虛擬磁盤多機同時訪問狀態(tài),即虛擬磁盤文件同時支持所在虛擬客戶機、宿主服務器、或其它指定虛擬客戶機的同時訪問。
云計算虛擬環(huán)境與傳統(tǒng)分布式環(huán)境不同,各虛擬客戶機是通過虛擬機監(jiān)視器讀寫虛擬磁盤文件,并在宿主服務器中模擬產(chǎn)生。同時,虛擬監(jiān)視器可以是宿主服務器系統(tǒng)的一個進程。因此運行在宿主服務器中的無代理工具通過虛擬機監(jiān)視器,可以在虛擬客戶機在線運行狀態(tài)下模擬虛擬機的操作,從而實現(xiàn)宿主服務器對虛擬客戶機文件系統(tǒng)的在線訪問,如圖4所示。
圖4 虛擬磁盤同時訪問原理圖
本文采用系統(tǒng)層虛擬化技術(shù),通過虛擬機監(jiān)視器提供的系統(tǒng)層服務接口,可以實現(xiàn)客戶虛擬機、宿主服務器、其他客戶機對該虛擬磁盤的同時訪問(讀寫),并獲得相對高效的操作性能。
操作隔離,是指實現(xiàn)虛擬客戶機、宿主服務器、其他虛擬客戶機對共享文件空間訪問操作的隔離,是必須解決的運行基礎問題。本文通過定義分組標簽和安全模式的方式,指定各機對共享文件空間的訪問權(quán)限,從而實現(xiàn)各操作的隔離。
客戶機運行在虛擬化環(huán)境中,可以對共享文件空間進行分割,為每個虛擬客戶機分配相應的共享子空間,并通過一定的識別機制建立與虛擬客戶機的關(guān)聯(lián)關(guān)系。同時,基于分割子空間可以為虛擬客戶機定制fsdev和VirtIO-9P-PCI等系統(tǒng)設備,定義相應的分組標簽和安全模型等參數(shù)信息。各虛擬客戶機在啟動時使用指定的分組標簽掛載這些文件系統(tǒng)設備,擁有相同分組標簽的各機可以共享文件設備對應的分割子空間,但擁有不同分組標簽的各機則保持相互隔離;同時可根據(jù)需要選擇不同安全模型,以實現(xiàn)客戶虛擬機與宿主服務器的隔離。這樣,可在虛擬客戶機啟動時,就建立了特定的隔離關(guān)系。各虛擬機之間的隔離機制,詳見圖5。
圖5 虛擬機隔離機制示意圖
其中QEMU基于各分割子空間定義了fsdev與VirtIO-9P-PCI這兩類設備[14~15]。fsdev設備關(guān)聯(lián)分割子空間,實現(xiàn)本文工具與虛擬客戶機的共享和隔離;VirtIO-9P-PCI設備通過ID關(guān)聯(lián)fsdev設備,客戶機通過不同的分組標簽識別VirtIO-9P-PCI設備,實現(xiàn)虛擬機客戶機之間的相互隔離。
操作映射是將對虛擬客戶機文件系統(tǒng)的操作,直接映射到對宿主機文件系統(tǒng)的操作。客戶機掛載是指虛擬客戶機啟動后,對基于共享文件空間分割而定義的文件系統(tǒng)設備,使用對應協(xié)議和分組標簽進行掛載。客戶機通過系統(tǒng)層的服務接口直接與虛擬機監(jiān)視器交互,可獲得比直接訪問驅(qū)動設備更高效的讀寫性能[16]。本文利用虛擬機監(jiān)視器提供的系統(tǒng)層接口,通過將對虛擬機文件系統(tǒng)操作到對服務器文件系統(tǒng)操作的直接映射,避免了傳統(tǒng)“虛擬機文件系統(tǒng)操作——塊設備操作——服務器文件系統(tǒng)操作”三層次映射,減少了一個映射層級,同時因?qū)Ω魈摂M客戶機的訪問操作沒有經(jīng)過虛擬機系統(tǒng),從而避免了虛擬機多次輸入/輸出操作模擬,有效降低操作的處理時延,從而可以大幅提高操作效率。詳見圖6。
圖6 共享文件空間虛擬客戶機掛載示意圖
其中,“分割1-n”是客戶虛擬機對共享文件空間的使用分割;fsdev是基于分割子空間定制的文件系統(tǒng)設備;VirtIO-9P-PCI是關(guān)聯(lián)fsdev文件設備而定制的系統(tǒng)設備,并定義了分組掛載標簽;客戶虛擬機根據(jù)分組掛載標簽,通過9P協(xié)議對VirtIO-9P-PCI設備進行掛載,這樣,虛擬客戶機通過掛載文件設備操作,便可將分割的子空間作為本地文件空間使用,但實際操作是在宿主服務器文件系統(tǒng)中完成的。
在相同硬件環(huán)境,分別統(tǒng)計代理模式和本文無代理技術(shù)兩種狀態(tài)下CPU和內(nèi)存資源的消耗情況,進行對比分析,驗證本文無代理技術(shù)在資源消耗方面的改進;通過分別統(tǒng)計代理模式、一般無代理模式和本文無代理技術(shù)對虛擬客戶機訪問操作的效率,進行對比分析,驗證本文無代理技術(shù)在操作效率方面的有效優(yōu)化。
在實驗中,使用代理前后的資源占用率差值,即為此代理導致的額外資源消耗。為獲得趨勢性數(shù)據(jù),分別設置了服務器單機運行,以及虛擬0~5個虛擬客戶機運行的七種實驗狀態(tài),并分別統(tǒng)計CPU和內(nèi)存的開銷情況。htop是一個Linux下的交互式進程瀏覽器,可以用來替換Linux下的top命令,因此本文通過htop工具查看服務器的資源開銷情況。
CPU開銷,因?qū)嶒炇窃谙嗤布渲煤退拗鞣掌飨到y(tǒng)環(huán)境下進行的,所以選擇宿主服務器中CPU總共的百分比開銷作為此模式下的某次CPU開銷。根據(jù)CPU代價計算公式,得到本文無代理技術(shù)和代理模式在上述七種實驗狀態(tài)下的CPU代價,并以狀態(tài)序號為橫坐標、宿主服務器CPU占用百分比為縱坐標,建立兩種模式下CPU代價對比圖,詳見圖7。
圖7 CPU代價對比圖
內(nèi)存開銷,是以宿主服務器中內(nèi)存的實際資源占用量(MB),作為某次實驗的實際開銷。基于上述7種實驗狀態(tài)的內(nèi)存實際開銷統(tǒng)計,并根據(jù)內(nèi)存開銷計算公式,得到本文無代理技術(shù)和代理模式的內(nèi)存代價對比信息,并以狀態(tài)序號為橫坐標、服務器內(nèi)存實際占用量為縱坐標,得到兩種模式的內(nèi)存代價對比圖,詳見圖8。
圖8 內(nèi)存代價對比圖
在圖7和圖8中,狀態(tài)1是服務器空載運行狀態(tài);狀態(tài)2中,對于代理模式是服務器空載運行,對于無代理模式是服務器系統(tǒng)中,部署并建立了本文無代理技術(shù)運行狀態(tài);狀態(tài)3~7,分別對應宿主服務器中有1~5個客戶機運行的測試狀態(tài)。
由以上兩圖中CPU代價和內(nèi)存代價的對比可知:
1)在狀態(tài)1,兩種模式的CPU代價和內(nèi)存代價均相等;
2)在狀態(tài)2,本文無代理技術(shù)的CPU代價和內(nèi)存代價要略高于代理模式。這是因為,在此狀態(tài)下,本文無代理技術(shù)需要在服務器系統(tǒng)中建立其運行狀態(tài),因為導致一定的CPU和內(nèi)存消耗;但,對于代理模式,則不存在這樣的問題;
3)在狀態(tài)3,兩種模式環(huán)境中均運行了一臺客戶機,此時兩種模式的CPU代價和內(nèi)存代價基本相等;
4)狀態(tài)4以后,隨著客戶機的增多,代理模式的CPU代價和內(nèi)存代價均逐漸加速高于本文無代理技術(shù),并呈現(xiàn)出“剪刀差”現(xiàn)象。
以上資源代價的數(shù)據(jù),驗證了代理模式中,因代理模式需要在每個客戶機中設置代理,導致的額外資源消耗會隨著代理成正比增加;而本文無代理技術(shù),因沒有在客戶機中使用代理,代理數(shù)量大幅減少,從而避免了代理導致的大量額外資源消耗問題。
在硬件配置相同的服務器中,使用QEMU模擬多臺客戶機的運行,編寫測試程序,并使用HTTP請求各虛擬客戶機中同一文件塊的100次讀寫操作,分別統(tǒng)計傳統(tǒng)代理模式、一般無代理模式和本文無代技術(shù)三種機制的操作效率。本文無代理技術(shù)、一般無代理模式(模擬操作)和傳統(tǒng)代理模式的平均讀操作效率(次/秒)分別為:73.7、11.7、7.6,平均寫操作效率(次/秒)分別為:40.8、10.0、7.2。
以操作序號為橫坐標,以操作效率為縱坐標,建立讀寫操作效率對比圖,分別如圖9和圖10所示所示。
其中,由以上三種模式下讀取和寫入操作效率數(shù)據(jù)可知:
1)讀取操作效率,本文無代理技術(shù),大約是一般無代理模式的6.3倍,是代理模式的9.7倍;
2)寫入操作效率,本文無代理技術(shù),大約是一般無代理模式的4.1倍,是代理模式的5.7倍;
3)一般無代理模式和代理模式的讀取操作效率會略高于寫入操作效率,這幾乎與磁盤的讀寫情況類似。
圖9 讀操作效率統(tǒng)計圖
圖10 寫操作效率統(tǒng)計圖
以上效率的數(shù)據(jù),驗證了通過虛擬機監(jiān)視器提供的系統(tǒng)層接口,直接將對虛擬客戶機的訪問操作映射到對服務器文件系統(tǒng)的操作,可以避免虛擬環(huán)境的多次模擬操作,減少處理時間延遲,能夠大幅提高處理效率。
無代理技術(shù)因能很好地避免代理導致的資源開銷問題而在云計算領域逐漸流行。本文對無代理技術(shù)的實現(xiàn)架構(gòu)進行了優(yōu)化設計,通過操作映射策略對當今IT領域無代理技術(shù)進行降低處理時延方面的優(yōu)化改進。本文設計的無代理技術(shù),能夠有效地將設置在不同客戶機中的多個代理減少為一個運行在宿主服務器中的無代理工具,從而大幅降低服務器額外資源消耗;可以通過操作映射精簡虛擬環(huán)境中一個層級的文件操作映射,減少處理時延,從而提高操作效率。