亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

可移動的虛擬機映像的制作方法

文檔序號:6476664閱讀:258來源:國知局

專利名稱::可移動的虛擬機映像的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及虛擬機,并且更具體地,涉及操作系統(tǒng)級的虛擬化所創(chuàng)建的可移動個人計算機環(huán)境。
背景技術(shù)
:近年來,個人計算機技術(shù)發(fā)展迅猛。許多人將他們大量的時間花在PC(個人計算機)上。諸如文字處理器或者電子表格這樣的各種應用產(chǎn)品已經(jīng)確保了他們在其工作環(huán)境中至少使用一臺PC。多媒體技術(shù)的發(fā)展已經(jīng)繁育了基于PC增長的娛樂產(chǎn)業(yè)。特別是,互聯(lián)網(wǎng)的日漸流行已經(jīng)在增加人們對PC的依賴性方面起著重要作用。現(xiàn)代人在其日常生活中依賴于PC呈一種增長的趨勢。有些人甚至不能想象沒有PC的生活。個人計算環(huán)境一直朝著無需太多計算機知識的方向發(fā)展。在二十世紀八十年代,PC要求用戶直接輸入OS(操作系統(tǒng))所定義的命令,以便計算機工作。因此,不精通命令語言的用戶不能使用計算機。此外,用戶必須輸入關(guān)于每件硬件的規(guī)格,以便計算機能識別和操作該硬件。在九十年代,發(fā)展了GUI(圖形用戶界面)技術(shù),從而用戶可以以直觀和可視的方式向計算機傳輸命令。為os開發(fā)了通過其自身識別硬件的能力,從而用戶不需要知道太多關(guān)于計算機的知識。然而,在今天,使用PC仍然要求大量復雜的知識。不熟悉PC某些方面(包括關(guān)于操作系統(tǒng)以及安裝和設置應用的知識)的普通人發(fā)現(xiàn)它們是費解的。這使得只有專家才能夠使用PC的某些功能。盡管諸如GUI這樣的各種技術(shù)正在傳播,但是普通人在安裝和設定應用方面仍然有困難。此外,各式各樣的病毒和惡意程序使得人們難以方便地使用PC。如果要使PC成為更普遍的家用電器,就像電視機或者電冰箱,則需要計算機比當前易用得多。對于電視機來說,用戶所要掌握的全部只是相對簡單的遙控。計算機操作需要被簡化,以使它們也可以被容易地使用。4當今的PC面臨一些新的需求。這些需求中的一些包括PC環(huán)境應當容易且快速地移動,軟件應當容易地發(fā)布,PC應當能夠通過新的方案進行共享而同時保證獨立的用戶環(huán)境,以及PC應當能夠在用戶希望的任何時候恢復到用戶已經(jīng)定義的初始狀態(tài)。首先關(guān)注的問題是PC環(huán)境的移動性。PC具有其針對每個用戶的環(huán)境;這與其他家庭電器不同。存在著大量不同的硬件組合。此外,即使使用相同的硬件集合和操作系統(tǒng),桌面環(huán)境和應用程序也可以是不同的。這可能導致以下問題。例如,一個人在家中和在辦公室使用PC。家中的PC和辦公室的PC有著不同的PC環(huán)境。因此,為了方便,用戶應該使其家中的PC環(huán)境與辦公室中的PC環(huán)境相同。他必須安裝所有需要的軟件并且安排所有用于最佳環(huán)境的選項,以輔助他的工作。一旦用戶必須在其商務旅行中使用PC,他不得不在其商務旅行的目的地調(diào)整PC環(huán)境。為了省卻該麻煩,可使用膝上型計算機。然而,膝上型計算機相對昂貴,并且沉重,而這可能是一個大負擔。第二個問題關(guān)注軟件的發(fā)布,通過下載或者物理介質(zhì)來購買新軟件的人必須將該軟件安裝到他的PC。盡管安裝過程相對簡單,但是很多人還是有困難。偶爾,當發(fā)生內(nèi)部或外部的問題時,用戶面臨必須重新安裝軟件的不便。在辦公室環(huán)境下,PC環(huán)境一般被分組在一起??梢宰屢粋€組使用相同的軟件。團隊或者位置可以作為各組的組織因素。PC管理者負責設定PC環(huán)境,包括用于每個組的所有需要的軟件。然而,逐個處理每個職員的需要是非常低效的,并且耗費非常多的時間。如果在一存儲器件中預先準備PC環(huán)境中并且可以對其進行快速設定,則每當重新安排位置、每當新員工進入公司或者每當事務所需的軟件列表改變時,這將會很有好處。最終,每個人都應該能夠容易地設定其自己的PC環(huán)境而不需要PC管理者。第三個問題關(guān)注PC共享。假設兩個用戶共享一臺PC。每個用戶都想擁有他們自己的PC環(huán)境,以便該PC環(huán)境對他們的使用來說是最優(yōu)的。有時,一個用戶犯錯并且將該PC暴露給了計算機病毒。這可能導致所有用戶均遭受損失。這可能導致需要購買另一臺PC。最后的問題是關(guān)于PC環(huán)境的初始化?,F(xiàn)代PC總是暴露給病毒和惡意代碼。結(jié)果,PC可能隨時間推移而陷入癱瘓。有時,用戶碰巧自己犯錯并且使其PC陷入癱瘓。在這些情況下,專業(yè)的PC分析師必須診斷并且處理問題源。否則,用戶沒有別的選擇,只能格式化硬盤并重新安裝所有需要的軟件,然后再次設置桌面環(huán)境。這是PC使用的主要障礙。為了像其他普通的家用電器那樣容易且方便地使用PC,用戶應該能夠僅以數(shù)次鼠標點擊而無需專業(yè)支持,就將他們的PC恢復到初始干凈的PC環(huán)境。我們依賴PC的程度越深,就越需要隨時隨地使用我們自己的PC環(huán)境。然而,我們唯一的方案是使用類似膝上型計算機這樣的額外的硬件。當前,正在進行對虛擬機的研究。虛擬機的概念于二十世紀六十年代首次被提出,用于以虛擬方式將主機劃分為多個機器,以便多個用戶共享該主機。然而,隨著微型計算機或PC的價格降低,購買多臺PC比共享主機更加有利。因此,虛擬機技術(shù)在二十世紀八十年代鮮有使用。然而,在二十世紀九十年代,使用多臺小容量計算機增加了管理和維護成本。另外,計算資源的高效使用成為問題(例如,偶爾服務器A使用10Q/c)的CPU而服務器B使用CPU高達99。/。),并且因此虛擬化技術(shù)再次吸引了注意力。然而,盡管用于高效管理大型服務器的資源的虛擬化技術(shù)成為主流,但是,針對客戶端系統(tǒng)的虛擬化技術(shù)的研究迄今仍然不夠充分。本發(fā)明的虛擬機用來方便地提供PC環(huán)境的移動性、發(fā)布、共享和初始化。目前實現(xiàn)虛擬機的方法各有不同。一些方法包括硬件級的虛擬化、應用級的虛擬化、操作系統(tǒng)級的虛擬化等等。下面將解釋當前虛擬化技術(shù)的一些細節(jié)和限制。硬件級虛擬化存在兩種硬件級虛擬化。一種是全虛擬化,其中,在軟件中模擬CPU、存儲器、硬盤、Bios(基本輸入輸出系統(tǒng))等。另一種是準虛擬化,其中,使用支持硬件級虛擬化的器件(CPU)。在命令集級虛擬化方法中,在軟件中模擬中央處理單元、存儲器、芯片組、總線和各種外設(網(wǎng)卡、硬盤、軟盤和CD-ROM),以創(chuàng)建虛擬機。在命令集級虛擬化方法中,在虛擬機中創(chuàng)建的所有命令均由該軟件進行處理。這可能導致很多性能問題,例如處理速度的降低。在準虛擬化方法中,目標并非像命令集級虛擬化方法那樣模擬命令,而是修改OS的源代碼或二進制代碼,以在機器中執(zhí)行多個OS。近年來,正在開發(fā)允許多個OS在單個機器中執(zhí)行而無需修改OS的CPU。在準虛擬化中,由于不在軟件中對命令集進行重新分析,所以提高了處理速度。硬件級虛擬化提供了標準硬件集合,并且所生成的虛擬機映像是PC環(huán)境本身??截愒撚诚癜殡S著一起拷貝所安裝的os,從而確保了獨立性和移動性。相反的是,硬件性能仍處在低水平。例如,即使實際的PC具有極佳的3D圖形卡,但是,如果虛擬機通過模擬舊式的2D圖形卡來提供虛擬圖形卡的話,則舊式的2D圖形卡操作虛擬PC。這意味著不能使用諸如正EE1394這樣的未被模擬的設備。然而,實際上不可能模擬迄今所發(fā)布的所有硬件設備。此外,同時運行多個虛擬機是困難的,因為硬件級虛擬化所創(chuàng)建的虛擬機需要運行獨立OS所需的所有資源。例如WindowsVista需要約1GB的RAM。為了正常地運行三個虛擬機和一個實際的機器,至少需要4G的RAMo此外,因為需要模擬所有硬件部件,所以相比較來說,虛擬機映像具有很大的大小。直到今日,硬件級虛擬化方案所生成的虛擬機映像的大小仍是以吉字節(jié)為單位的。這是非常低效的,因為即使在發(fā)布諸如notepad.exe這樣的小應用的情況下,這樣生成的OS映像仍需要從數(shù)百兆字節(jié)到數(shù)十吉字節(jié)的大小范圍。此外,因為虛擬機需要新的OS,所以還需要額外的OS許可。這要求用戶購買額外的OS。因為虛擬機完全獨立于實際機器,所以,實際機器中安裝的OS環(huán)境以及所有應用都不能與虛擬機進行共享。對此存在著解決方案,例如P2V,通過P2V,實際機器內(nèi)的應用可以通過復制而在虛擬機中被使用。然而,仍舊不可能共享應用程序。硬件級虛擬化的優(yōu)點在于,可以在每個虛擬機中安裝獨立的OS,從而其適合于諸如VPS(虛擬私用服務器)這樣的服務器虛擬化以及服務器整合。硬件級虛擬化還適合于新軟件的開發(fā)與測試。結(jié)論即,硬件級虛擬化適合于服務器虛擬化,但是不適于商用桌面型虛擬化。應用級虛擬化應用級虛擬化方法是以字節(jié)碼的形式創(chuàng)建應用的方法。該方法的一實例是SunMicroSystems開發(fā)的Java虛擬機,其允許在各種異構(gòu)硬件和軟件環(huán)境中執(zhí)行應用。在開始時,應用級虛擬化產(chǎn)品是出于避免軟件沖突的目的而開發(fā)的。例如,Windows環(huán)境包括可執(zhí)行文件(.exe)和共享庫(.dll)。共享庫通常由各種公司制造,并且在各種軟件中共享。例如,共享庫c:\windows\system32\msvcrt.dll在A公司制造的A程序中使用,并且還在B公司制造的B程序中使用。庫msvcrt.dll可以具有文件名相同的各種版本。在A程序使用目錄c:\windows\system32中的msvcrt.dll的同時,可以安裝B程序,并且可以用1.0.0.0版msvcrt.dll替代2.0.0.0版msvcrt.dll。該替代導致A程序故障。這樣的版本沖突問題可以通過應用級虛擬化避免。應用級虛擬化為每個應用分配獨特的文件系統(tǒng)存儲區(qū),從而具有相同文件名的共享庫被存儲在用于每個應用的分開的存儲區(qū)中。現(xiàn)在,應用級虛擬化已經(jīng)進展到應用流技術(shù)。使用這種技術(shù),用于應用執(zhí)行的應用數(shù)據(jù),像執(zhí)行文件、共享庫、注冊表等等,被存儲在服務器中而非PC中。當用戶想要執(zhí)行應用時,從服務器動態(tài)重新調(diào)用所需的數(shù)據(jù)。因此,用戶可以使用應用而無需將其安裝在他的PC中。當今的先進技術(shù)將應用數(shù)據(jù)存儲在USB驅(qū)動器中。用戶還可以通過將USB驅(qū)動器連接到PC來使用應用,而無需進行安裝。該技術(shù)通過使應用能夠在任何PC中執(zhí)行來提供PC環(huán)境的有限移動性。然而,應用級虛擬化分開存儲應用數(shù)據(jù)。這可能解決安裝階段的沖突問題,但不能解決執(zhí)行階段的沖突問題。例如,當同時使用兩個不同的反病毒程序時,它們將互相抵觸并造成異常錯誤。執(zhí)行階段中的這種沖突無法通過應用級虛擬化來解決。另外,存在很多不能通過應用級虛擬化來進行虛擬化或者需要定制的8應用。例如,使用Windows服務的應用、內(nèi)核模塊或依賴于OS特定部件的應用。應用的這種依賴性不可避免地需要一個應用支持列表。因此,應用級虛擬化未提供全部的PC環(huán)境,而是僅僅允許特定應用被虛擬使用。OS級虛擬化最后,操作系統(tǒng)級虛擬化方法是對操作系統(tǒng)的每個組成部件(處理器、文件系統(tǒng)、網(wǎng)絡資源、系統(tǒng)調(diào)用接口、命名空間等等)進行虛擬化的方法。常規(guī)的操作系統(tǒng)級虛擬化方法主要是針對諸如虛擬私用服務器(VPS)這樣的服務器虛擬化的目的而開發(fā)的。服務器計算機中的操作系統(tǒng)內(nèi)核被分區(qū),并且為每個分區(qū)提供獨立的OS環(huán)境。常規(guī)的服務器主機托管服務為每個用戶提供一個物理服務器。該方案可以為用戶提供完整的OS空間。然而,購買很多實際的服務器需要初始投資和維護花費。OS級虛擬化使得有可能在單個實際OS中創(chuàng)建多個獨立的虛擬OS。用戶能夠獨立地在OS中使用所需的環(huán)境。另外,因為用戶不需要購買另一臺物理服務器,因此OS級虛擬化是花費不多的。此外,OS級虛擬化方法已經(jīng)被用作向出于軟件開發(fā)和測試的目的而需要多個OS環(huán)境的用戶高效地提供獨立OS空間的方法。
發(fā)明內(nèi)容技術(shù)問題本發(fā)明提供了一種新的虛擬化技術(shù),其使得可以容易且快速地移動PC環(huán)境、發(fā)布軟件產(chǎn)品、在保證獨立性的情況下共享物理PC、容易且方便地初始化PC環(huán)境等等。該新的虛擬化應當提供一種計算環(huán)境,同時不要求PC用戶掌握關(guān)于OS、安裝和設置程序等的額外知識。這種技術(shù)將允許用戶以使用其他普通電器那樣的容易程度來使用PC。出于這些目的,本發(fā)明提供這樣的一種可移動虛擬機映像,其獨立于硬件,使用PC的大多數(shù)OS環(huán)境,易于附接到os或者從os卸除,并且表現(xiàn)出容易且快速的移動、發(fā)布、共享和初始化。在本說明書中,術(shù)語"可移動"用來描述上面所解釋的特征。虛擬化技術(shù)當前通常用在服務器整合、軟件開發(fā)和測試以及主機托管9領(lǐng)域中。然而,本發(fā)明所追求的可移動虛擬機映像尚未被提出。另外,如上面描述的,所有當前的常規(guī)虛擬化技術(shù)對于本發(fā)明的目標來說都是不足以勝任的。在使用硬件級虛擬化的情況下,單個虛擬機需要與實際機器相同的存儲器和硬盤資源。因此,難以在單個計算機中創(chuàng)建多個虛擬機。然而,OS級虛擬化能夠在單個計算機中創(chuàng)建多個虛擬機,這是因為每個虛擬機并不需要資源來運行其自己的os。因此,與硬件級虛擬化相比,os級虛擬化可以以較少的資源來運行多個虛擬機。盡管OS級虛擬化存在多種優(yōu)點,但是其尚未應用于PC環(huán)境。這是因為迄今仍未實現(xiàn)移動虛擬映像的能力。硬件級虛擬化可以保證虛擬機映像的移動性,因為它將虛擬映像創(chuàng)建為包括獨立os的獨立系統(tǒng)。然而,時至今日,os級虛擬化僅僅是拆分實際機器的OS并以虛擬方式使用拆分的OS。OS級虛擬化不能夠?qū)⑺鶆?chuàng)建的虛擬機從實際機器卸除并將其以映像的形式附接到另一實際機器。這是因為在OS環(huán)境中存在要與實際OS共享的非獨立的功能和資源。每個用戶以其偏好的、與其他用戶不同的系統(tǒng)設置、驅(qū)動器名、主目錄路徑和權(quán)限、以及文件和注冊表路徑來使用os。對于這些多樣的環(huán)境,所創(chuàng)建的虛擬機不能正常執(zhí)行。如果有可能在使用OS級虛擬化的同時創(chuàng)建和使用確保完整移動性的虛擬機映像,我們將受益于OS級虛擬化的所有好處。這使得可以盡快且盡量高效地移動PC環(huán)境。本發(fā)明提供了一種使用OS級虛擬化來生成可移動虛擬機映像的方法。技術(shù)方案以下是對本發(fā)明的OS級虛擬化的基本概念的解釋。OS的部件os包括內(nèi)核、設備驅(qū)動程序、系統(tǒng)進程、服務進程等等。內(nèi)核是OS的核心。它是OS的一部分,用于向OS的其他部分提供多種基礎服務。內(nèi)核管理該系統(tǒng)的硬件或資源并且對它們進行抽象。一般來說,內(nèi)核包括內(nèi)核執(zhí)行部分和HAL(硬件抽象層)。內(nèi)核執(zhí)行部分負責進程和線程管理、存儲管理、對象管理、安全管理、進程間通信管理等等。HAL對硬件進行抽象,以使得其他應用或內(nèi)核部件可以在無需直接訪問硬件的情況下使用硬件。設備驅(qū)動程序被用來控制物理設備,或者在內(nèi)核級執(zhí)行命令。系統(tǒng)進程是OS要在用戶模式下執(zhí)行的核心進程,并且負責設備驅(qū)動程序請求、用戶登陸/注銷、安全等等。服務(守護)進程是在用戶模式下在后臺執(zhí)行的進程,并且負責所有種類的服務,例如文件共享服務、遠程登錄服務、網(wǎng)絡服務、打印機服務等等。這些類型的服務在后臺執(zhí)行,并且支持應用或os的其他部件進行它們的一部分。應用進程是諸如文字處理器或者Windows媒體播放器這樣的軟件,用于向用戶提供實際所需并在OS中執(zhí)行的功能。一般來說,我們將OS和應用稱為軟件(軟件=操作系統(tǒng)+應用)。分層的內(nèi)核部件圖1示出根據(jù)本發(fā)明的虛擬化的優(yōu)選實施例。具有獨立questOS的環(huán)境具有虛擬內(nèi)核、執(zhí)行空間和虛擬機數(shù)據(jù)。表1示出包括該OS的PC的一般結(jié)構(gòu)。表1<table>tableseeoriginaldocumentpage11</column></row><table>OS、HAL、內(nèi)核執(zhí)行部分、設備驅(qū)動程序、系統(tǒng)進程、服務等的部件是分層的。當上層部件從下層部件請求特定進程時,下層完成該進程并隨后返回結(jié)果。根據(jù)本發(fā)明,虛擬化可以通過基于來自上層部件的請求控制下層部件的處理來獲得。例如,當設備驅(qū)動程序請求從內(nèi)核執(zhí)行部分創(chuàng)建對象時,相應的對象在虛擬空間中被創(chuàng)建并且返回結(jié)果。當應用請求創(chuàng)建c:\myfile.txt文件時,內(nèi)核執(zhí)行部分不是在實際盤中而是在虛擬盤中創(chuàng)建該文件,并隨后返回結(jié)果。上層部件響應于下層部件而處理所有功能。因此,如果下層部件被虛擬化,則可以在虛擬機中操作上層部件而無需任何修改。使用本發(fā)明,OS的最下層部件(HAL和內(nèi)核執(zhí)行部分)被虛擬化。因此,諸如設備驅(qū)動程序、系統(tǒng)進程、服務進程或應用這樣的上層可以在虛擬空間中被執(zhí)行而無需任何修改。以下是對本發(fā)明的可移動OS的解釋。虛擬內(nèi)核的生成內(nèi)核執(zhí)行部分層可以通過將來自上層的請求分派到實際空間或者一個或更多虛擬空間來對內(nèi)核進行虛擬化。對屬于實際機器的線程或進程的請求被分派到實際空間,而對屬于虛擬機的線程或進程的請求則被分派到虛擬空間。在虛擬機中執(zhí)行意味著對內(nèi)核執(zhí)行部分的請求被分派。圖3示出來自上層的請求通過內(nèi)核執(zhí)行部分被分派到虛擬空間或?qū)嶋H空間??梢酝ㄟ^諸如文件、注冊表或?qū)ο筮@樣的命名空間的虛擬化、進程和線程的虛擬化以及存儲器的虛擬化,來虛擬化內(nèi)核執(zhí)行部分。以下將解釋如何實現(xiàn)對命名空間的虛擬化。文件、注冊表、內(nèi)核對象等等是具有名稱的內(nèi)核部件。例如,文件具有諸如VDeviceVHarddiskVolumelNmyfile.txt這樣的名稱,而注冊表具有諸如\Registry\Machine\Software\mykey這樣的名稱,內(nèi)核對象具有諸如\BaseNamedObjects\myobject這樣的名稱。在命名空間中管理這些名稱。當特定內(nèi)核對象被打開時,內(nèi)核執(zhí)行部分檢查相應對象是否存在于命名空間中。當特定內(nèi)核對象被創(chuàng)建時,內(nèi)核執(zhí)行部分檢査在命名空間中是否存在重復的對象。如果內(nèi)核對象被創(chuàng)建,則該對象名稱被記錄在命名空間中。每個虛擬機具有獨特的命名空間。例如,對虛擬機VM1來說,對所述文件VDeviceVHarddiskVolumenmyfile.txt的請求被分派到WMhDeviceVHarddiskVolumenmyfile.txt。對所述注冊表\Registry\Machine\Software\mykey的請求被分派到\Registry\VM1\Software\mykey。對所述對象VBaseNamedObjects\myobject的請求被分派到WMlVBaseNamedObjects、myobject。理所當然地,要被分派的名稱可以符合可選的規(guī)則。因此,對命名空間的虛擬化是通過為每個虛擬機賦予獨立的命名空間來實現(xiàn)的。以下將解釋如何實現(xiàn)對進程和線程的虛擬化。對于OS,線程是最小的執(zhí)行單元,而進程是共享一個存儲器地址的一組線程。用于生成進程或線程的請求被傳送到內(nèi)核執(zhí)行部分。如果請求生成子進程的母進程在特定虛擬機內(nèi),則內(nèi)核執(zhí)行部分在該特定虛擬機內(nèi)生成該子進程。如果請求生成線程的進程在特定虛擬機內(nèi),則內(nèi)核執(zhí)行部分在該特定虛擬機內(nèi)生成該線程。一般來說,這些對于進程和線程的虛擬化是足夠的,因為進程是OS級虛擬化的基本單元。然而,在本發(fā)明中,虛擬化的最小單元是線程而非進程。這是因為虛擬機并不生成一些OS進程,而是共享實際機器的這些進程,以實施高效的OS級虛擬化。在這種情況下,對于單個進程,指定的線程應當在實際機器中執(zhí)行,并且該指定的線程還應當在指定的虛擬機中執(zhí)行。如果要求內(nèi)核執(zhí)行部分生成一個線程,并且如果要求該生成的線程的母線程是在該虛擬機內(nèi),則所生成的線程也在該虛擬空間中執(zhí)行。虛擬機映像的映射即使不同的機器具有同種0S,它們也將具有不同的針對每個系統(tǒng)的用戶權(quán)限以及系統(tǒng)設置。因此,為了將在一個虛擬機中使用的虛擬機映像移動到另一個虛擬機,需要對該虛擬機映像進行映射。映射包括權(quán)限的映射、環(huán)境變量及其設置的映射、虛擬機和實際機器之間的資源共享等等。存在兩種方式來實現(xiàn)這些映射,一種是將虛擬機映像轉(zhuǎn)換為符合實際機器,而另一種是向內(nèi)核執(zhí)行部分注冊該特定映像的設置??梢允褂眠@兩種方法中的任一種或兩者。下面解釋權(quán)限的映射的細節(jié)。多用戶OS為每個用戶提供訪問控制功能,以賦予他們對每個文件、注冊表和設備的使用權(quán)限。通常,虛擬機映像在生成該映像的時候不具有權(quán)限信息或者用戶的權(quán)限。如果這樣的權(quán)限不可用于其他0S,則可以停止引導。因此,權(quán)限映射對于導入映像是必不可少的。當虛擬機映像被修改到實際機器時,映像中對文件、目錄、注冊表和設備的權(quán)限設置被調(diào)整到實際機器的OS環(huán)境的值或OS的默認值。理所當然地,在文件、目錄、注冊表和設備不需要對使用進行訪問控制或者即使未建立訪問控制也不會引起問題的情況下,可以省略權(quán)限映射。根據(jù)向內(nèi)核執(zhí)行部分進行注冊的方法,相應的賬戶本身被注冊在虛擬內(nèi)核執(zhí)行部分中。關(guān)于環(huán)境變量和配置的映射,用于實際機器的環(huán)境變量和配置是基于實際機器的驅(qū)動器路徑來記錄的。在其中安裝虛擬機OS的虛擬盤驅(qū)動器名稱可以不同于在其中安裝實際OS的物理盤的驅(qū)動器名稱。因此,環(huán)境變量和配置中需要映射的部分應當被重新映射。以下解釋共享資源的映射。OS的諸如系統(tǒng)進程和服務進程這樣的一些部件在實際機器和虛擬機之間被共享。這些進程中使用的資源也被共享。盡管按線程分配的資源是由線程級虛擬化來處理的,按進程分配的資源需要依賴于當前狀況來進行適當處理。在Windows的情況下,實際機器和虛擬機的Windows的kemel32.dll和user32.dll文件應當被進行同步。通過獨立方法生成虛擬機OS映像虛擬機映像包括OS數(shù)據(jù)文件。一般來說,OS數(shù)據(jù)占用數(shù)百兆字節(jié)。本發(fā)明使用OS級虛擬化,所以不是如包含于虛擬機映像中那樣發(fā)布OS文件,而是直接使用實際機器的OS來創(chuàng)建。要發(fā)布的虛擬機映像包含創(chuàng)建OS映像所需的最少數(shù)據(jù),例如文件列表、注冊表列表和設置值。文件和注冊表數(shù)據(jù)可以從實際機器的OS中拷貝。包含于要發(fā)布的虛擬機映像中的數(shù)據(jù),例如文件列表、注冊表列表和OS配置值,包括存在于同一OS的各個版本中的列表的全部或者一部分。例如,Windows包括諸如Window2000、WindowXP和Window2003這樣的各種版本。虛擬機映像可以包括在所有或一些Windows版本中使用的文件和注冊表列表。在映像映射階段,在列表中,僅實際機器的OS中的項目被記錄以供使用。這之后,文件和注冊表數(shù)據(jù)被從實際機器的OS拷貝到虛擬機映像。14拷貝可以在映像映射階段進行,或者當文件和注冊表在虛擬機執(zhí)行階段被實際使用時進行。為了與DOS兼容,Windows支持短文件名SFN和長文件名LFN。當拷貝文件時,LFN不改變。然而,從實際OS到所生成的虛擬映像,可能改變SFN。因此,在拷貝之后應當強制糾正SFN為一致。在注冊表中記錄的文件名也應當被糾正。用流來進行映像傳輸虛擬機映像文件的大小一般非常大。完整的映像文件可以被下載或者拷貝來使用。然而,如果映像通過流進行傳輸,則可以即刻使用虛擬機而無需等待完整的映像下載完成。使用流方法,映像文件被存儲在流存儲設備中,并且僅僅將需要的部分下載或者拷貝到虛擬機以供使用。流存儲設備可以是服務器的形式,諸如文件服務器、網(wǎng)絡服務器或FTP服務器;或者是可移動存儲設備的形式,諸如USB驅(qū)動器或者CD/DVDROM。還可使用諸如普通硬盤這樣的固定存儲設備。盤映像可以如下面闡述的那樣用流來進行傳輸。如果進程、線程或者設備驅(qū)動程序中的指令請求訪問特定文件或目錄,則虛擬內(nèi)核執(zhí)行部分將該請求分派到虛擬盤。虛擬盤隨后計算所請求的文件或目錄在虛擬盤上的位置,并且使用該結(jié)果找出在盤映像文件中的偏移量。響應于對該偏移量及長度的請求,流式映像存儲設備傳輸在映像文件上該偏移量處的等于該長度的數(shù)據(jù)。虛擬盤使用所傳輸?shù)臄?shù)據(jù)繼續(xù)執(zhí)行。注冊表映像的流傳輸可以通過以下過程實現(xiàn)。當進程、線程或者設備驅(qū)動程序中的指令請求訪問一個注冊表鍵或注冊表值時,虛擬內(nèi)核執(zhí)行部分響應于該請求而訪問注冊表映像文件。此時,計算出用于訪問該注冊表映像文件的偏移量和長度,并且該請求被傳輸?shù)搅鞔鎯ρb置。流存儲裝置處理注冊表映像文件中指示的該偏離量和該長度處的數(shù)據(jù),并且返回其結(jié)果。虛擬內(nèi)核執(zhí)行部分使用所傳輸?shù)臄?shù)據(jù)繼續(xù)執(zhí)行。通過虛擬盤進行映像加載虛擬盤是用于以軟件來模擬實際硬盤的虛擬設備。一個虛擬機被連接到一個或更多虛擬映像文件,并且虛擬盤的特定扇區(qū)被連接到映像文件的特定位置。因此,用于針對虛擬機的特定扇區(qū)來讀取和寫入數(shù)據(jù)的請求被模擬為在該映像文件的特定位置讀取和寫入相應數(shù)據(jù)。用于對分區(qū)和盤進行控制的請求也是以同樣的方式進行處理。因為虛擬機中的多個文件和目錄以一個盤映像文件的形式存在于實際機器中,所以,使用虛擬盤提高了映像的移動性。映像文件的加密提高了安全性,這是因為其他用戶需要知道密碼來使用該虛擬機。根據(jù)OS來為每個盤賦予一驅(qū)動器名。例如,WindowsOS的盤被賦予諸如C:或D:這樣的驅(qū)動器名。虛擬盤也有其自己的驅(qū)動器名。盡管具有相同的C:驅(qū)動器,但是虛擬機的C:驅(qū)動器指示虛擬盤,而實際機器的C:驅(qū)動器指示物理盤。在本發(fā)明中,虛擬機盤映像給出了針對低容量的輕量選項。一般來說,OS需要超過百兆字節(jié)的存儲空間。盤映像可以包括所有文件。為了確保高效的移動性,可以發(fā)布空的映像或者僅包含文件列表的映像,并且文件的內(nèi)容可以從實際機器的OS供應。為了最小化與實際機器的沖突,OS可以被設為驅(qū)動器O:,并且應用程序可以被設為驅(qū)動器P:,來制造和發(fā)布虛擬盤映像。分層的虛擬機映像當虛擬機映像具有分層結(jié)構(gòu)而非單個文件時,所需的映像文件可以在使用虛擬機期間被插入。如果在虛擬機中出現(xiàn)問題,則僅需要替換有問題的映像文件。這是分層結(jié)構(gòu)的優(yōu)勢。虛擬機映像包括OS映像層、應用模板映像層、用戶數(shù)據(jù)映像層以及臨時數(shù)據(jù)映像層。存儲于臨時數(shù)據(jù)映像層中的臨時數(shù)據(jù)是在虛擬機執(zhí)行時生成的,并且可以在虛擬機中發(fā)生問題時被刪除。用戶數(shù)據(jù)包括用戶安裝和生成并且存儲在用戶數(shù)據(jù)映像層中的所有類型的文檔文件、用戶簽名文件、軟件文件以及注冊表。應用模板映像是通過導出虛擬機映像來創(chuàng)建的。該映像在虛擬機執(zhí)行期間不變。虛擬OS模板映像包括虛擬OS的文件和注冊表,并且在虛擬機執(zhí)行期間不變。如圖2中所示,虛擬OS、應用模板、用戶數(shù)據(jù)和臨時數(shù)據(jù)是分層的。例如,文件系統(tǒng)堆疊虛擬OS文件、應用模板文件、用戶數(shù)據(jù)文件和臨時數(shù)據(jù)文件。當應用請求c:\myfile.txt時,在臨時數(shù)據(jù)中查找該文件。如果其不存在于臨時數(shù)據(jù)中,則在用戶數(shù)據(jù)中查找。如果其不存在于用戶數(shù)據(jù)中,則在應用數(shù)據(jù)中查找。如果其不存在于應用數(shù)據(jù)中,則在虛擬OS文件中查找。以同樣的方式查找注冊表。16虛擬OS的引導為了使用os,用戶必須引導OS。OS引導歷經(jīng)以下步驟初始化所有設備,延遲的更新,以及執(zhí)行系統(tǒng)進程、服務進程和os應用。虛擬機也以同樣的方式在虛擬機中引導os。在os級虛擬化的情況下,每個虛擬機逐步進行引導過程。在實現(xiàn)了對內(nèi)核執(zhí)行部分層中的進程、線程以及命名空間的加強之后,可以通過從虛擬內(nèi)核調(diào)用相應os的引導起始點來開始進行引導。引導起始點在虛擬內(nèi)核中被重新調(diào)用,以與os的引導進程相同的方式進行引導。在虛擬機的引導中,初始化物理設備的操作被省略,但是額外地需要初始化虛擬設備。延遲的更新意味著,如果諸如文件等的資源在使用中,則所述資源不能被刪除或者更新,并且所述資源一般在系統(tǒng)被關(guān)閉之后的下一次引導進程中被刪除或者更新。虛擬機引導還應該處理虛擬機內(nèi)延遲的更新。系統(tǒng)進程主要用于提供OS環(huán)境,其負責用戶賬戶管理、登錄處理、會話管理、服務管理。例如,微軟公司的WindowsOS具有諸如lsass.exe、winlogon.exe、smss.exe等的系統(tǒng)進程。諸如DCOM/RPC服務、打印機假脫機服務等的服務進程在后臺執(zhí)行,以支持其他應用的功能。系統(tǒng)進程或服務進程可以執(zhí)行虛擬機內(nèi)的所有進程,或者共享已經(jīng)在主機OS或其他虛擬機中執(zhí)行的進程,以便高效地利用整個系統(tǒng)的資源。對于賬戶管理系統(tǒng)進程,如果其是針對每個虛擬機執(zhí)行的,則為每個虛擬機生成獨立的賬戶。然而,共享主機OS的進程,每個來賓OS可以共享諸如主機OS的ID和密碼這樣的賬戶信息。為了共享系統(tǒng)進程或服務進程,對存在于該進程中的所有全局對象的訪問應當被映射到所共享的進程的對象。對于打印機假脫機服務進程,存在用于控制打印機的命名流水線。當來賓OS中的記事本進程請求打印文檔時,其嘗試訪問來賓OS中的假脫機服務的命名流水線。然而,因為在來賓OS中沒有假脫機服務并且主機OS中的假脫機服務被共享,所以,需要將該請求映射到主機OS的假脫機服務。用戶需要停止運行OS以便結(jié)束。OS停止運行一般分為應用結(jié)束、設備驅(qū)動程序結(jié)束、服務進程結(jié)束、系統(tǒng)進程結(jié)束等等。虛擬機也應該結(jié)束該虛擬機中的OS。虛擬OS的停止運行跟在實際OS的停止運行之后,但是并不關(guān)閉實際設備。虛擬OS的使用在引導虛擬機之后,用戶可以像他使用實際OS那樣使用虛擬機。虛擬機支持切換模式顯示和無縫模式顯示。在切換模式下,每個虛擬機具有獨立的顯示。當一個虛擬機上的用戶想要訪問另一個虛擬機或者實際機器時,切換模式要求他使用快捷鍵或者菜單命令來切換屏幕。在無縫模式下,實際機器的程序與虛擬機的程序可以同時顯示在一個屏幕上。導出虛擬機映像在虛擬機中執(zhí)行的文件操作被存儲在虛擬盤映像中,并且在虛擬機中執(zhí)行的注冊表操作被存儲在虛擬注冊表映像中。虛擬機映像的移動性、發(fā)布和共享通過導出映像文件來實現(xiàn)。最簡單的導出方式是簡單地拷貝映像文件。優(yōu)選的導出方式是通過減少映像文件中任何的冗余來減小映像文件的大小。冗余是非必需的信息,可以包括臨時文件、權(quán)限信息、非共享文件和OS部件的注冊表。更優(yōu)選的方式是對虛擬機映像進行打包,以進行更高效的共享。這是通過對映像文件中的每個文件、目錄、設備和注冊表設定權(quán)限,針對os或安裝的應用添加許可信息,并且針對可用的os版本和所需的庫添加信息來實現(xiàn)的。有益效果本發(fā)明允許PC環(huán)境突破物理硬件的限制。其免除了在物理PC上建立的PC環(huán)境不能從該物理PC轉(zhuǎn)移到另一設備的限制。此外,本發(fā)明克服了軟件僅應該與硬件一起作為有機整體來使用的限制。用戶可以通過將PC軟件環(huán)境附接到PC硬件以及將其從PC硬件卸除來創(chuàng)建他們自己獨特的可移動PC軟件環(huán)境,由此可獲得移動性。使用本發(fā)明,不熟悉PC的用戶不需要關(guān)于如何安裝程序以及如何設定程序配置的額外知識。一旦優(yōu)化地設置了程序工作環(huán)境,其可以隨時被拷貝、并且被容易且快速地使用D本發(fā)明用拷貝和刪除的概念來替代安裝和卸載的概念。一旦虛擬機映像被創(chuàng)建和存儲,就可以通過使用映像緩存和可移動驅(qū)動器或文件存儲服務器來容易且快速地使用該映像。即使是專業(yè)的PC用戶也將能夠更高效地使用PC,因為他可以快速地拷貝和刪除程序。圖1示意性地示出根據(jù)本發(fā)明的優(yōu)選實施例的OS級虛擬化。圖2示意性地示出根據(jù)本發(fā)明的優(yōu)選實施例的分層的數(shù)據(jù)。圖3示意性地示出根據(jù)本發(fā)明的優(yōu)選實施例的分層的內(nèi)核的操作。圖4示意性地示出根據(jù)本發(fā)明優(yōu)選實施例的用于執(zhí)行虛擬機映像的例程。具體實施例方式如圖4中所示,本發(fā)明如下面闡述地那樣執(zhí)行"基本例程"。1.將包括第一OS的虛擬機模板映像映射到實際機器的第二OS。2.使用該映像來引導虛擬機。虛擬機模板映像是OS級虛擬化所劃分的虛擬OS的映像,其可以僅具有OS,或者可以是從其他PC導入的映像。在已引導的虛擬機中,用戶可以安裝程序并且設置所需項目,以在所生成的虛擬機內(nèi)實施其自己的PC環(huán)境。該已引導的虛擬機可以以虛擬機模板映像的形式被導出。所導出的映像首先被存儲,并且總是可用的??梢允褂每梢苿颖P或者通過在線傳輸將該映像移動到任何其他PC。可以通過執(zhí)行該基本例程將被移動的映像導出到另一PC,并且隨后將其用作新的虛擬機。由此實現(xiàn)PC環(huán)境的移動性。本發(fā)明的方式本發(fā)明可以為PC用戶提供各種便利性。使用便攜盤或者通過網(wǎng)絡,可以將個人的PC環(huán)境移動到家庭、學校、辦公室或者在國外某處的PC。共享單臺PC的用戶可以執(zhí)行該基本例程來創(chuàng)建和存儲每個用戶的獨特的虛擬機映像。每當用戶需要使用該PC時,他執(zhí)行該基本例程來訪問其虛擬機映像。由此實現(xiàn)共享。用戶還可以創(chuàng)建多個虛擬機映像并且根據(jù)他們自己的目的來使用所述虛擬機映像。例如,VM1用于安全的電子商務交易或互聯(lián)網(wǎng)銀行活動。19VM2用于安全地處理公司的秘密信息。VM3用于無安全性的網(wǎng)上沖浪,此時PC暴露在病毒和黑客的危險中。頻繁初始化PC的用戶需要執(zhí)行該基本例程來生成為其自己的初始PC環(huán)境設置的映像。他們隨后必須導出該映像進行保存。在首次這樣做之后,每當他想要初始化時,他可以導入該映像來執(zhí)行該基本例程,并且因此容易地實現(xiàn)初始化。即使幾乎不懂PC的普通人也可以在學習了如何執(zhí)行該基本例程以及如何導入和導出虛擬機映像之后解決其PC中的問題。他們僅通過數(shù)次鼠標點擊就能容易地完成其操作。本發(fā)明提供了一種用于軟件發(fā)布的新方法。軟件發(fā)布者可以使用其中安裝了OS而無任何應用的虛擬機模板映像來執(zhí)行該基本例程。隨后,發(fā)布者可以銷售通過導出其中已經(jīng)安裝有要發(fā)布的產(chǎn)品的虛擬機而生成的虛擬機映像。消費者將購買該映像,并且僅需在其PC中執(zhí)行該基本例程以即刻使用該軟件。消費者可以通過給出包括軟件列表及其配置的書寫訂單來從發(fā)布者訂購多個軟件包。發(fā)布者可以根據(jù)訂單創(chuàng)建虛擬機映像并將其發(fā)送給購買者。發(fā)布者可以事先準備各種打包形式的虛擬機映像。所述打包可以包括一套常售軟件。在線銷售和發(fā)布也是可以的??梢詼蕚浞掌鱽斫邮沼唵?,并且響應于訂單創(chuàng)建虛擬機映像。所創(chuàng)建的映像可以被存儲以供重復使用。在私營或國營企業(yè)中,可以快速地向員工提供PC環(huán)境。管理員在一臺PC中執(zhí)行該基本例程并且在虛擬機中安裝所有需要的軟件。隨后,他導出映像并將其存儲。當職員需要相應PC環(huán)境時,管理員將映像給與該職員并且在該職員的PC中執(zhí)行該基本例程。可以快速準備商業(yè)環(huán)境??梢愿鶕?jù)每個組的需要為其創(chuàng)建映像。本發(fā)明還適用于負責大量PC的管理員,例如在網(wǎng)吧或者IT教育中心中的管理員。消費者可以通過虛擬機來使用PC,該虛擬機是通過針對預先存儲的映像執(zhí)行該基本例程來創(chuàng)建的。在PC中出現(xiàn)問題的情況下,可以使用原始映像立刻初始化該PC。此外,當消費者要求使用特定軟件時,針對其中已安裝有該特定軟件的虛擬機映像來執(zhí)行該基本例程可以滿足該消費者的請求。盡管已經(jīng)參照數(shù)個優(yōu)選功能描述了本發(fā)明,但是該描述是對本發(fā)明的說明,而不被解讀為對本發(fā)明能力的限制。本領(lǐng)域技術(shù)人員可以想到各種修改和變化,而不會偏離如所附權(quán)利要求書限定的本發(fā)明的范圍。權(quán)利要求1、一種用于執(zhí)行包括操作系統(tǒng)的虛擬機映像的方法,所述方法包括以下步驟將虛擬機模板映像映射到操作系統(tǒng),以及使用所映射的映像引導所述虛擬機。2、根據(jù)權(quán)利要求1所述的方法,還包括創(chuàng)建虛擬盤,以及為所述虛擬盤加載經(jīng)適應性轉(zhuǎn)換的映像。3、根據(jù)權(quán)利要求1所述的方法,其中,所述映射包括以下中的至少一種權(quán)限映射、環(huán)境變量映射、操作系統(tǒng)配置映射、驅(qū)動器映射和共享資源映射。4、根據(jù)權(quán)利要求1所述的方法,其中,所述映射包括獨立映射,所述獨立映射包括以下步驟寫入在所述虛擬機映像中提供的所有版本的操作系統(tǒng)文件和注冊表的列表之中僅在實際機器的操作系統(tǒng)中存在的項目,以及拷貝所述文件和注冊表內(nèi)容或記錄,以將它們從所述實際機器的操作系統(tǒng)拷貝到所述虛擬機映像。5、根據(jù)權(quán)利要求1所述的方法,還包括導出所執(zhí)行的虛擬機映像。6、根據(jù)權(quán)利要求1所述的方法,還包括在所述映射之前導入虛擬機映像。7、根據(jù)權(quán)利要求1所述的方法,所述引導包括-在內(nèi)核執(zhí)行部分中創(chuàng)建虛擬內(nèi)核,以及加載虛擬設備驅(qū)動程序、虛擬服務和虛擬系統(tǒng)進程中的至少一些。8、根據(jù)權(quán)利要求7所述的方法,其中,虛擬設備驅(qū)動程序、虛擬服務和虛擬系統(tǒng)進程中的至少一些是與所述實際機器共享的,而其余的則不與所述實際機器共享。9、根據(jù)權(quán)利要求7所述的方法,其中,在所述內(nèi)核執(zhí)行部分中創(chuàng)建虛擬內(nèi)核的操作至少是通過線程級虛擬化進行的。10、一種用于發(fā)布軟件的方法,其中,提供至少一個服務器來發(fā)布軟件,所述服務器能夠通過計算機網(wǎng)絡與至少一個客戶端進行通信,所述方法包括從客戶端接收發(fā)布軟件的請求,創(chuàng)建虛擬機映像,其中,所請求的軟件被安裝到所述虛擬機映像,以及傳輸所創(chuàng)建的虛擬機映像。11、根據(jù)權(quán)利要求io所述的方法,其中,所述請求包括對要安裝的至少一個或更多程序、所述程序的配置以及每個程序的部件的預先確定。12、根據(jù)權(quán)利要求IO所述的方法,還包括將提供給所述客戶端的所述虛擬機映像存儲在服務器或外部存儲區(qū)上,由此所述虛擬機映像能夠再次傳輸給所述客戶端。13、一種用于傳輸虛擬機映像的方法,其中,提供至少一個服務器來發(fā)布軟件,所述服務器能夠通過計算機網(wǎng)絡與至少一個客戶端進行通信,所述方法包括接收所述客戶端請求的計算機環(huán)境的配置,根據(jù)所接收的配置創(chuàng)建虛擬機映像,以及作為響應,將所創(chuàng)建的虛擬機映像傳輸?shù)剿隹蛻舳?,其中,所述配置包括軟件?或操作系統(tǒng)配置的列表。全文摘要本發(fā)明提供了使用OS級虛擬化的可移動虛擬機映像,以及用于創(chuàng)建和使用該可移動虛擬機映像的方法。所述可移動虛擬機映像獨立于PC的硬件,并且易于附接到OS以及從OS卸除,由此呈現(xiàn)容易且快速的移動、發(fā)布、共享和初始化。文檔編號G06F15/00GK101636722SQ200880008835公開日2010年1月27日申請日期2008年3月20日優(yōu)先權(quán)日2007年3月20日發(fā)明者李尚奎申請人:李尚奎
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1