在虛擬機環(huán)境中提供硬件虛擬化的系統(tǒng)和方法
【專利摘要】用于在虛擬機環(huán)境中提供硬件虛擬化和資源管理的系統(tǒng)和方法。根據一個實施例,應用程序服務器環(huán)境包括計算機系統(tǒng)、應用程序服務器,和虛擬機(例如,Java虛擬機或JVM)。根據一個實施例,虛擬化層被設置在每一物理機處,包括用于在機器上劃分多個虛擬機的管理程序。執(zhí)行層運行單一的基于Java的應用程序,盡可能高效集中運行該應用程序。根據另一個實施例,該系統(tǒng)包括兩個主要部件:第一,代替常用操作系統(tǒng)的低級執(zhí)行環(huán)境;以及第二,高級資源代理,用于負責將各新的虛擬機分發(fā)給上述各層,并用于監(jiān)控正在運行的虛擬機的當前資源的使用。
【專利說明】在虛擬機環(huán)境中提供硬件虛擬化的系統(tǒng)和方法
[0001]本申請是申請日為2007年8月7日、發(fā)明名稱為“在虛擬機環(huán)境中提供硬件虛擬化的系統(tǒng)和方法”的中國專利申請200780033514.5的分案申請。
[0002]版權聲明
[0003]本專利文件公開的一部分包括受版權保護的內容。當專利文件或專利公開中的任意一個的復制出現(xiàn)在專利和商標局專利文件或記錄中時,該版權所有者對此沒有異議,而對于其他任何情況都保留全部版權。
[0004]優(yōu)先權聲明
[0005]本發(fā)明申請要求于2006年8月7日提交的美國申請?zhí)枮?0/821,673的臨時專利申請“SYSTEM AND METHOD FOR PROVIDING HARDWARE VIRTUALIZATION IN A VIRTUALMACHINE ENVIRONMENT”、以及于2007年8月7日提交的美國申請?zhí)枮?1/835,307號專利申請“SYSTEM AND METHOD FOR PROVIDING HARDWARE VIRTUALIZATION IN A VIRTUAL MACHINEENVIRONMENT”的權益,通過引證將其結合于此。
【技術領域】
[0006]本發(fā)明大體涉及操作系統(tǒng)、應用程序服務器、和虛擬機,更具體地涉及用于在虛擬機環(huán)境中提供硬件虛擬化和資源管理的系統(tǒng)和方法。
【背景技術】
[0007]當今的許多任務關鍵商業(yè)應用程序已經被開發(fā)出來并被部署在基于Java的應用程序服務器(包括,例如,符合Java2企業(yè)版或J2EE規(guī)格的應用程序服務器)上。這些應用程序通常被部署在單售主RISC計算機和服務器上,以及其他昂貴的硬件平臺上。由于缺乏競爭力,不認為易于得到且低成本的基于PC的服務器適于替代能以這些構造使用的高性能Java虛擬機(JVM)。最新的虛擬機環(huán)境,諸如BEA系統(tǒng)公司的JRockit產品,能夠解決這個問題就在于可以優(yōu)化這些虛擬機以用于使Java應用程序能夠在低成本、基于標準的平臺上以提高的可靠性和性能來運行的各種環(huán)境(包括基于PC的環(huán)境)。JRockit虛擬機是為功率需求服務器側Java應用程序、提供較好性能、可管理性、和可靠性特別優(yōu)良設計的虛擬機的一個實例。
[0008]然而,盡管當前虛擬機產品(product offering)善于提供軟件虛擬化,但是,至今很少能夠以低層硬件或操作系統(tǒng)水平支持虛擬化,或在虛擬機水平對資源進行管理,然而,仍然允許應用程序服務器控制或參與虛擬化進程。
【發(fā)明內容】
[0009]本文中公開了用于在虛擬機環(huán)境中提供硬化虛擬化和資源管理的系統(tǒng)和方法。根據實施例,包括計算機系統(tǒng)、應用程序服務器、及虛擬機(例如,Java虛擬機或JVM)的應用程序服務器環(huán)境被擴展為提供從應用程序服務器環(huán)境中的較高層到系統(tǒng)實際處理能力(power)的接口,從而可以以機器獨立的方式來進行處理的分配。軟件層被放置在虛擬機和提高虛擬化Java執(zhí)行系統(tǒng)的效率的硬件之間。根據該實施例,該系統(tǒng)包括兩個主要部件:第一,低級執(zhí)行環(huán)境,其代替常用操作系統(tǒng);以及第二,高級資源代理,用于負責將各新的虛擬機分發(fā)給上面的層,并用于監(jiān)控正在運行的虛擬機的當前資源的使用。以此方式,低層物理機可以被劃分來支持多個JVM。此外,關于CPU和其他資源分配,可以在系統(tǒng)內部設置目標,并且該系統(tǒng)可以適當地分配多個JVM。
【專利附圖】
【附圖說明】
[0010]圖1示出了根據本發(fā)明一個實施例的包括虛擬機的應用程序服務器環(huán)境的示例。
[0011]圖2示出了根據本發(fā)明一個實施例的分層虛擬機構造的示例。
[0012]圖3示出了根據本發(fā)明一個實施例的多層域環(huán)境的示例。
[0013]圖4示出了根據本發(fā)明一個實施例的可以如何將虛擬層用于共用計算環(huán)境中的示例。
[0014]圖5示出了根據本發(fā)明一個實施例的連同資源代理的裸機(bare metal)域的示例。
[0015]圖6示出了根據本發(fā)明一個實施例的連同JVM代理服務器的裸機域的示例。
[0016]圖7示出了根據本發(fā)明一個實施例的虛擬機環(huán)境部件的邏輯圖。
[0017]圖8示出了根據本發(fā)明一個實施例的用于使用虛擬化的方法的流程圖。
【具體實施方式】
[0018]本文中公開了用于在虛擬機環(huán)境中提供硬件虛擬化和資源管理的系統(tǒng)和方法。根據實施例,包括計算機系統(tǒng)、應用程序服務器、及虛擬機(例如,Java虛擬機或JVM)的應用程序服務器環(huán)境被擴展為提供從應用程序服務器環(huán)境中的較高層到系統(tǒng)實際處理能力的接口,從而可以以機器獨立的方式來進行進程的分配。軟件層被放置在虛擬機和提高虛擬化Java執(zhí)行系統(tǒng)的效率的硬件之間。根據該實施例,該系統(tǒng)包括兩個主要部件:第一,低級執(zhí)行環(huán)境,其代替常用操作系統(tǒng);以及第二,高級資源代理,用于負責將各新的虛擬機分發(fā)給上面的層,并用于監(jiān)控正在運行的虛擬機的當前資源的使用。以此方式,低層物理機可以被劃分來支持多個JVM。此外,關于CPU和其他資源分配,可以在系統(tǒng)內部設置目標,并且該系統(tǒng)可以適當地分配多個JVM。
[0019]術語
[0020]本文中使用了下列術語。
[0021]域:運行在管理程序層頂部的操作系統(tǒng)實例。多個域可以彼此不知道地運行在同一機器上。域在本文中還可以稱作客戶操作系統(tǒng)(OS)、客戶(guest)、或VM。
[0022]裸機域:根據本發(fā)明一個實施例的運行虛擬層、虛擬機和應用程序的域。(例如,在一個實施例中,裸機域包括裸機操作系統(tǒng)(OS)層加諸如JRockit JVM的JVM,加應用程序)。裸機域在本文中還可以稱作BM域。
[0023]節(jié)點:網絡中的物理機或物理計算機。
[0024]網格計算:一組一起工作一解決一個計算問題的多個節(jié)點。
[0025]共用計算:允許多個應用程序在多個物理機上有效運行的系統(tǒng)或環(huán)境。共用計算環(huán)境允許對各應用程序指定高級策略以幫助系統(tǒng)決定將哪個(些)特定應用程序列入優(yōu)先地位。共用計算環(huán)境還允許用戶為系統(tǒng)部署新的應用程序;為每個應用程序提供高級策略和/或保證;監(jiān)控應用程序和機器的狀態(tài);處理指定應用程序的資源使用的快速增長;供應系統(tǒng)升級;以及提供高可用性。
[0026]圖1示出了包括虛擬機的且可以以本發(fā)明一個實施例的方式來使用應用程序服務器環(huán)境的示例。如圖1所示,應用程序服務器環(huán)境10包括應用程序服務器14 (例如,由BEA系統(tǒng)公司開發(fā)的WebLogic服務器產品,或其他類型的應用程序服務器),以及虛擬機16(例如,還是由BEA系統(tǒng)公司開發(fā)的JRockit JVM,或其他類型的虛擬機)。圖1還示出了常用在應用程序服務器環(huán)境中的可選部件,例如,開發(fā)環(huán)境18、用戶集成部件20、或線程集成部件22。后面這些可選部件分別包括WebLogic Workshop>WebLogic Portal、和WebLogic集成部件,其中的每一個都是由BEA系統(tǒng)公司開發(fā)的。需要的話,還可以將其他部件添加至該環(huán)境。
[0027]圖2示出了根據本發(fā)明一個實施例的虛擬機構造的更詳細的示例。如圖2所示,諸如JRockit JVM的典型的虛擬機16包括用于管理系統(tǒng)中運行的線程的線程管理部件;用于管理諸如垃圾收集的過程的存儲管理部件18 ;代碼生成部件22 ;以及Java模型部件24。典型的虛擬機還提供外部接口 28用于對虛擬機進行管理。盡管圖2示出了 JRockit產品,但是很顯然,在本發(fā)明的精神和范圍內,還可以使用除了 JRockit實現(xiàn)以外的其他虛擬機。
[0028]為了能夠有效的進行應用程序虛擬化,就需要相應的有效硬件資源虛擬化。這使得提供諸如掛起、動態(tài)配置(live provisioning)、和動態(tài)遷移的功能是可能的。根據本發(fā)明的一個實施例,添加了抽象的額外層。這使得虛擬機被移動至相對更接近下層硬件。
[0029]圖3示出了根據本發(fā)明一個實施例的多層域環(huán)境的示例。如圖3所示,計算環(huán)境30包括物理計算機硬件或計算機32。該計算機可以是物理服務器、計算機、網絡設備、或等同類型的計算或處理設備。計算環(huán)境包括代替典型的操作系統(tǒng)而在邏輯上位于處理設備頂部的虛擬化層34。根據一個實施例,虛擬化層包括執(zhí)行層部件38 (本文中也稱作“裸機層”),和管理程序層部件40或管理程序層。當前可得到的管理程序層部件的實例包括Xen管理程序和VMWare管理程序。根據其他的實施例,還可以使用其他的管理程序層和管理程序層部件。
[0030]管理程序層插入在服務器的硬件和操作系統(tǒng)之間。這提供了允許每個物理服務器運行一個或多個虛擬服務器的抽象層,并有效地將操作系統(tǒng)及其應用程序與下層物理服務器分離。一旦已經創(chuàng)建了虛擬服務器鏡像,其就可以運行在任意服務器上。基于同樣的原理,多個虛擬服務器可以同時共享單個物理服務器或機器。實際結果是增加了整個服務器的利用,而同時滿足了接收確保任何特定應用程序層性能標準的資源保證。
[0031]如進一步在圖3中示出的,虛擬機16在邏輯上位于虛擬化層之上。根據一個實施例,然后在虛擬機之上的層處提供資源代理36、或一組資源代理服務模塊。資源代理由應用程序服務器14和其他應用程序使用,以使用由虛擬化層提供的服務。
[0032]在一些實施例中,通過為局域網中Java應用程序提供硬件虛擬化服務可以將上述系統(tǒng)用作整個共用計算環(huán)境的一部分。當用在共用計算環(huán)境的上下文中時,可以提供允許網絡應用程序與虛擬機連接的服務。在共用計算或多虛擬機環(huán)境中,可以提供的服務的實例包括:在網絡環(huán)境中某處創(chuàng)建新的虛擬機或JVM的能力;資源保證,諸如最小和最大CPU、內存、或網絡帶寬使用;資源計量和系統(tǒng)溫度調節(jié)裝置功能;當應用程序需要更多或更少這些資源時,動態(tài)增加或減少資源的能力;諸如掛起至磁盤或從磁盤重新開始運行的應用程序(本文中稱作“凍干”)的特征;克隆“凍干”應用程序的能力(類似于Unixfork-like功能,S卩,以新的例程特定值來例示克隆的應用程序;以及將運行的例程移動至另一計算機以進行計劃的系統(tǒng)維護的能力。
[0033]圖4示出了在共用計算環(huán)境50中可以如何使用虛擬化層的實施例的示例。如圖4所示,應用程序可以使用應用程序虛擬化特征52 (包括,例如,上述的資源代理服務模塊或共用計算服務)來經由應用程序服務器云56來訪問下層硬件虛擬化層54。根據一個實施例,應用程序服務器可以是WebLogic服務器環(huán)境,其還可以提供其他高級的服務器特征(諸如企業(yè)群集)。
[0034]圖5示出了根據本發(fā)明一個實施例的連同資源代理的裸機域的示例。根據一個實施例,資源代理向應用程序服務器和在其上運行的其他軟件應用程序提供子服務。這些子服務可以包括例如:獲得新的JVM ;提供運行在服務器上的JVM ;計量特定JVM的資源;以及控制JVM的資源。根據一個實施例,用于JVM創(chuàng)建的主部件是資源代理68 (如上所述),在該示例中,資源代理跟蹤機器60、62中的哪一個可用于在其上創(chuàng)建新的虛擬化層例程。根據一個實施例,資源代理經紀(resource broker agent,簡稱RBA)64、66位于每個機器上。根據其他實施例,不需要物理機和經紀之間的任何一對一的映射,例如,單一的經紀可以覆蓋多個物理機。資源代理經紀負責JVM例程70、72、74的局部創(chuàng)建,即,作為經紀來創(chuàng)建和管理同一物理機上的JVM的操作。從第一機器到第二機器或整個群集的所有外部通信首先經過資源代理,然后向相應的資源代理經紀發(fā)送請求。在此方式中,資源代理就像一個經紀池,并跟蹤哪個特定經紀控制哪個特定機器,而該特定機器還具有完成來自應用程序請求的必需的可用功率。
[0035]根據一個實施例,資源代理是通用硬件抽象層。其可以以大量不同機器類型來使用。如果機器類型支持劃分,則資源代理可以在需要時使用該功能來劃分該機器。根據特定機器類型支持哪種特征,可以得到不同的高端功能。至少該功能應該允許以接近的資源使用目標(例如至少受限保證,受限共享和非遷移)在機器上創(chuàng)建新的JVM。
[0036]應該注意,盡管當將資源代理與執(zhí)行層組合會使系統(tǒng)運行的更好,并且還將支持更大的特征范圍,但是對于資源代理本身來講,其自身不需要執(zhí)行層(即,裸機層)來執(zhí)行其多種操作。
[0037]應該注意,標準機,即,非虛擬機還可以被添加至資源代理,即使在這些情況下功能會減少。根據其他實施例,資源代理還可以包括對諸如Azul、Solaris Containers和其他管理程序堆棧的第三方系統(tǒng)的支撐。根據一個實施例,Xen域和VMWare客戶也能夠支持原裸機資源保證、資源共享、掛起、遷移、可熱插拔、和虛擬文件系統(tǒng)。
[0038]JMV 代理
[0039]圖6示出了根據本發(fā)明一個實施例的連同可選JVM代理的裸機域的示例。如上所述,在一些實施例中,資源代理服務模塊可以用作獨立實體。然而,在這些實例中,不會獲得與通過所有元件的組合提供的相同的資源共享和相同的資源保證。如圖6所示,物理服務器機80可以在其上運行多個JVM。在一些實例中,由標準操作系統(tǒng)(OS) 90來操縱JNI代碼執(zhí)行和實體設備驅動器訪問。當運行在管理程序層96頂部時,建立執(zhí)行層92、94以優(yōu)化在其上運行的任一 JVM86、88的執(zhí)行。具體地,管理程序層/執(zhí)行層組合支持數據的隔離和寫時復制共享以減小運行在同一物理機上的多個JVM的足印。根據一個實施例,OS層上的JVM代理82、82被提供來允許經由OS調用執(zhí)行層中的功能和服務。根據其他實施例,可以使用裸機執(zhí)行層而無需JVM代理。
[0040]性能監(jiān)控框架-CPU能力和CPU共享
[0041]如上所述,該系統(tǒng)的有用特征之一是響應于應用程序請求來分配可用資源的可靠性。根據一個實施例,CPU能力是應用程序消耗了或保證具有多少CPU時間的近似。該信息然后被用于在可用機器或其他物理硬件上分配JVM。根據一個實施例,所有測量結果的單位都被認為是估計值。這些測量結果然后被用作相對測量結果(即,200CPU能力單位約為100CPU能力單位計算能力的兩倍)。對于一個物理機可以產生的單位的數量來說,通常是當前使用的所有虛擬機的確切總數加上空閑單位。在一個特定機器上,相對測量結果可能會比如果考慮通過若干不同機器工作地更好并且更有意義。具體地,兩個機器越是不同就越不可能會有精確的相對測量結果。目標通常在于CPU能力應該可比得上不同機器間的最遠擴展可能。
[0042]系統(tǒng)接口和功能
[0043]表I列出了根據一個實施例的由系統(tǒng)提供的一些接口和功能。這些功能允許高層應用程序創(chuàng)建JVM以及在若干個機器(包括在集群內)上分配資源。很顯然,在其他實施例中,還可以提供其他的接口和功能。
【權利要求】
1.一種用于在虛擬機環(huán)境中提供硬件虛擬化的系統(tǒng),包括: 一個或多個機器或計算機,進一步包括在所述一個或多個機器或計算機上運行的多個虛擬機; 虛擬化層,位于每個機器或者計算機處,其中,所述虛擬化層包括用于在所述機器或者計算機上劃分多個虛擬機的管理程序;以及資源代理服務模塊,用于: 接收來自應用程序的對虛擬機提供的資源的訪問請求, 確定多個所述虛擬機中的哪一個最適于處理所述請求,以及 經由所述虛擬化層將所述請求傳送至所選擇的虛擬機。
2.根據權利要求1所述的系統(tǒng),其中,所述系統(tǒng)進一步包括多個資源代理經紀,其負責將請求傳送至最適合處理所述請求的虛擬機。
3.根據權利要求1所述的系統(tǒng),其中,所述虛擬化層和所述資源代理服務模塊根據對作出所述請求的應用程序的預定保證來分配請求。
4.根據權利要求1所述的系統(tǒng),其中,所述管理程序是Xen管理程序。
5.根據權利要求1所述的系統(tǒng),所述管理程序是VMware管理程序。
6.根據權利要求1所述的系統(tǒng), 其中所述多個虛擬機包括一個或者多個Java虛擬機(JVM), 其中所述虛擬化層包括多個執(zhí)行層部件, 其中每個JVM與其自己的執(zhí)行層部件相關聯(lián),并且 其中每個執(zhí)行層部件適于運行基于Java的應用。
7.一種用于在虛擬機環(huán)境中提供硬件虛擬化的方法,包括以下步驟: 接收來自應用程序的對虛擬機提供的資源的訪問請求; 確定多個虛擬機或多個物理機或計算機中的哪一個最適于處理所述請求;以及使用虛擬化層傳送所述請求至所選擇的虛擬機,其中,所述虛擬化層包括管理程序和多個執(zhí)行層部件;以及 在所選擇的虛擬機處處理所述請求。
8.根據權利要求7所述的方法,其中,所述方法進一步包括提供多個資源代理經紀,所述資源代理經紀包括負責將請求傳送至最適合處理所述請求的虛擬機或者物理機的經紀。
9.根據權利要求7所述的方法,其中,所述虛擬化層和所述資源代理服務模塊根據對作出所述請求的應用程序的預定保證來分配請求。
10.根據權利要求7所述的方法, 其中所述多個虛擬機包括一個或者多個Java虛擬機(JVM), 其中每個JVM與其自己的執(zhí)行層部件相關聯(lián),并且 其中每個執(zhí)行層部件適于運行基于Java的應用。
【文檔編號】G06F9/455GK103530170SQ201310505477
【公開日】2014年1月22日 申請日期:2007年8月7日 優(yōu)先權日:2006年8月7日
【發(fā)明者】喬基姆·達爾斯泰特 申請人:甲骨文國際公司