劉清 王帆 李冬 施濤



摘? ?要:由于虛擬環境多次I/O操作模擬的存在,運行在宿主服務器中的各虛擬客戶機之間使用傳統代理進行文件訪問效率不高。為此,提出了基于VirtFS的共享文件空間技術。構建了虛擬客戶機共享文件空間的系統架構,設計了虛擬磁盤操作映射機制,使用VirtFS框架提供的系統層接口,在宿主服務器中的VirtFS服務端截取和映射文件操作,直接將虛擬機文件系統的操作映射為對宿主服務器文件系統的操作。為了保障安全,徹底隔離用戶域,實現分組共享。實驗結果表明,采用該方法比現有代理方法文件讀寫效率分別提高9.7和5.7倍。
關鍵詞:操作映射;共享文件空間;云計算;VirtFS
中圖分類號:TP39? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A
A Space Technology VirtFS-based Shared File
LIU Qing,WANG Fan?覮,LI Dong,SHI Tao
(China Xi'an Satellite Control Center,Xi'an,Shaanxi 710043,China)
Abstract:Because of the existence of multiple I/O operation simulation in the virtual environment,it is not efficient to use traditional proxy to access files between virtual clients running in the host server. For this problem,a VirtFS-based Shared file space technology is proposed. The system archi-tecture of virtual client sharing file space is constructed,and the mapping mechanism of virtual disk operation is designed. Using the system layer interface provided by the VirtFS framework,the VirtFS server intercepts and maps file operations in the host server,and directly maps the operations of the virtual machine file system to those of the host server file system. At the same time,in order to ensure security,completely isolated user domain,to achieve group sharing. The experimental results show that this method can improve the file reading and writing efficiency by 9.7 and 5.7 times respectively.
Key words:action mapping;shared file space;cloud computing;VirtFS
在當今云計算領域,運行在同一宿主服務器中的虛擬客戶機之間相互訪問其文件空間時,通常使用部署代理的方式實現。但在虛擬環境中使用代理會導致虛擬環境中多次的輸入輸出操作模擬[1], 文件訪問效率不高。設計適用于云計算虛擬環境的高效文件空間共享可以有效避免這一問題。
虛擬環境下高效的文件空間共享,可通過一系列的巧妙設計得以實現。運行在宿主服務器中的虛擬機本質上是宿主服務器的一個進程,其文件系統是宿主服務器文件系統的一部分。本文基于VirtFS技術,以及VirtIO通信框架和9p2000.L協議的使用,設計了適用于云計算環境的共享文件空間方案。使用VirtFS提供的系統層接口,設計了操作映射策略,使得不同的虛擬客戶機共享文件空間的讀寫操作實際上是在服務器文件系統中完成,避免了虛擬環境的多次輸入輸出操作模擬,可大幅提高操作效率。同時,為實現更好的隔離,通過映射操作徹底隔離了客戶機用和宿主機的用戶域,并在服務器與各虛擬客戶機通信中,使用不同的分組標簽對各客戶虛擬機進行隔離。
1? ?相關工作
VirtFS,是IBM的Linux技術中心為解決虛擬環境中文件系統的效率問題,定制的類虛擬化文件系統,屬于系統層虛擬化技術,通過向虛擬機系統提供系統層的服務接口,與虛擬機監視器交互,可直接在宿主服務器文件系統中實現對虛擬客戶機文件系統的操作;同時,還可在虛擬機監視器中查看客戶機的文件系統活動,可通過I/O緩存進行預測和服務優化操作。VirtFS的結構圖如圖1所示。
圖1? ?VirtFS系統結構圖
VirtFS的基本原理:利用輕載的分布式文件系統協議,并通過VirtIO提供虛擬化傳輸接口,直接在虛擬化的頂層傳輸,通過Linux虛擬文件系統API遠程傳遞到虛擬服務器或客戶機[2]。
在云環境中,VirtFS給客戶機提供從本地文件系統到服務器共享文件空間的接口,為不同用戶提供安全的存儲服務。可將服務器文件系統的一部分空間掛載到客戶機,作為客戶機對外的安全窗口,多個客戶機可共享服務器中的資源。
2? ?一種共享文件空間的設計
QEMU能夠高效的進行虛擬環境的操作模擬[3],VirtIO框架和9p2000.L通信協議的使用能夠有效的提高通信效率[4 - 6],本文設計服務端是QEMU的一部分,運行在用戶態,直接與文件服務API通信;客戶端是客戶機內核的一部分,它們之間使用VirtIO進行通信。QEMU中的服務端選擇服務器文件系統的一部分作為共享文件空間輸出,客戶機中的客戶端通過9p2000.L協議對這部分共享文件空間進行掛載。這樣,這部分掛載的共享文件空間可被客戶機像本地文件系統一樣使用,但文件讀寫操作實際上是在服務器文件系統中完成。
在映射虛擬機文件系統操作到宿主機文件系統操作時,為徹底隔離虛擬客戶機與宿主服務器的用戶域,保障客戶機需要安全運行空間,使用了VirtFS框架提供的系統層接口,在宿主服務器中的VirtFS服務端截取和映射文件操作。這樣,通過映射操作徹底隔離了客戶機和宿主機的用戶域;在服務器與各虛擬客戶機通信中,使用不同的分組標簽對各客戶虛擬機進行隔離。
2.1? ?整體結構設計
在云計算環境中,對客戶虛擬機操作的克隆和模擬是導致處理時延,從而影響操作效率的重要因素。其中,克隆操作時延是虛擬機監視器克隆虛擬操作而產生的時延;模擬操作時延,主要是指虛擬機的多次輸入/輸出操作模擬所導致的時延。對于傳統的代理模式,在新的云計算環境中,當對虛擬機文件系統訪問操作時,需要經過多次模擬輸入/輸出操作,才能最終實現。對此,本文通過虛擬機監視器提供的系統層接口,直接映射文件空間訪問操作,避免了對虛擬客戶機操作的克隆和輸入/輸出操作的多次模擬,有效地降低了處理時延,從而提高了操作效率。系統整體部署結構如下圖2所示。
圖2? ?整體部署示意圖
2.2? ?整體架構描述
通過虛擬機監視器提供的系統層虛擬化的接口,可構建宿主服務器中各虛擬客戶機的共享文件空間。VirtFS是系統層虛擬化技術的實現[2],能向客戶虛擬機系統提供系統層的服務接口,通過與虛擬機監視器交互,能夠獲得較好的文件訪問性能。因此,本文基于使用VirtFS提供的系統層接口,建立虛擬客戶機與宿主服務器的操作映射機制,從而實現對服務器中各客戶機的集中控制,系統整體架構如圖3所示。
圖3? ?共享文件空間系統整體架構
其中,物理設備包括存儲設備和一些安裝了Linux系統并被VirtFS化了的宿主服務器;系統根據客戶機使用情況分割宿主服務器文件系統中共享文件空間為對應子空間;使用KVM虛擬化技術[7],通過QEMU模擬運行客戶機[3],并基于分割子空間定義fsdev文件系統設備,基于關聯fsdev定義VirtIO-9P-PCI設備,指定共享分組標簽識別VirtIO-9P-PCI設備;客戶虛擬機根據分組標簽掛載VirtIO-9P-PCI設備,這樣通過VirtFS提供的系統層接口與虛擬機監視器交互,可建立與其宿主服務器或其他虛擬客戶機的共享文件機制,并使用分組標簽進行彼此隔離;動態重配置工具通過接口程序讀取并響應Web服務器中的用戶操作請求,管理程序審核并執行程序實現具體操作,管理程序同時負責系統管理和調度日志程序記錄管理結果,其中執行程序會通過相關算法和機制直接在宿主服務器文件系統中完成各客戶機中軟件應用配置的動態讀取或重置操作;Web服務器接收并響應用戶操作請求。
2.3? ?文件空間共享策略
本文設計共享文件空間共享策略,利用VirtFS提供的框架,便于通過系統層接口,建立虛擬客戶機與宿主服務器的共享文件狀態,并具有較高的文件訪問效率;使用VirtIO通信框架和9P協議能提供高效的傳輸支持[8]。對于VirtFS客戶端,在客戶虛擬機使用專用標簽掛載,并使用9P協議建立軟件應用所在目錄與宿主服務器文件系統中對應分割子空間的同步通信;對于VirtFS服務端,依賴于QEMU中的fsdev和VirtIO-9P-PCI這兩類設備,以提供一個可用于與客戶機交互的網絡文件系統接口。其中,fsdev設備,用于定義導出文件系統的類型、安全模式等;VirtIO-9P-PCI設備,用于在客戶機與宿主服務器之間傳輸協議消息和數據。
KVM + QEMU + VirtIO是本文較理想的組合平臺。在KVM中,VirtFS服務端是以QEMU進程子功能的形式運行在宿主服務器系統,VirtFS客戶端是以內核模塊的形式運行在虛擬機系統;服務端與客戶端之間基于VirtIO通信框架,使用9P協議實現本地資源到遠程資源的轉換。其中,VirtFS在服務器上的后端主要是本地文件系統,可以通過掛載CephFS目錄到服務器系統。
建立共享文件空間的流程圖如圖4所示。
圖4? ?共享文件空間建立流程示意圖
構建共享主要包括以下三個關鍵過程:
首先,系統根據分割算法對指定服務器文件空間進行分割,為各虛擬客戶機創建對應子空間;
其次,QEMU根據分割結果為虛擬客戶機定義對應的系統設備(fsdev/VirtIO-9P-PCI),并加載鏡像文件,模擬虛擬客戶機運行;
最后,客戶虛擬機開機后,使用9P協議通過專用標簽掛載VirtIO-9P-PCI設備,并定義其在本機中的別名,客戶機即可與本地目錄一樣使用這部分文件空間。
這樣,通過QEMU提供的系統層接口,可實現虛擬客戶機和宿主服務器在對應分割子空間的共享。其中,主要包括QEMU模擬、客戶機掛載和隔離與識別等操作。
2.4? ?操作映射與空間掛載
長期以來,KVM等主流虛擬化技術都關注與改進虛擬磁盤和網絡設備的性能[7],但客戶機通過系統層的服務接口直接與虛擬機監視器交互,可獲得比直接訪問驅動設備更高效的讀寫性能[9,10]。本文通過虛擬機監視器提供的系統層接口,將對虛擬客戶機中軟件應用的重配置操作,直接映射為對宿主服務器文件系統的操作,這減少了映射層次和模擬輸入/輸出操作次數,從而提高了操作效率。
操作映射,是對虛擬客戶機文件系統的操作,直接映射到對宿主機文件系統的操作,主要包括客戶機掛載和映射算法兩部分內容;客戶機掛載,是指虛擬客戶機啟動后,對基于共享文件空間分割而定義的文件系統設備,使用對應協議和分組標簽進行掛載,詳見圖5所示。
圖5? ?共享文件空間映射與掛載示意圖
其中,“分割1-n”是根據客戶虛擬機使用需求,對宿主服務器文件系統中共享文件空間的對應分割;fsdev是具體虛擬化技術基于分割子空間定義的文件系統設備;VirtIO-9P-PCI是具體虛擬化技術基于關聯fsdev文件設備而定義的系統設備,并定義了分組掛載標簽;客戶虛擬機根據分組掛載標簽,通過9P協議對VirtIO-9P-PCI設備進行掛載,這樣,虛擬客戶機通過掛載文件設備操作,便可將分割的子空間作為本地文件空間使用。
2.5? ?虛擬客戶機隔離機制
通過虛擬客戶機隔離機制,確保服務器或客戶機在共享文件空間中,僅對具備許可的文件可見。宿主服務器與各虛擬客戶機的分割子空間共享,使用了相同的原理、框架和通信機制,這容易導信息安全問題[11]。
在虛擬化環境中,可以為虛擬客戶機都定義一些系統設備,比如fsdev、VirtIO-9P-PCI等。同時,可以對共享文件空間進行分割,為每個虛擬客戶機分配相應的共享子空間,并通過一定的識別機制建立與虛擬客戶機的關聯關系。因此可以基于分割子空間,為虛擬客戶機定義一些文件系統設備,同時定義相應的分組標簽和安全模型等參數信息。各虛擬客戶機在啟動時使用指定的分組標簽掛載這些文件系統設備,擁有相同分組標簽的各機可以共享文件設備對應的分割子空間,但擁有不同分組標簽的各機則保持相互隔離;同時可根據需要選擇不同安全模型,以實現客戶虛擬機與宿主服務器的隔離。這樣,在虛擬客戶機啟動時,就建立了特定的隔離關系。
各虛擬機之間的隔離機制,詳見圖6所示。
圖6? ?虛擬機隔離機制示意圖
其中QEMU基于各分割子空間定義了fsdev與VirtIO-9P-PCI這兩類設備[12,13]。fsdev設備關聯分割子空間,實現本文工具與虛擬客戶機的共享和隔離;VirtIO-9P-PCI設備通過ID關聯fsdev設備,客戶機通過不同的分組標簽識別VirtIO-9P-PCI設備,實現虛擬機客戶機之間的相互隔離。
3? ?實 驗
3.1? ? QEMU模擬
為建立VirtFS服務端的運行狀態,本文選擇Qemu模擬,通過定義fsdev和VirtIO-9P-PCI這兩類設備的相關參數,可在VirtFS服務端和客戶端建立通信[2]。為方便操作,相關模擬操作被編輯為腳本程序。QEMU根據具體情況調用啟動腳本程序,默認使用匹配(mapped)安全模式,模擬虛擬客戶虛擬機運行。
系統針對fsdev和VirtIO-9P-PCI這兩類設備,設計了一套參數生成規則,以建立分割空間、系統設備和虛擬客戶機之間的對應和識別邏輯。相關生成規則詳見表1所示。
表1? ?客戶機設備參數生成規則
其中,對于fsdev設備,使用客戶機名稱生成文件系統設備標識ID,使用宿主機中共享文件空間名稱和客戶機名稱生成文件系統設備的路徑,根據需要選定合適的文件系統設備安全模型;關于“VirtIO-9P-PCI”設備,系統將通過標識ID關聯對應的文件系統設備(fsdev),并根據虛擬客戶機名稱生成隔離分組的掛載標簽。模擬操作腳本,使用shell命令編寫,以參數輸入的方式,滿足模擬不同設備和虛擬客戶機的需求。Qemu可以采用輸入參數的方式,調用操作腳本,以便模擬不同的設備和虛擬客戶機。
3.2? ?隔離與應用識別
隔離,通過在模擬的fsdev設備和VirtIO-9P-PCI設備中分別設置安全模型和分組標簽實現。其中,fsdev設備,用于定義導出文件系統的類型、安全模式等;VirtIO-9P-PCI設備,用于在客戶機與宿主服務器之間傳輸協議消息和數據;客戶虛擬機使用VirtIO通信框架,通過掛載VirtFS客戶端,并使用專用標簽(mt_Appname)實現指定軟件應用目錄(Appdir)與宿主服務器中共享子空間的同步,具體方法如下表2所示。
表2? ?隔離實現方法
因使用掛載標簽進行共享分組,從而確保了各虛擬客戶機之間的相互隔離。
共享文件空間建立后,虛擬客戶機和宿主服務器都感知為本地文件空間,存放于其中的文件會根據具體的安全模式而可見和同步。
3.3? ?操作效率
為驗證本文設計的共享文件空間技術,在云計算環境中虛擬客戶機之間相互訪問文件操作的效率方面帶來的改進,實驗分別統計了本文共享文件空間策略和傳統代理模式下的操作效率進行對比分析。通過測試程序統計每次讀寫某一特定文件塊操作所耗費的時間,然后根據操作效率公式計算得到對應效率。以操作序號為橫坐標,以操作效率為縱坐標,建立讀寫操作效率對比圖,分別如下圖7和圖8所示所示。
圖7? ?讀操作效率統計圖
其中,在本文共享文件空間中虛擬客戶機之間相互的讀文件塊操作為73.7次/秒,使用傳統代理技術的讀文件操作為7.6次/秒。
圖8? ?寫操作效率統計圖
其中,在本文共享文件空間中虛擬客戶機之間相互的的寫文件塊操作為40.8次/秒,使用傳統代理技術的寫文件塊操作為7.2次/秒。
由以上三種模式下讀寫操作的數據可知:
1)讀操作效率,本文共享文件空間技術大約是代理模式的9.7倍;
2)寫操作效率,本文共享文件空間技術大約代理模式的5.7倍;
3)代理模式讀取操作效率會略高于寫操作效率,這幾乎與磁盤的讀寫情況類似;
通過上述實驗數據,驗證了本文設計的云計算環境中共享文件空間策略,通過虛擬機監視器提供的系統層接口,直接將對虛擬客戶機中文件系統的訪問操作映射到對服務器文件系統的訪問,可避免多次模擬操作,能夠大幅提高處理效率。
4? ?結? 論
基于運行在宿主服務器中的虛擬機文件系統本質上是宿主服務器文件系統的一部分這一理論基礎,通過VirtFS提供的系統層接口的使用,采用VirtIO框架和9p2000.L通信協議,設計了適用于云計算虛擬環境文件系統的操作映射和隔離機制。實現了客戶虛擬機和宿主機的用戶域隔離和客戶虛擬機的分組隔離,避免虛擬環境多次輸入輸出操作模擬,使得不同的虛擬客戶機共享文件空間的讀寫操作實際上是在服務器文件系統中直接完成,大幅提高了操作效率,有效的建立了云計算環境中高效的共享文件空間策略,為云計算環境中共享文件空間的工程應用提供了一個高效的實現方案。
參 考 文 獻
[1]? ? RICHTER W,ISCI C, GILBERT B,et al. Agentless cloud-wide streaming of guest file system updates[C]. IEEE International Conference on Cloud Engineering,2014:7—16.
[2]? JUJJURI V,HENSBERGEN E V,LIGUORI A. VirtFS-A virtualization aware file system pass-through[C]. Proceedings of the Linux Symposium,2010:109—120.
[3]? ? BELLARD F. QEMU,a fast and portable dynamic translator[C]. Proceedings of the Annual Conference on USENIX Annual,2005: 41—41.
[4]? ? RUSSEL R. VirtI O: towardsa a de-facto standard for virtual I/O devices[C]. ACM SIGOPS Operating Systems Review-Research and Developments in the Linux Kernel Archive,2008: 95—103.
[5]? ? HENSBERGEN E V,MINNICH R. Grave robbers from outer space using 9p2000 under linux[C]. Proceedings of the FREENIX Track:2005 USENIX Annual Technical Conference, 2005:83—94.
[6]? ? Bell-Labs. Introduction to the 9p protocol, plan 9 programmers manual [EB/OL] . 2000—03/2019—03.
[7]? KIVITY A,KAMAY Y,LAOR D,et al. KVM:the Linux virtualmachine monitor[C]. Ottawa Linux Symposium,2007: 225—230.
[8]? LIGUORI A,HENSBERGEN E V. Experiences with content addressable storage andvirtual disks[C]. Proceedings of the Workshopon I/O Virtualization(WIOV),2008:5—11.
[9]? ? 王紹紅. 天津交行無代理IT監控方案設計與研究[J]. 科技創新與應用,2018,28:96—98.
[10]? 王海新,羅圣美,佟偉. 基于云計算的虛擬機防病毒架構分析[J]. 信息通信技術,2018,06:69—73.
[11]? 陳興蜀,陳蒙蒙,金鑫. 基于影子內存的無代理虛擬機進程防護[J]. 電子科技大學學報,2018,01:80—87.
[12]? 張征. 基于云平臺的虛擬機安全隔離和防護[J]. 信息與電腦:理論版,2018,23:174—177.
[13]? 何重陽,朱仲馬,劉曉浩,等. 虛擬化安全隔離增強技術研究[J]. 軟件導刊,2018,11:198—201.