亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于應(yīng)用程序分層技術(shù)的鏡像管理機制研究

        2018-04-18 11:07:39李毅倫王大成王建新
        計算機應(yīng)用與軟件 2018年2期
        關(guān)鍵詞:用戶設(shè)備

        李毅倫 宋 虹 王大成 王建新

        (中南大學(xué)信息科學(xué)與工程學(xué)院 湖南 長沙 410083)

        0 引 言

        桌面虛擬化技術(shù)蓬勃發(fā)展,正在被越來越多的企業(yè)和個人用戶部署。桌面虛擬化技術(shù)降低了對客戶端硬件配置的要求,也降低了用戶的使用難度和門檻。管理員能根據(jù)不同類型用戶的要求,統(tǒng)一快速地配置大量桌面和應(yīng)用程序。同時大大減少了企業(yè)的維護成本。然而隨著桌面虛擬化的普及,一些問題也顯現(xiàn)出來。用戶希望在他的多個設(shè)備(PC設(shè)備、移動設(shè)備)間建立起統(tǒng)一、專屬的個人環(huán)境視圖。這個環(huán)境包括常用應(yīng)用軟件、用戶個人數(shù)據(jù)、系統(tǒng)個性化配置等。但是隨著軟件的日益豐富和版本的層出不窮,不同用戶群組之間的需求差別很大。另一方面,為了存儲這些用戶的差異性信息,鏡像所占用的磁盤空間也越來越大,這也降低了IT人員更新和管理維護鏡像的效率。如何在保證用戶個人配置的前提下,減少存儲空間并高效率地管理維護鏡像,成為亟待解決的問題。

        在虛擬機鏡像存儲模式中,假設(shè)為每個用戶分配100 GB的存儲空間,那么1 000個用戶就需要100 TB的企業(yè)級存儲。目前企業(yè)級的桌面虛擬化都采用SAN[1]和NAS[2]存儲方式,而中小規(guī)模的企業(yè)主要采用后者。NAS模式是在虛擬域0(domain 0)[3]上掛載鏡像,根據(jù)差分磁盤[4]的原理,對根鏡像(Golden image)做兩級以上的快照。Vmware公司開發(fā)的Linked clone[5]和Citrix的MCS[6]鏡像存儲方式本質(zhì)上也都是基于差分存儲的原理[7],從幾個少數(shù)的根鏡像中派生子鏡像,每個子鏡像只存儲與母版鏡像的差異部分。這種存儲方式大大減少了存儲成本,而逐漸成為業(yè)界的主流。但這種方式也給軟件的更新帶來了不便,要想統(tǒng)一地安裝或者更新某個軟件,就得對已經(jīng)布置好的Golden image作出修改,而根據(jù)差分磁盤的存儲結(jié)構(gòu)和原理,修改會導(dǎo)致其派生出的子鏡像無法使用[8]。在這種情況下,對每個用戶的子鏡像單獨進行更新維護將會產(chǎn)生大量的開銷。

        應(yīng)用軟件的更新和用戶的桌面環(huán)境往往是整體的,耦合性極高的,操作系統(tǒng)、系統(tǒng)軟件、用戶自己安裝的軟件、用戶個人數(shù)據(jù)以及插件等難以徹底分離,很難保證在互不影響的前提下進行數(shù)據(jù)的修改。如何有效地平衡鏡像存儲、鏡像維護更新和保留用戶個性化配置這三個方面,是一個難題。應(yīng)用程序虛擬化[9]將所有應(yīng)用程序運行所需的文件和環(huán)境封裝在一起形成一個單獨的可執(zhí)行文件,實現(xiàn)了與操作系統(tǒng)的隔離,但這樣會導(dǎo)致進程間通信受到限制,程序運行會不穩(wěn)定。鏡像遮掩技術(shù)[10]是一種將所有可能被用到的軟件安裝在Golden image上,然后使用遮掩技術(shù)屏蔽應(yīng)用軟件的技術(shù),只有被授權(quán)的用戶才能看到相應(yīng)軟件。該技術(shù)中任何對軟件的修改都要打開并改動這個龐大的Golden image。許多公司因為它龐大的鏡像規(guī)模而駁回了這種方案。

        本文提出一種基于應(yīng)用程序分層的鏡像管理機制并實現(xiàn)了鏡像管理系統(tǒng)IMsystem(Image Management System)。應(yīng)用程序分層技術(shù)能將應(yīng)用軟件與操作系統(tǒng)在存儲上進行分離,這些應(yīng)用軟件變成抽象的應(yīng)用軟件層,按照一定的順序疊加在基本鏡像(Golden image)之上。這個基本鏡像往往是大部分用戶公用的、基本的操作系統(tǒng)鏡像。而用戶需要的各種軟件和他們的個性化設(shè)置將于操作系統(tǒng)分離出來保存在應(yīng)用軟件層中。

        從用戶的視角來看,當(dāng)他們使用應(yīng)用程序和配置自己的工作環(huán)境時,所有軟件就像被安裝在了本地一樣,感受不到軟件與操作系統(tǒng)的隔閡。同時這也極大地方便了IT管理員,他們能夠根據(jù)用戶需求制作應(yīng)用軟件層給用戶使用,在不影響父鏡像—子鏡像結(jié)構(gòu)的情況下,實現(xiàn)高效率的更新與維護。

        1 應(yīng)用程序分層模型

        為了實現(xiàn)本文的研究目標(biāo),即能在桌面虛擬化環(huán)境下,有效地平衡鏡像的存儲、維護更新和保留用戶個性化三個方面的關(guān)系,提高鏡像的管理效率,有以下幾個問題需要被解決:

        (1) 將應(yīng)用程序與操作系統(tǒng)分離后,軟件就能以模塊化的形式加載,被用戶使用,該模塊應(yīng)該包括哪些應(yīng)用程序信息。

        (2) 應(yīng)用程序模塊應(yīng)當(dāng)以怎樣的方式存儲,用哪些數(shù)據(jù)結(jié)構(gòu)來描述這些組件,模塊應(yīng)該如何加載。

        (3) 分離后的應(yīng)用進程如何與操作系統(tǒng)通信,數(shù)據(jù)的訪問流程是怎樣的,如何達到和平時桌面環(huán)境下安裝的軟件一樣的使用效果。

        1.1 模型結(jié)構(gòu)

        Windows環(huán)境下大部分應(yīng)用程序都需要被安裝才能使用,通常應(yīng)用將個人設(shè)置寫入注冊表或者某個系統(tǒng)目錄的配置文件中。這些應(yīng)用由兩個部分組成:第一部分是該應(yīng)用進程安裝時創(chuàng)建的所有文件、文件夾和注冊表文件。第二部分是該程序運行時產(chǎn)生的個性化配置信息。假如能將這兩個部分的信息單獨儲存在一個沙箱中,與操作系統(tǒng)隔離但同時能夠滿足程序進程運行時的交互請求,這些軟件就成為了單獨的模塊。

        應(yīng)用程序分層本質(zhì)是將應(yīng)用軟件與內(nèi)核和操作系統(tǒng)分離,一個應(yīng)用軟件抽象為一個軟件層。一個軟件層是應(yīng)用軟件文件和注冊表信息的集合。這些文件和注冊表信息在正常的安裝過程中被捕獲下來,保存在虛擬磁盤,如VMDK[11]或者VHD[12]等格式的磁盤中。如圖1所示。

        圖1 應(yīng)用程序分層模型

        當(dāng)一個軟件層被分發(fā)到虛擬機上時,虛擬磁盤將會被操作系統(tǒng)掛載,修改后的文件系統(tǒng)和驅(qū)動程序共同作用,應(yīng)用程序就像被安裝在本地一樣能夠正常使用。所有對應(yīng)用的讀寫請求都會被截獲然后被重定向至虛擬磁盤上。多個應(yīng)用軟件層通過文件系統(tǒng)驅(qū)動與注冊表虛擬化技術(shù)疊加在一起,其中每個層有自己的優(yōu)先級和共享機制。

        1.2 訪問應(yīng)用程序數(shù)據(jù)

        大部分軟件需要經(jīng)過安裝的過程才能使用,安裝的過程通常對操作系統(tǒng)有兩部分改動:文件、文件夾和注冊表。即使一個軟件不需要安裝,在它的運行過程中也會需要將用戶設(shè)置保存在Windows注冊表項或者一些特定的系統(tǒng)文件夾位置中。在應(yīng)用程序分層模型中,這些都被存放在對應(yīng)軟件層所屬的虛擬磁盤上,當(dāng)用戶點擊軟件的可執(zhí)行文件時,文件和注冊表讀寫請求將會被發(fā)送至操作系統(tǒng)內(nèi)核,被修改過的文件過濾系統(tǒng)截獲這些請求并將它們重定向到新的位置上。

        圖2描述了兩類應(yīng)用程序運行的流程。一個應(yīng)用程序需要訪問某個文件,這個請求會首先到達文件過濾驅(qū)動層。在驅(qū)動中已經(jīng)對原本的讀寫文件API進行了修改,假如該文件是需要被重定向的,則會優(yōu)先將該請求轉(zhuǎn)發(fā)到相應(yīng)軟件層中。不需要應(yīng)用程序?qū)訑?shù)據(jù)的應(yīng)用如圖2中步驟(1)所示,需要應(yīng)用程序?qū)訑?shù)據(jù)的應(yīng)用訪問流程如步驟(2)到步驟(8)所示。

        圖2 訪問數(shù)據(jù)流程

        步驟(1)中該文件不需要被重定向,請求將會被正常下發(fā),通過操作系統(tǒng)的文件系統(tǒng)驅(qū)動層,訪問保存在本地存儲或者網(wǎng)絡(luò)存儲上的文件。

        步驟(2)中,用戶執(zhí)行一個.exe文件產(chǎn)生了請求,該可執(zhí)行文件位于軟件層1中,數(shù)據(jù)被載入到內(nèi)存中,產(chǎn)生了一個新的應(yīng)用軟件進程步驟(3)。該進程運行需要所對應(yīng)的庫文件支持,根據(jù)之前已經(jīng)建立好的映射關(guān)系,判斷該.dll文件位于軟件層1中,于是讀寫庫文件的請求被重定向到軟件層1步驟(4)。進程繼續(xù)執(zhí)行,需要另外一個步驟(5)中的數(shù)據(jù)文件和步驟(7)中的某個注冊表項信息,這兩個文件都位于軟層1中,重定向過程和步驟(4)相同。步驟(8)中,進程要訪問的該文件不存在于軟件層1,根據(jù)映射關(guān)系查找到軟件層2,文件過濾驅(qū)動將讀寫請求重定向到軟件層2中。

        2 基于應(yīng)用程序分層模型的鏡像管理系統(tǒng)

        基于應(yīng)用程序分層模型的思想,鏡像管理系統(tǒng)IMsystem被設(shè)計出來。圖3展示了IMsystem系統(tǒng)的功能模塊設(shè)計圖。

        圖3 系統(tǒng)功能模塊

        IMsystem鏡像管理系統(tǒng)的功能具體體現(xiàn)在五個部分。其中每個模塊的功能為:(1) 復(fù)合文件系統(tǒng):提供應(yīng)用程序訪問文件的途徑,過濾并分類文件讀寫請求以及文件重定向功能。(2) 復(fù)合注冊表系統(tǒng):提供應(yīng)用程序訪問注冊表的途徑,管理虛擬化注冊表,過濾并分類注冊表讀寫請求以及注冊表重定向功能。(3) 應(yīng)用程序資源捕捉模塊:捕捉應(yīng)用軟件安裝的過程,確定應(yīng)用程序的初始條件,將所有應(yīng)用的資源統(tǒng)一歸并到一個集合當(dāng)中。(4) 平臺管理機制:包含不同層的優(yōu)先級分配機制、文件刪除標(biāo)記(Token)機制以及數(shù)據(jù)寫時復(fù)制機制。(5) 更新與分發(fā)模塊:負(fù)責(zé)用戶鏡像的更新,和分發(fā)應(yīng)用程序到操作系統(tǒng)讓用戶使用。本節(jié)著重介紹應(yīng)用程序資源捕捉模塊和平臺管理機制,復(fù)合文件系統(tǒng)與復(fù)合注冊表系統(tǒng)的關(guān)鍵技術(shù)將在下一節(jié)介紹。

        2.1 應(yīng)用程序資源捕捉

        為了實現(xiàn)應(yīng)用軟件和操作系統(tǒng)的分離,需要知道在安裝過程中,應(yīng)用軟件對操作系統(tǒng)的修改,這些文件和注冊表的信息的集合可以記為S。設(shè)未裝軟件A的系統(tǒng)為Pre,裝了軟件A后的系統(tǒng)為After。那么可以認(rèn)為:

        After=Pre+S

        將集合After減去集合Pre即可得到集合S。利用一些工具軟件如Total Uninstall[13]、installwatch[14]能得到集合S。這些軟件的原理是在安裝軟件前和安裝后分別對操作系統(tǒng)進行快照并保存,比對兩次快照,計算出修改過的部分,并將所有改動過的項保存下來。

        S中的文件和注冊表信息可以分為三類:增加的、刪除的、修改的,它們會被打上相應(yīng)的增加(added)、修改(modifeid)、刪除(deleted)標(biāo)記,導(dǎo)出后的虛擬注冊表信息以.reg類型保存。而文件信息以原本的組織結(jié)構(gòu)方式存儲在虛擬磁盤設(shè)備下的userApp name的子目錄下。

        同時這些信息將以(文件名--源文件路徑--重定向路徑--所屬應(yīng)用程序?qū)?-所屬集合--程序?qū)觾?yōu)先級)索引形式保存在內(nèi)部的哈希表結(jié)構(gòu)中。方便后面的文件重定向及注冊表虛擬化操作。安裝應(yīng)用和跟蹤安裝過程的操作應(yīng)在干凈的裸系統(tǒng)下進行,防止過多干擾產(chǎn)生。

        2.2 應(yīng)用程序分層模型管理機制

        2.2.1優(yōu)先級機制

        當(dāng)多個軟件層同時使用時,會產(chǎn)生文件和注冊表項的沖突,IMsystem采用優(yōu)先級的方式,屬于高優(yōu)先級層的數(shù)據(jù)覆蓋低優(yōu)先級的。

        如圖4所示,Windows OS層、App1層和App2層的優(yōu)先級依次增高,F(xiàn)ile4文件同時存在于Spp1和App2的軟件層中,于是在App2層中的File4版本會被操作系統(tǒng)和用戶看到。

        圖4 優(yōu)先級和覆蓋機制

        2.2.2刪除標(biāo)記

        如果一個軟件層被管理員設(shè)置為只讀的,那么用戶在刪除某個軟件層中的數(shù)據(jù)時,并不會真正刪除這個文件,而是在該文件上標(biāo)記一個Token,Token信息儲存在哈希表中。當(dāng)文件驅(qū)動截獲到訪問帶有Token的文件的行為時,直接在驅(qū)動相應(yīng)的分發(fā)函數(shù)中進行對應(yīng)的處理。這將會在下一節(jié)中說明。最終的結(jié)果是,應(yīng)用程序?qū)又械摹皠h除”實際效果和在“普通”桌面環(huán)境桌中所期望的刪除操作一樣。

        2.2.3寫時復(fù)制

        一般情況下,一個應(yīng)用程序?qū)訒欢鄠€用戶共享。當(dāng)多個用戶操作同一個應(yīng)用程序?qū)訒r,為了防止該層的數(shù)據(jù)被修改,數(shù)據(jù)會被設(shè)置成只讀的。為了保存用戶的個性化修改,采用寫時復(fù)制[15]機制將寫入數(shù)據(jù)寫到個人數(shù)據(jù)層中。如果用戶對文件是刪除操作,則采用上文敘述的刪除機制,以標(biāo)記Token的形式實現(xiàn)文件的“刪除”。如果用戶對文件是增加、修改操作,則將被修改的文件以副本形式存儲到用戶個人數(shù)據(jù)層,并將原文件映射到該副本文件上。這樣用戶以后將直接讀寫該副本文件。

        3 關(guān)鍵技術(shù)實現(xiàn)

        3.1 文件重定向

        3.1.1過濾設(shè)備的綁定

        Windows系統(tǒng)中對文件的各種操作,如創(chuàng)建、打開、讀/寫、目錄的打開、創(chuàng)建、刪除等,所有這些I/O請求都是以IRP[16]形式發(fā)出的,驅(qū)動根據(jù)接收到的IRP請求類型,由不同的分發(fā)函數(shù)來處理。Windows中存在各種各樣的設(shè)備對象,每個設(shè)備對象分別接受請求,并完成實際硬件功能。一個物理設(shè)備的驅(qū)動通常有幾個驅(qū)動程序以分層的形式共同完成,每層一個設(shè)備對象,它們聯(lián)系在一起組成一個設(shè)備棧[17]。而IRP下發(fā)是從上而下的,創(chuàng)建一個IRP時,會同時創(chuàng)建一個和他關(guān)聯(lián)的IO_STACK_LOCATION數(shù)組,該數(shù)組以棧的形式存放在IRP棧中。IRP通過聯(lián)合IO_STACK_LOCATION來找到接下來需要發(fā)送到的設(shè)備對象的地址,進而觸發(fā)這個設(shè)備對象驅(qū)動的分發(fā)函數(shù)。如圖5所示,IRP以這樣的形式完成層層下發(fā)。

        圖5 過濾設(shè)備與IRP棧、設(shè)備棧關(guān)系

        過濾是在不改變上層與下層間的接口的情況下,在Windows內(nèi)核中加入新的層,從而加入新的功能。過濾的本質(zhì)就是對一個設(shè)備對象實現(xiàn)綁定,從而預(yù)先接收到發(fā)往給該設(shè)備對象的請求。文件系統(tǒng)過濾,則是綁定文件設(shè)備對象,該設(shè)備對象位于磁盤卷設(shè)備上層,主要目標(biāo)是截獲所有的文件操作。在IMsystem中,實現(xiàn)過濾驅(qū)動的步驟如下:

        (1) 文件過濾驅(qū)動程序綁定附著在文件卷設(shè)備上,在文件卷設(shè)備上層攔截發(fā)往該設(shè)備的請求。

        (2) 攔截到請求后,根據(jù)功能邏輯,創(chuàng)建新的IRP消息與附著在下層的文件卷設(shè)備上的驅(qū)動程序通信。

        (3) 創(chuàng)建完成例程,填寫處理不同類型的IRP的分發(fā)函數(shù),實現(xiàn)重定向等功能的邏輯。

        (4) 創(chuàng)建刪除例程,填寫與文件設(shè)備解綁定時的邏輯,供適當(dāng)適合卸載過濾驅(qū)動。

        設(shè)備在綁定后,與IRP棧和設(shè)備棧的關(guān)系如圖5所示。

        3.1.2IRP的處理

        文件重定向是在文件過濾的基礎(chǔ)上,將對文件A的操作轉(zhuǎn)移到文件B上。在IMsystem中,對用戶而言,不同軟件層上的軟件都會被安裝在C:Program Files文件夾中,而實際上所有的文件保存在各自應(yīng)用程序?qū)铀鶎偬摂M磁盤下的userApp name子目錄下。當(dāng)用戶點擊軟件圖標(biāo)時,文件過濾系統(tǒng)將截獲軟件發(fā)出的IRP(I/O REQUEST PACKAGE),包括文件/目錄打開請求(主功能碼為IRP_MJ_CREATE)、文件/目錄信息查詢請求(主功能碼為IRP_QUERY_INFORMATION)、文件/目錄讀取請求(主功能碼為IRP_MJ_READ和IRP_MJ_WRITE)、以及負(fù)責(zé)結(jié)束文件操作的請求(主功能碼為IRP_MJ_CLEANUP和IRP_MJ_CLOSE)。在IMsystem中,綁定好過濾設(shè)備后,文件過濾驅(qū)動截獲應(yīng)用向內(nèi)核發(fā)送的每種IRP處理如下:

        (1) 當(dāng)收到IRP_MJ_CREATE請求時,代表一個新的文件或者文件夾被創(chuàng)建,或者一個存在的文件或者目錄被打開。而且這個請求總是會被設(shè)備第一個被收到。為了實現(xiàn)重定向功能,首先要獲得被訪問文件對象的信息,包括對象的命名、路徑、訪問權(quán)限等。圖3中,每個IRP都有與之關(guān)聯(lián)的??臻gIRP stack location,??臻g里面有文件對象的指針(File Object)。通過該指針獲得所需信息。文件的設(shè)備、盤符等信息在File Object->RealeatedObject中,而文件的相對路徑儲存在File Object->FileName中。合并它們得到文件的絕對路徑,這個全名包括卷設(shè)備對象的名字(例如,DeviceHarddiskvolume0Program Files 1.exe)。通過和之前存儲在哈希表中的路徑比對,如果不同則忽略該請求,直接將請求下發(fā)到操作系統(tǒng)默認(rèn)的文件系統(tǒng)驅(qū)動程序。如果相同則代表該文件需要被重定向,此時將File Object->FileName的內(nèi)存釋放掉,用重定向后的文件的完整路徑替換掉原來的路徑,填寫到File Object->FileName中。接著調(diào)用IoCompleteRequest()結(jié)束IRP并返回Status_Reparse。最后將該請求傳遞到下層的磁盤卷設(shè)備中。

        (2) 當(dāng)收到IRP_MJ_SET_INFORMATION請求時,意味著文件/文件夾的信息被查詢,如查詢文件/目錄的訪問權(quán)限、路徑。當(dāng)查詢路徑信息時,如果該文件是被重定向過的,返回重定向后的虛擬路徑并不符合我們的要求。此時則根據(jù)哈希表中信息,返回原路徑。如果是沒被重定向過的文件對象,則調(diào)用默認(rèn)處理函數(shù)。

        (3) 當(dāng)收到IRP_MJ_READ和IRP_MJ_WRITE的請求時,因為無論是應(yīng)用層還是內(nèi)核層的讀寫文件請求,都會產(chǎn)生該IRP,所以根據(jù)該IRP類型能截獲所有的讀寫請求。IMsystem中,通過從該IRP堆棧中取得文件對象,從文件對象中獲得讀寫文件的偏移地址和內(nèi)容。因為之前打開/創(chuàng)建文件時已經(jīng)將文件對象的路徑進行了修改,此時如果無其他要求可以直接調(diào)用默認(rèn)的處理函數(shù)讀取和寫數(shù)據(jù)。

        當(dāng)文件驅(qū)動截獲到訪問帶有刪除令牌(Token)的文件的行為時,將分發(fā)函數(shù)里Irp->Iostatus.information中填充FILE_DOES_NOT_EXIST并返回status即可。

        3.2 注冊表虛擬化

        3.2.1注冊表虛擬化流程

        IMsystem加載位于應(yīng)用程序?qū)又械淖员砦募r,會在客戶端操作系統(tǒng)注冊表的HKEY_USRSREDIKEYUSR目錄下創(chuàng)建對應(yīng)的虛擬注冊表。比如應(yīng)用進程要訪問HKEY_LOCAL_MACHINESOFTWAREAPP1Version值時,會將所有的請求的路徑參數(shù)重定向到HKEY_USRSREDIKEYUSRHKEY_LOCAL_MACHINESOFTWAREAPP1Version下,再執(zhí)行相應(yīng)操作。對于屬于增加和修改過的集合的數(shù)據(jù),將會在這個重定向目錄下創(chuàng)建,且優(yōu)先覆蓋原注冊表項。對于屬于刪除過的集合的注冊表項則被打上標(biāo)記,請求操作返回不存在。如圖6所示,當(dāng)一個注冊表操作請求被IMsystem的過濾驅(qū)動捕獲時,過濾系統(tǒng)查找索引,根據(jù)之前記錄的映射規(guī)則,決定要不要進行重定向操作。如果不用,則調(diào)用系統(tǒng)默認(rèn)的注冊表API并等待下一個操作否則就注冊表操作重定向到相應(yīng)的虛擬注冊表目錄。根據(jù)注冊表操作的類型,分別進行創(chuàng)建、刪除、和修改操作。

        圖6 注冊表虛擬化流程圖

        3.2.2注冊表虛擬化實現(xiàn)

        要想實現(xiàn)注冊表的虛擬化,同樣也需要對注冊表進行監(jiān)控和過濾。IMsystem使用Cmregsitercallback()這個注冊表管理函數(shù),進行注冊表的監(jiān)控管理,達到阻止或者修改一個注冊表操作的目的。CMregistercallback()提供了一個函數(shù)指針,通過這個函數(shù)指針注冊回調(diào)函數(shù),在這個回調(diào)函數(shù)里面來實現(xiàn)代碼,當(dāng)相應(yīng)的注冊表事件被激活時,運行回調(diào)函數(shù)里面的邏輯。該函數(shù)的原型如下:

        NTSTATUS CmRegisterCallback(

        _In_ PEX_CALLBACK_FUNCTION Function,

        _In_opt_ PVOID Context,

        _Out_ PLARGE_INTEGERCookie

        );

        該函數(shù)三個參數(shù)分別為:回調(diào)函數(shù)的地址,為回調(diào)函數(shù)傳入的消息(在我們的程序中設(shè)為NULL),以及回調(diào)的句柄。對應(yīng)的回調(diào)函數(shù)的原型如下:

        NTSTATUS RegisterCallback(

        _In_ PVOID CallbackContext

        _In_opt_ PVOID Argument1

        //操作類型

        _In_opt_ PVOID Argument2

        //保存操作詳細(xì)信息的結(jié)構(gòu)體

        );

        該函數(shù)三個參數(shù)分別為:CMregistercallback()傳入的消息,操作類型對應(yīng)的功能碼,和記錄有關(guān)操作信息的結(jié)構(gòu)體指針。

        IMsystem中,監(jiān)控一個注冊表打開操作的步驟如下:

        (1) 使用Cmregistercallback()注冊好一個監(jiān)控回調(diào)函數(shù)。

        (2) 當(dāng)有打開注冊表項的操作發(fā)生時,回調(diào)函數(shù)被調(diào)用,此時Argument1的信息是RegNtPreOpenkey,即指打開操作前。Argument2是一個指向REG_OPEN_KEY_INFORMATION結(jié)構(gòu)體的指針。

        (3) 運行打開操作的重定向邏輯,詳細(xì)操作在后面敘述。

        (4) 當(dāng)操作完成后,回調(diào)函數(shù)又會被調(diào)用一次,此時Argument1的信息是RegNtPostOpenKey,Argument2是個指向REG_POST_OPERATION_INFORMATION結(jié)構(gòu)體的指針。釋放對象句柄并結(jié)束打開操作。

        以打開注冊表為例說明重定向邏輯的實現(xiàn)。無論是用戶模式使用regOpenkey函數(shù),還是內(nèi)核模式下使用ZWopenkey函數(shù),都會觸發(fā)監(jiān)控的回調(diào)。REG_OPEN_KEY_INFORMATION結(jié)構(gòu)體里面含有被操作注冊表項的對象指針Object,用QueryNameString()等函數(shù)獲得該注冊表項的路徑。將此路徑修改為需要重定向后的路徑,然接著將這修改后的對象OBJECT以參數(shù)形式,傳入內(nèi)核模式的ZWopenkey函數(shù)來打開注冊表,并將修改后的信息重新填充到reg_pre_open_key_information結(jié)構(gòu)體里,包括GrantedAccess和ResultObject等結(jié)構(gòu)體成員。

        對于重定向虛擬化注冊表,最重要的就是對打開創(chuàng)建函數(shù)的重定向,其他注冊表操作調(diào)用過程原理相同。

        4 IMsystem實際運行效果

        4.1 IMsystem架構(gòu)

        IMsystem運行的架構(gòu)環(huán)境如圖7所示。

        圖7 IMsystem環(huán)境架構(gòu)圖

        整個系統(tǒng)由桌面分發(fā)系統(tǒng)、Hypervisor以及終端服務(wù)器組成。桌面分發(fā)系統(tǒng)將更新策略通過虛擬機管理器Hypervisor,發(fā)送到終端的服務(wù)器中。Hypervisor中設(shè)有安裝軟件的參照機器,而操作系統(tǒng)、應(yīng)用程序?qū)右约坝脩魝€性化層存儲在終端服務(wù)器中,當(dāng)需要更新時,應(yīng)用程序?qū)雍陀脩魝€性化層由終端服務(wù)器分發(fā),并由客戶端機器掛載。

        4.2 注冊表虛擬化測試結(jié)果

        以安裝WinRAR軟件的過程為例。Winrar使用所需要的注冊表文件以.reg文件形式存放在虛擬磁盤中,加載應(yīng)用程序?qū)雍髵燧d在私有注冊表HKEY_USRS用戶名下,程序使用時產(chǎn)生的修改都會被重定向到該目錄。測試結(jié)果如表1所示。

        表1 注冊表虛擬化測試結(jié)果

        續(xù)表1

        4.3 文件重定向功能測試結(jié)果

        應(yīng)用程序?qū)颖粧燧d后,以分區(qū)E的形式出現(xiàn)在文件系統(tǒng)中。當(dāng)操作系統(tǒng)接受到用戶對屬于Winrar應(yīng)用的文件執(zhí)行的各種文件請求時,如打開、修改和刪除C:WinRAR eadme.txt,這些操作所指定的文件將重定向到終端服務(wù)器的E分區(qū)下的cWinrar eadme.txt文件,并對該文件執(zhí)行了相應(yīng)操作。測試結(jié)果如表2所示。

        表2 文件重定向功能測試結(jié)果

        結(jié)合表1和表2可以說明,將WinRAR軟件從操作系統(tǒng)中分離出來,形成新的抽象層,能有效地執(zhí)行和更新。

        4.4 應(yīng)用程序更新功能效果

        以制作和更新Winrar軟件的應(yīng)用程序?qū)訛槔?。參照機器的操作系統(tǒng)為Win7 64位。管理員在參照機器上,安裝好Winrar軟件并記錄安裝過程,制作成應(yīng)用程序?qū)?,記為Layer1。通過設(shè)置更新策略,將Layer1統(tǒng)一分發(fā)給用戶。在本次使用中,所有用戶共用同一個母鏡像,其操作系統(tǒng)也為Win7 64位。掛載Layer1后,所有桌面虛擬化用戶都能使用該軟件。

        管理員將更新好的最新版本W(wǎng)inrar,重新制作成應(yīng)用程序?qū)覮ayer2并分發(fā)給用戶。用戶在加載Layer2層以后,能夠使用最新版本的Winrar,達到了用戶子鏡像統(tǒng)一更新的功能。

        4.5 系統(tǒng)性能評估

        復(fù)合文件系統(tǒng)和復(fù)合注冊表系統(tǒng)的引入,改變了操作系統(tǒng)的處理流程,加入了新的功能和邏輯,這會給操作系統(tǒng)帶來一些影響。為了執(zhí)行我們添加的代碼,操作系統(tǒng)將會花費一些資源開銷,主要體現(xiàn)在以下兩個方面:

        (1) 文件系統(tǒng)過濾驅(qū)動處理IRP請求的開銷,復(fù)合文件系統(tǒng)需要截獲所有I/O請求并進行判斷,其中包括查找索引結(jié)構(gòu)來獲取信息,根據(jù)這些信息和I/O請求的種類進行重定向。這一定程度上減緩了操作系統(tǒng)處理請求的速度。

        (2) 寫時復(fù)制機制引起的資源消耗,用戶第一次修改應(yīng)用程序?qū)游募r,會有自動產(chǎn)生副本文件并進行映射的過程。

        通過比較正常系統(tǒng)和部署了IMsystem的操作系統(tǒng)兩者,運行常用操作例程所消耗的時鐘周期,來評估IMsystem對系統(tǒng)資源的開銷。在每個重定向函數(shù)的入口處和出口處調(diào)用rtdsc指令能夠獲得CPU的時間戳,出口處的時間減去入口處的時間即為該函數(shù)例程處理請求消耗的時鐘周期。

        考慮到需要評價多個類型的系統(tǒng)調(diào)用,包括文件打開、文件創(chuàng)建、文件目錄查詢、文件信息查詢等,單一的測試腳本無法滿足要求。所以模擬真實情況,用爬蟲工具隨機訪問網(wǎng)絡(luò)資源,來隨機地產(chǎn)生系統(tǒng)調(diào)用。首先在正常Win7 64位操作系統(tǒng)下運行爬蟲工具,運行一段時間后記錄每個系統(tǒng)例程Pi被調(diào)用的次數(shù)Si和它們的時間周期Ti。接著在部署了IMsystem平臺的Win7 64位系統(tǒng)上運行爬蟲工具,讓每個調(diào)用Pi運行和Si相同的次數(shù),記錄它們的時間周期Ti。

        表3列出了文件系統(tǒng)常用的系統(tǒng)調(diào)用例程,和它們在兩種情境下的時鐘周期,并計算出引入復(fù)合文件系統(tǒng)后的資源負(fù)載。在所有的操作請求中文件請求最頻繁,所有用文件調(diào)用例程來作為評估的對象。從表中可知,部署IMsystem平臺后系統(tǒng)調(diào)用資源開銷普遍增高。增加最高的57%的系統(tǒng)調(diào)用是NtQueryAttributeFile,該例程用于獲得文件屬性信息。該項較高是因為Windows系統(tǒng)中文件的相互關(guān)聯(lián)性的原因。盡管如此,這些資源負(fù)載率都在可接受的范圍內(nèi)。

        5 結(jié) 語

        本文設(shè)計并實現(xiàn)了基于應(yīng)用程序分層模型的鏡像管理機制,將應(yīng)用程序和用戶數(shù)據(jù)與操作系統(tǒng)分離。用戶在使用過程中動態(tài)加載應(yīng)用程序?qū)樱ㄟ^文件系統(tǒng)驅(qū)動和注冊表虛擬化技術(shù)實現(xiàn)請求與數(shù)據(jù)的重定向訪問和程序的執(zhí)行。設(shè)計并實現(xiàn)了優(yōu)先級機制解決了層與層之間的沖突問題。實驗表明,管理員能通過IMSYSTEM平臺,快速高效地將軟件更新分發(fā)給特定群組的用戶。

        下一步的工作計劃是研究應(yīng)用程序分層模型對應(yīng)用進程間的通信的影響,與安裝在本地的應(yīng)用軟件對比測試,以及和軟件虛擬化技術(shù)等進行對比測試。

        [1] 張建中,陳松喬,方正,等.一種基于SAN架構(gòu)的存儲網(wǎng)絡(luò)系統(tǒng)的設(shè)計與實現(xiàn)[J].中南大學(xué)學(xué)報(自然科學(xué)版),2008(2):350-355.

        [2] 陽小珊,邱全偉,鄭良,等.NAS存儲系統(tǒng)性能測評方法研究[J].計算機研究與發(fā)展,2012,49(s1):346-351.

        [3] 陳建.基于Xen的domain0內(nèi)核的研究[D].浙江大學(xué),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].華中科技大學(xué),2012.

        [13] 徐繼偉,張文博,魏峻,等.一種基于聚類分組的虛擬機鏡像去冗余方法[J].軟件學(xué)報,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] 顧欣.文件透明加密保護系統(tǒng)的設(shè)計與實現(xiàn)[D].西安電子科技大學(xué),2012.

        猜你喜歡
        用戶設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        500kV輸變電設(shè)備運行維護探討
        如何在設(shè)備采購中節(jié)省成本
        Camera360:拍出5億用戶
        100萬用戶
        av国产免费在线播放| 帮老师解开蕾丝奶罩吸乳视频| 欧美激情国产一区在线不卡| 精品四虎免费观看国产高清| 成人永久福利在线观看不卡| 精品日本韩国一区二区三区| 国产精品黄色在线观看| 青青草手机在线观看视频在线观看| 一区二区三区四区四色av| 人妻少妇被猛烈进入中文| 久久精品女人av一区二区| 蜜臀av毛片一区二区三区| 99精品国产成人一区二区| 日韩毛片无码永久免费看| 亚洲国产综合精品 在线 一区| 日日人人爽人人爽人人片av| 成人无码a级毛片免费| 91精品国产色综合久久不| 蜜桃网站免费在线观看视频| 第一次处破女18分钟高清| 狠狠色狠狠色综合网| 色播亚洲视频在线观看| 亚洲熟妇少妇任你躁在线观看无码| 成人黄色网址| 久久99国产精品尤物| 中文字幕在线观看国产双飞高清| 日本一区二区不卡超清在线播放| 亚洲精品人成无码中文毛片| 国产精品玖玖玖在线资源| 成人国产乱对白在线观看| 亚洲国产av一区二区四季| 日本无码欧美一区精品久久| AV无码最在线播放| 国产精品一区二区三区蜜臀| 一区二区精品国产亚洲| 亚洲精品午睡沙发系列| 精品少妇一区一区三区| 久久亚洲网站中文字幕| 日本无码欧美一区精品久久| 成人精品一级毛片| 久久婷婷国产色一区二区三区|