李毅倫 宋 虹 王大成 王建新
(中南大學信息科學與工程學院 湖南 長沙 410083)
桌面虛擬化技術蓬勃發展,正在被越來越多的企業和個人用戶部署。桌面虛擬化技術降低了對客戶端硬件配置的要求,也降低了用戶的使用難度和門檻。管理員能根據不同類型用戶的要求,統一快速地配置大量桌面和應用程序。同時大大減少了企業的維護成本。然而隨著桌面虛擬化的普及,一些問題也顯現出來。用戶希望在他的多個設備(PC設備、移動設備)間建立起統一、專屬的個人環境視圖。這個環境包括常用應用軟件、用戶個人數據、系統個性化配置等。但是隨著軟件的日益豐富和版本的層出不窮,不同用戶群組之間的需求差別很大。另一方面,為了存儲這些用戶的差異性信息,鏡像所占用的磁盤空間也越來越大,這也降低了IT人員更新和管理維護鏡像的效率。如何在保證用戶個人配置的前提下,減少存儲空間并高效率地管理維護鏡像,成為亟待解決的問題。
在虛擬機鏡像存儲模式中,假設為每個用戶分配100 GB的存儲空間,那么1 000個用戶就需要100 TB的企業級存儲。目前企業級的桌面虛擬化都采用SAN[1]和NAS[2]存儲方式,而中小規模的企業主要采用后者。NAS模式是在虛擬域0(domain 0)[3]上掛載鏡像,根據差分磁盤[4]的原理,對根鏡像(Golden image)做兩級以上的快照。Vmware公司開發的Linked clone[5]和Citrix的MCS[6]鏡像存儲方式本質上也都是基于差分存儲的原理[7],從幾個少數的根鏡像中派生子鏡像,每個子鏡像只存儲與母版鏡像的差異部分。這種存儲方式大大減少了存儲成本,而逐漸成為業界的主流。但這種方式也給軟件的更新帶來了不便,要想統一地安裝或者更新某個軟件,就得對已經布置好的Golden image作出修改,而根據差分磁盤的存儲結構和原理,修改會導致其派生出的子鏡像無法使用[8]。在這種情況下,對每個用戶的子鏡像單獨進行更新維護將會產生大量的開銷。
應用軟件的更新和用戶的桌面環境往往是整體的,耦合性極高的,操作系統、系統軟件、用戶自己安裝的軟件、用戶個人數據以及插件等難以徹底分離,很難保證在互不影響的前提下進行數據的修改。如何有效地平衡鏡像存儲、鏡像維護更新和保留用戶個性化配置這三個方面,是一個難題。應用程序虛擬化[9]將所有應用程序運行所需的文件和環境封裝在一起形成一個單獨的可執行文件,實現了與操作系統的隔離,但這樣會導致進程間通信受到限制,程序運行會不穩定。鏡像遮掩技術[10]是一種將所有可能被用到的軟件安裝在Golden image上,然后使用遮掩技術屏蔽應用軟件的技術,只有被授權的用戶才能看到相應軟件。該技術中任何對軟件的修改都要打開并改動這個龐大的Golden image。許多公司因為它龐大的鏡像規模而駁回了這種方案。
本文提出一種基于應用程序分層的鏡像管理機制并實現了鏡像管理系統IMsystem(Image Management System)。應用程序分層技術能將應用軟件與操作系統在存儲上進行分離,這些應用軟件變成抽象的應用軟件層,按照一定的順序疊加在基本鏡像(Golden image)之上。這個基本鏡像往往是大部分用戶公用的、基本的操作系統鏡像。而用戶需要的各種軟件和他們的個性化設置將于操作系統分離出來保存在應用軟件層中。
從用戶的視角來看,當他們使用應用程序和配置自己的工作環境時,所有軟件就像被安裝在了本地一樣,感受不到軟件與操作系統的隔閡。同時這也極大地方便了IT管理員,他們能夠根據用戶需求制作應用軟件層給用戶使用,在不影響父鏡像—子鏡像結構的情況下,實現高效率的更新與維護。
為了實現本文的研究目標,即能在桌面虛擬化環境下,有效地平衡鏡像的存儲、維護更新和保留用戶個性化三個方面的關系,提高鏡像的管理效率,有以下幾個問題需要被解決:
(1) 將應用程序與操作系統分離后,軟件就能以模塊化的形式加載,被用戶使用,該模塊應該包括哪些應用程序信息。
(2) 應用程序模塊應當以怎樣的方式存儲,用哪些數據結構來描述這些組件,模塊應該如何加載。
(3) 分離后的應用進程如何與操作系統通信,數據的訪問流程是怎樣的,如何達到和平時桌面環境下安裝的軟件一樣的使用效果。
Windows環境下大部分應用程序都需要被安裝才能使用,通常應用將個人設置寫入注冊表或者某個系統目錄的配置文件中。這些應用由兩個部分組成:第一部分是該應用進程安裝時創建的所有文件、文件夾和注冊表文件。第二部分是該程序運行時產生的個性化配置信息。假如能將這兩個部分的信息單獨儲存在一個沙箱中,與操作系統隔離但同時能夠滿足程序進程運行時的交互請求,這些軟件就成為了單獨的模塊。
應用程序分層本質是將應用軟件與內核和操作系統分離,一個應用軟件抽象為一個軟件層。一個軟件層是應用軟件文件和注冊表信息的集合。這些文件和注冊表信息在正常的安裝過程中被捕獲下來,保存在虛擬磁盤,如VMDK[11]或者VHD[12]等格式的磁盤中。如圖1所示。

圖1 應用程序分層模型
當一個軟件層被分發到虛擬機上時,虛擬磁盤將會被操作系統掛載,修改后的文件系統和驅動程序共同作用,應用程序就像被安裝在本地一樣能夠正常使用。所有對應用的讀寫請求都會被截獲然后被重定向至虛擬磁盤上。多個應用軟件層通過文件系統驅動與注冊表虛擬化技術疊加在一起,其中每個層有自己的優先級和共享機制。
大部分軟件需要經過安裝的過程才能使用,安裝的過程通常對操作系統有兩部分改動:文件、文件夾和注冊表。即使一個軟件不需要安裝,在它的運行過程中也會需要將用戶設置保存在Windows注冊表項或者一些特定的系統文件夾位置中。在應用程序分層模型中,這些都被存放在對應軟件層所屬的虛擬磁盤上,當用戶點擊軟件的可執行文件時,文件和注冊表讀寫請求將會被發送至操作系統內核,被修改過的文件過濾系統截獲這些請求并將它們重定向到新的位置上。
圖2描述了兩類應用程序運行的流程。一個應用程序需要訪問某個文件,這個請求會首先到達文件過濾驅動層。在驅動中已經對原本的讀寫文件API進行了修改,假如該文件是需要被重定向的,則會優先將該請求轉發到相應軟件層中。不需要應用程序層數據的應用如圖2中步驟(1)所示,需要應用程序層數據的應用訪問流程如步驟(2)到步驟(8)所示。

圖2 訪問數據流程
步驟(1)中該文件不需要被重定向,請求將會被正常下發,通過操作系統的文件系統驅動層,訪問保存在本地存儲或者網絡存儲上的文件。
步驟(2)中,用戶執行一個.exe文件產生了請求,該可執行文件位于軟件層1中,數據被載入到內存中,產生了一個新的應用軟件進程步驟(3)。該進程運行需要所對應的庫文件支持,根據之前已經建立好的映射關系,判斷該.dll文件位于軟件層1中,于是讀寫庫文件的請求被重定向到軟件層1步驟(4)。進程繼續執行,需要另外一個步驟(5)中的數據文件和步驟(7)中的某個注冊表項信息,這兩個文件都位于軟層1中,重定向過程和步驟(4)相同。步驟(8)中,進程要訪問的該文件不存在于軟件層1,根據映射關系查找到軟件層2,文件過濾驅動將讀寫請求重定向到軟件層2中。
基于應用程序分層模型的思想,鏡像管理系統IMsystem被設計出來。圖3展示了IMsystem系統的功能模塊設計圖。

圖3 系統功能模塊
IMsystem鏡像管理系統的功能具體體現在五個部分。其中每個模塊的功能為:(1) 復合文件系統:提供應用程序訪問文件的途徑,過濾并分類文件讀寫請求以及文件重定向功能。(2) 復合注冊表系統:提供應用程序訪問注冊表的途徑,管理虛擬化注冊表,過濾并分類注冊表讀寫請求以及注冊表重定向功能。(3) 應用程序資源捕捉模塊:捕捉應用軟件安裝的過程,確定應用程序的初始條件,將所有應用的資源統一歸并到一個集合當中。(4) 平臺管理機制:包含不同層的優先級分配機制、文件刪除標記(Token)機制以及數據寫時復制機制。(5) 更新與分發模塊:負責用戶鏡像的更新,和分發應用程序到操作系統讓用戶使用。本節著重介紹應用程序資源捕捉模塊和平臺管理機制,復合文件系統與復合注冊表系統的關鍵技術將在下一節介紹。
為了實現應用軟件和操作系統的分離,需要知道在安裝過程中,應用軟件對操作系統的修改,這些文件和注冊表的信息的集合可以記為S。設未裝軟件A的系統為Pre,裝了軟件A后的系統為After。那么可以認為:
After=Pre+S
將集合After減去集合Pre即可得到集合S。利用一些工具軟件如Total Uninstall[13]、installwatch[14]能得到集合S。這些軟件的原理是在安裝軟件前和安裝后分別對操作系統進行快照并保存,比對兩次快照,計算出修改過的部分,并將所有改動過的項保存下來。
S中的文件和注冊表信息可以分為三類:增加的、刪除的、修改的,它們會被打上相應的增加(added)、修改(modifeid)、刪除(deleted)標記,導出后的虛擬注冊表信息以.reg類型保存。而文件信息以原本的組織結構方式存儲在虛擬磁盤設備下的userApp name的子目錄下。
同時這些信息將以(文件名--源文件路徑--重定向路徑--所屬應用程序層--所屬集合--程序層優先級)索引形式保存在內部的哈希表結構中。方便后面的文件重定向及注冊表虛擬化操作。安裝應用和跟蹤安裝過程的操作應在干凈的裸系統下進行,防止過多干擾產生。
2.2.1優先級機制
當多個軟件層同時使用時,會產生文件和注冊表項的沖突,IMsystem采用優先級的方式,屬于高優先級層的數據覆蓋低優先級的。
如圖4所示,Windows OS層、App1層和App2層的優先級依次增高,File4文件同時存在于Spp1和App2的軟件層中,于是在App2層中的File4版本會被操作系統和用戶看到。

圖4 優先級和覆蓋機制
2.2.2刪除標記
如果一個軟件層被管理員設置為只讀的,那么用戶在刪除某個軟件層中的數據時,并不會真正刪除這個文件,而是在該文件上標記一個Token,Token信息儲存在哈希表中。當文件驅動截獲到訪問帶有Token的文件的行為時,直接在驅動相應的分發函數中進行對應的處理。這將會在下一節中說明。最終的結果是,應用程序層中的“刪除”實際效果和在“普通”桌面環境桌中所期望的刪除操作一樣。
2.2.3寫時復制
一般情況下,一個應用程序層會被多個用戶共享。當多個用戶操作同一個應用程序層時,為了防止該層的數據被修改,數據會被設置成只讀的。為了保存用戶的個性化修改,采用寫時復制[15]機制將寫入數據寫到個人數據層中。如果用戶對文件是刪除操作,則采用上文敘述的刪除機制,以標記Token的形式實現文件的“刪除”。如果用戶對文件是增加、修改操作,則將被修改的文件以副本形式存儲到用戶個人數據層,并將原文件映射到該副本文件上。這樣用戶以后將直接讀寫該副本文件。
3.1.1過濾設備的綁定
Windows系統中對文件的各種操作,如創建、打開、讀/寫、目錄的打開、創建、刪除等,所有這些I/O請求都是以IRP[16]形式發出的,驅動根據接收到的IRP請求類型,由不同的分發函數來處理。Windows中存在各種各樣的設備對象,每個設備對象分別接受請求,并完成實際硬件功能。一個物理設備的驅動通常有幾個驅動程序以分層的形式共同完成,每層一個設備對象,它們聯系在一起組成一個設備棧[17]。而IRP下發是從上而下的,創建一個IRP時,會同時創建一個和他關聯的IO_STACK_LOCATION數組,該數組以棧的形式存放在IRP棧中。IRP通過聯合IO_STACK_LOCATION來找到接下來需要發送到的設備對象的地址,進而觸發這個設備對象驅動的分發函數。如圖5所示,IRP以這樣的形式完成層層下發。

圖5 過濾設備與IRP棧、設備棧關系
過濾是在不改變上層與下層間的接口的情況下,在Windows內核中加入新的層,從而加入新的功能。過濾的本質就是對一個設備對象實現綁定,從而預先接收到發往給該設備對象的請求。文件系統過濾,則是綁定文件設備對象,該設備對象位于磁盤卷設備上層,主要目標是截獲所有的文件操作。在IMsystem中,實現過濾驅動的步驟如下:
(1) 文件過濾驅動程序綁定附著在文件卷設備上,在文件卷設備上層攔截發往該設備的請求。
(2) 攔截到請求后,根據功能邏輯,創建新的IRP消息與附著在下層的文件卷設備上的驅動程序通信。
(3) 創建完成例程,填寫處理不同類型的IRP的分發函數,實現重定向等功能的邏輯。
(4) 創建刪除例程,填寫與文件設備解綁定時的邏輯,供適當適合卸載過濾驅動。
設備在綁定后,與IRP棧和設備棧的關系如圖5所示。
3.1.2IRP的處理
文件重定向是在文件過濾的基礎上,將對文件A的操作轉移到文件B上。在IMsystem中,對用戶而言,不同軟件層上的軟件都會被安裝在C:Program Files文件夾中,而實際上所有的文件保存在各自應用程序層所屬虛擬磁盤下的userApp name子目錄下。當用戶點擊軟件圖標時,文件過濾系統將截獲軟件發出的IRP(I/O REQUEST PACKAGE),包括文件/目錄打開請求(主功能碼為IRP_MJ_CREATE)、文件/目錄信息查詢請求(主功能碼為IRP_QUERY_INFORMATION)、文件/目錄讀取請求(主功能碼為IRP_MJ_READ和IRP_MJ_WRITE)、以及負責結束文件操作的請求(主功能碼為IRP_MJ_CLEANUP和IRP_MJ_CLOSE)。在IMsystem中,綁定好過濾設備后,文件過濾驅動截獲應用向內核發送的每種IRP處理如下:
(1) 當收到IRP_MJ_CREATE請求時,代表一個新的文件或者文件夾被創建,或者一個存在的文件或者目錄被打開。而且這個請求總是會被設備第一個被收到。為了實現重定向功能,首先要獲得被訪問文件對象的信息,包括對象的命名、路徑、訪問權限等。圖3中,每個IRP都有與之關聯的??臻gIRP stack location,棧空間里面有文件對象的指針(File Object)。通過該指針獲得所需信息。文件的設備、盤符等信息在File Object->RealeatedObject中,而文件的相對路徑儲存在File Object->FileName中。合并它們得到文件的絕對路徑,這個全名包括卷設備對象的名字(例如,DeviceHarddiskvolume0Program Files 1.exe)。通過和之前存儲在哈希表中的路徑比對,如果不同則忽略該請求,直接將請求下發到操作系統默認的文件系統驅動程序。如果相同則代表該文件需要被重定向,此時將File Object->FileName的內存釋放掉,用重定向后的文件的完整路徑替換掉原來的路徑,填寫到File Object->FileName中。接著調用IoCompleteRequest()結束IRP并返回Status_Reparse。最后將該請求傳遞到下層的磁盤卷設備中。
(2) 當收到IRP_MJ_SET_INFORMATION請求時,意味著文件/文件夾的信息被查詢,如查詢文件/目錄的訪問權限、路徑。當查詢路徑信息時,如果該文件是被重定向過的,返回重定向后的虛擬路徑并不符合我們的要求。此時則根據哈希表中信息,返回原路徑。如果是沒被重定向過的文件對象,則調用默認處理函數。
(3) 當收到IRP_MJ_READ和IRP_MJ_WRITE的請求時,因為無論是應用層還是內核層的讀寫文件請求,都會產生該IRP,所以根據該IRP類型能截獲所有的讀寫請求。IMsystem中,通過從該IRP堆棧中取得文件對象,從文件對象中獲得讀寫文件的偏移地址和內容。因為之前打開/創建文件時已經將文件對象的路徑進行了修改,此時如果無其他要求可以直接調用默認的處理函數讀取和寫數據。
當文件驅動截獲到訪問帶有刪除令牌(Token)的文件的行為時,將分發函數里Irp->Iostatus.information中填充FILE_DOES_NOT_EXIST并返回status即可。
3.2.1注冊表虛擬化流程
IMsystem加載位于應用程序層中的注冊表文件時,會在客戶端操作系統注冊表的HKEY_USRSREDIKEYUSR目錄下創建對應的虛擬注冊表。比如應用進程要訪問HKEY_LOCAL_MACHINESOFTWAREAPP1Version值時,會將所有的請求的路徑參數重定向到HKEY_USRSREDIKEYUSRHKEY_LOCAL_MACHINESOFTWAREAPP1Version下,再執行相應操作。對于屬于增加和修改過的集合的數據,將會在這個重定向目錄下創建,且優先覆蓋原注冊表項。對于屬于刪除過的集合的注冊表項則被打上標記,請求操作返回不存在。如圖6所示,當一個注冊表操作請求被IMsystem的過濾驅動捕獲時,過濾系統查找索引,根據之前記錄的映射規則,決定要不要進行重定向操作。如果不用,則調用系統默認的注冊表API并等待下一個操作否則就注冊表操作重定向到相應的虛擬注冊表目錄。根據注冊表操作的類型,分別進行創建、刪除、和修改操作。

圖6 注冊表虛擬化流程圖
3.2.2注冊表虛擬化實現
要想實現注冊表的虛擬化,同樣也需要對注冊表進行監控和過濾。IMsystem使用Cmregsitercallback()這個注冊表管理函數,進行注冊表的監控管理,達到阻止或者修改一個注冊表操作的目的。CMregistercallback()提供了一個函數指針,通過這個函數指針注冊回調函數,在這個回調函數里面來實現代碼,當相應的注冊表事件被激活時,運行回調函數里面的邏輯。該函數的原型如下:
NTSTATUS CmRegisterCallback(
_In_ PEX_CALLBACK_FUNCTION Function,
_In_opt_ PVOID Context,
_Out_ PLARGE_INTEGERCookie
);
該函數三個參數分別為:回調函數的地址,為回調函數傳入的消息(在我們的程序中設為NULL),以及回調的句柄。對應的回調函數的原型如下:
NTSTATUS RegisterCallback(
_In_ PVOID CallbackContext
_In_opt_ PVOID Argument1
//操作類型
_In_opt_ PVOID Argument2
//保存操作詳細信息的結構體
);
該函數三個參數分別為:CMregistercallback()傳入的消息,操作類型對應的功能碼,和記錄有關操作信息的結構體指針。
IMsystem中,監控一個注冊表打開操作的步驟如下:
(1) 使用Cmregistercallback()注冊好一個監控回調函數。
(2) 當有打開注冊表項的操作發生時,回調函數被調用,此時Argument1的信息是RegNtPreOpenkey,即指打開操作前。Argument2是一個指向REG_OPEN_KEY_INFORMATION結構體的指針。
(3) 運行打開操作的重定向邏輯,詳細操作在后面敘述。
(4) 當操作完成后,回調函數又會被調用一次,此時Argument1的信息是RegNtPostOpenKey,Argument2是個指向REG_POST_OPERATION_INFORMATION結構體的指針。釋放對象句柄并結束打開操作。
以打開注冊表為例說明重定向邏輯的實現。無論是用戶模式使用regOpenkey函數,還是內核模式下使用ZWopenkey函數,都會觸發監控的回調。REG_OPEN_KEY_INFORMATION結構體里面含有被操作注冊表項的對象指針Object,用QueryNameString()等函數獲得該注冊表項的路徑。將此路徑修改為需要重定向后的路徑,然接著將這修改后的對象OBJECT以參數形式,傳入內核模式的ZWopenkey函數來打開注冊表,并將修改后的信息重新填充到reg_pre_open_key_information結構體里,包括GrantedAccess和ResultObject等結構體成員。
對于重定向虛擬化注冊表,最重要的就是對打開創建函數的重定向,其他注冊表操作調用過程原理相同。
IMsystem運行的架構環境如圖7所示。

圖7 IMsystem環境架構圖
整個系統由桌面分發系統、Hypervisor以及終端服務器組成。桌面分發系統將更新策略通過虛擬機管理器Hypervisor,發送到終端的服務器中。Hypervisor中設有安裝軟件的參照機器,而操作系統、應用程序層以及用戶個性化層存儲在終端服務器中,當需要更新時,應用程序層和用戶個性化層由終端服務器分發,并由客戶端機器掛載。
以安裝WinRAR軟件的過程為例。Winrar使用所需要的注冊表文件以.reg文件形式存放在虛擬磁盤中,加載應用程序層后掛載在私有注冊表HKEY_USRS用戶名下,程序使用時產生的修改都會被重定向到該目錄。測試結果如表1所示。

表1 注冊表虛擬化測試結果

續表1
應用程序層被掛載后,以分區E的形式出現在文件系統中。當操作系統接受到用戶對屬于Winrar應用的文件執行的各種文件請求時,如打開、修改和刪除C:WinRAR eadme.txt,這些操作所指定的文件將重定向到終端服務器的E分區下的cWinrar eadme.txt文件,并對該文件執行了相應操作。測試結果如表2所示。

表2 文件重定向功能測試結果
結合表1和表2可以說明,將WinRAR軟件從操作系統中分離出來,形成新的抽象層,能有效地執行和更新。
以制作和更新Winrar軟件的應用程序層為例。參照機器的操作系統為Win7 64位。管理員在參照機器上,安裝好Winrar軟件并記錄安裝過程,制作成應用程序層,記為Layer1。通過設置更新策略,將Layer1統一分發給用戶。在本次使用中,所有用戶共用同一個母鏡像,其操作系統也為Win7 64位。掛載Layer1后,所有桌面虛擬化用戶都能使用該軟件。
管理員將更新好的最新版本Winrar,重新制作成應用程序層Layer2并分發給用戶。用戶在加載Layer2層以后,能夠使用最新版本的Winrar,達到了用戶子鏡像統一更新的功能。
復合文件系統和復合注冊表系統的引入,改變了操作系統的處理流程,加入了新的功能和邏輯,這會給操作系統帶來一些影響。為了執行我們添加的代碼,操作系統將會花費一些資源開銷,主要體現在以下兩個方面:
(1) 文件系統過濾驅動處理IRP請求的開銷,復合文件系統需要截獲所有I/O請求并進行判斷,其中包括查找索引結構來獲取信息,根據這些信息和I/O請求的種類進行重定向。這一定程度上減緩了操作系統處理請求的速度。
(2) 寫時復制機制引起的資源消耗,用戶第一次修改應用程序層文件時,會有自動產生副本文件并進行映射的過程。
通過比較正常系統和部署了IMsystem的操作系統兩者,運行常用操作例程所消耗的時鐘周期,來評估IMsystem對系統資源的開銷。在每個重定向函數的入口處和出口處調用rtdsc指令能夠獲得CPU的時間戳,出口處的時間減去入口處的時間即為該函數例程處理請求消耗的時鐘周期。
考慮到需要評價多個類型的系統調用,包括文件打開、文件創建、文件目錄查詢、文件信息查詢等,單一的測試腳本無法滿足要求。所以模擬真實情況,用爬蟲工具隨機訪問網絡資源,來隨機地產生系統調用。首先在正常Win7 64位操作系統下運行爬蟲工具,運行一段時間后記錄每個系統例程Pi被調用的次數Si和它們的時間周期Ti。接著在部署了IMsystem平臺的Win7 64位系統上運行爬蟲工具,讓每個調用Pi運行和Si相同的次數,記錄它們的時間周期Ti。
表3列出了文件系統常用的系統調用例程,和它們在兩種情境下的時鐘周期,并計算出引入復合文件系統后的資源負載。在所有的操作請求中文件請求最頻繁,所有用文件調用例程來作為評估的對象。從表中可知,部署IMsystem平臺后系統調用資源開銷普遍增高。增加最高的57%的系統調用是NtQueryAttributeFile,該例程用于獲得文件屬性信息。該項較高是因為Windows系統中文件的相互關聯性的原因。盡管如此,這些資源負載率都在可接受的范圍內。
本文設計并實現了基于應用程序分層模型的鏡像管理機制,將應用程序和用戶數據與操作系統分離。用戶在使用過程中動態加載應用程序層,通過文件系統驅動和注冊表虛擬化技術實現請求與數據的重定向訪問和程序的執行。設計并實現了優先級機制解決了層與層之間的沖突問題。實驗表明,管理員能通過IMSYSTEM平臺,快速高效地將軟件更新分發給特定群組的用戶。
下一步的工作計劃是研究應用程序分層模型對應用進程間的通信的影響,與安裝在本地的應用軟件對比測試,以及和軟件虛擬化技術等進行對比測試。
[1] 張建中,陳松喬,方正,等.一種基于SAN架構的存儲網絡系統的設計與實現[J].中南大學學報(自然科學版),2008(2):350-355.
[2] 陽小珊,邱全偉,鄭良,等.NAS存儲系統性能測評方法研究[J].計算機研究與發展,2012,49(s1):346-351.
[3] 陳建.基于Xen的domain0內核的研究[D].浙江大學,2008.
[4] Pasupathy S,Prabhakaran V,Goodson G R,et al.System and method for quickly determining changed metadata using persistent consistency point image differencing: U.S.Patent 7,693,864[P].2010-4-6.
[5] Ben-Shaul I Z,Zamir T,Vasetsky L,et al.Fast provisioning of a centralized virtual desktop using linked clones with overlaid centralized virtual desktop layers:U.S.Patent 9,417,889[P].2016-8-16.
[6] MegaRAID L S I N.Deploy 200 Citrix XenDesktop 7.1 Hosted Virtual Desktops on Cisco UCS C240 M3 Rack Server with LSI Nytro MegaRAID and SAS Drives[Z].2014.
[7] Pasupathy S,Prabhakaran V,Goodson G R,et al.System and method for quickly determining changed metadata using persistent consistency point image differencing:U.S.Patent 7,693,864[P].2010-4-6.
[8] Fries R,Sanghvi A.Virtual machine image composition and signing:U.S.Patent Application 13/163,612[P].2012-12-20.
[9] Powers J,Joyce R A.Lightweight application virtualization architecture:U.S.Patent 9,501,304[P].2016-11-22.
[10] Rafael Weingartner,Garbriel Beims Brascher,Carlos Becker Westphall.Cloud resource management:A survey on forecasting and profiling models[J].Journal of Network and Computer Applications,2015,47(2):99-106.
[11] Meyer D T,Aggarwal G,Cully B,et al.Parallax:virtual disks for virtual machines[J].Acm Sigops Operating Systems Review,2008,42(4):41-54.
[12] 姜躍.面向桌面虛擬化的分布式鏡像存儲研究[D].華中科技大學,2012.
[13] 徐繼偉,張文博,魏峻,等.一種基于聚類分組的虛擬機鏡像去冗余方法[J].軟件學報,2016,27(2):466-480.
[14] Xun Zhao,Yang Zhang,Yongwei Wu.Liquid:A Scalable Deduplication File System for Virtual Machine Images[J].IEEE Transactions on Parallel and Distributed Systems,2014,25(5):1257-1266.
[15] Baimetov I,Dobrovolskiy N N,Tormasov A G,et al.Method to share identical files in a common area for virtual machines having the same operating system version and using a copy on write to place a copy of the shared identical file in a private area of the corresponding virtual machine when a virtual machine attempts to modify the shared identical file:U.S.Patent 8,656,386[P].2014-2-18.
[16] Zhang W,Tang H,Jiang H,et al.Multi-level Selective Deduplication for VM Snapshots in Cloud Storage[C]//IEEE Fifth International Conference on Cloud Computing.IEEE Computer Society,2012:550-557.
[17] 顧欣.文件透明加密保護系統的設計與實現[D].西安電子科技大學,2012.