亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

虛擬機設(shè)備的動態(tài)分配的制作方法

文檔序號:6467775閱讀:308來源:國知局
專利名稱:虛擬機設(shè)備的動態(tài)分配的制作方法
虛擬機設(shè)備的動態(tài)分配
背景技術(shù)
近來對虛擬機軟件的使用已經(jīng)經(jīng)歷了空前的增長。虛擬機軟件最初 被設(shè)計為軟件測試平臺,其對真實計算機系統(tǒng)的硬件進(jìn)行模擬和/或仿 真,從而允許在不做修改的情況下在所模擬/仿真的環(huán)境中執(zhí)行在實機上 執(zhí)行的軟件。對于在這種虛擬機上執(zhí)行的軟件來說,由虛擬化軟件所給 出的虛擬化機器就好像是真實計算機系統(tǒng)。
隨著真實計算機系統(tǒng)中的可熱插拔設(shè)備的出現(xiàn),現(xiàn)在可以獲得能夠
^t擬/仿真與實機相同的設(shè)備熱插拔的虛擬機。這種虛擬熱插拔能力允許 在單個真實計算機系統(tǒng)上執(zhí)行的多個虛擬機在按需的基礎(chǔ)上針對所述
虛擬機的配置動態(tài)地添加及去除虛擬化硬件資源。此外,由于所述虛擬 機才莫擬/仿真真實計算機系統(tǒng),因此所述虛擬機還才莫擬/仿真真實計算機 系統(tǒng)的固件,其中包括到所述虛擬化硬件的工業(yè)標(biāo)準(zhǔn)固件接口 (比如
Intel⑧的可擴展固件接口 (EFI))以及作為開放式工業(yè)標(biāo)準(zhǔn)的高級配置 與電源接口 (ACPI)。
利用上述固件接口 ,由所述真實/虛擬化計算機系統(tǒng)內(nèi)的嵌入式固件 把硬件表示為 一 系列對象,可以通過在所述計算機系統(tǒng)內(nèi)的處理器上執(zhí) 行的軟件(例如操作系統(tǒng))經(jīng)由所述固件接口來管理其中的每 一 個對象。 這些對象特別允許把設(shè)備操作為"可熱插拔"設(shè)備,即可以在無需斷電 或重啟所述計算機系統(tǒng)的情況下被插入該計算機系統(tǒng)或者從該計算機 系統(tǒng)拔出的設(shè)備。例如,當(dāng)插入某一設(shè)備時, 一旦所述設(shè)備硬件已被初 始化,則所述固件就向所述操作系統(tǒng)通知該設(shè)備可用。所述通知是通過 由所述計算機系統(tǒng)所使用的固件接口 (例如通過一條或多條ACPI通知 消息)而提供的。類似地,如果將要拔出某一設(shè)備,則所述固件向所述 操作系統(tǒng)通知已經(jīng)接收到針對彈出該設(shè)備的請求。所述操作系統(tǒng)驗證該 設(shè)備不在使用中,并且隨后通過所述固件接口(例如通過一條或多條 ACPI請求)向所述固件發(fā)出針對"彈出"所述硬件的請求。
所述虛擬化硬件資源的能力允許把實機的真實硬件資源的各子集 表示為具有減小的尺寸或性能的各單獨的虛擬硬件資源,并且還允許把 這些虛擬化資源熱插入及熱拔出一個或多個虛擬才幾。因此,例如可以4巴某一真實計算機系統(tǒng)內(nèi)的一個1GB存儲器表示為8個128MB虛擬存儲 器,其中可以在該真實計算機系統(tǒng)上執(zhí)行的 一個或多個虛擬機之間動態(tài) 分配所述虛擬存儲器。被分配給某一虛擬機的每一項資源由該機的虛擬 固件表示為一個對象(例如ACPI對象),其中使得由到在該虛擬機上 執(zhí)行的操作系統(tǒng)的固件接口能夠訪問該對象??梢栽诎葱璧幕A(chǔ)上把每 一個虛擬存儲器虛擬地?zé)岵迦牖驘岚纬鲈谒稣鎸嵱嬎銠C系統(tǒng)上執(zhí)行 的《壬何一 個所述虛擬才幾。
然而,有時會使用較大數(shù)目的對象以便在給定資源的各子集的分配 過程中實現(xiàn)更大的靈活性。使用大數(shù)目的虛擬化資源允許以更精細(xì)的粒 度來分配所述真實資源,并且降低了由于虛擬資源在使用中并且不可用 于再分配而將拒絕針對彈出所述虛擬資源的請求的概率。但是隨著虛擬 化資源的數(shù)目增大,與大量虛擬化資源的再分配相關(guān)聯(lián)的開銷可能會對 系統(tǒng)的性能造成不利影響,特別是那些執(zhí)行大量所述再分配的系統(tǒng)(例 如在各虛擬機之間執(zhí)行動態(tài)負(fù)載平衡的系統(tǒng))。


現(xiàn)在將參考附圖來詳細(xì)描述本發(fā)明的示例性實施例,其中 圖1示出根據(jù)至少一些說明性實施例的執(zhí)行虛擬機軟件的多個實例 的計算機系統(tǒng);
圖2A示出根據(jù)至少一些說明性實施例構(gòu)造的圖1的計算機系統(tǒng)的 一個例子;
圖2B示出根據(jù)至少 一 些說明性實施例構(gòu)造的圖2 A的計算機系統(tǒng)的 方框圖3A到3C示出根據(jù)至少一些說明性實施例把附加的虛擬存儲器 資源添加到虛擬機的 一 個例子;
圖4A到4E示出根據(jù)至少 一些說明性實施例把虛擬存儲器資源從一 個虛擬才幾再分配到另一個虛擬才幾的一個例子;以及
圖5示出根據(jù)至少一些說明性實施例的用于把虛擬設(shè)備從第 一虛擬 機彈出并且可選地把虛擬設(shè)備再分配到第二虛擬機的方法。
符號和命名法
在下面的描述以及權(quán)利要求書中使用特定術(shù)語來指代特定系統(tǒng)組件。本領(lǐng)域技術(shù)人員將認(rèn)識到,各個計算機公司可能會用不同的名稱來 指代某一組件。本文獻(xiàn)不打算在名稱不同而功能相同的組件之間進(jìn)行區(qū) 分。在下面的討論以及權(quán)利要求書中,術(shù)語"包括"是按照開放式方式 來使用的,因此其應(yīng)當(dāng)被解釋為是指"包括但不限于..."。此外,術(shù)語 "耦合"打算指間接的、直接的、光學(xué)的或無線的電連接。因此,如果 第一設(shè)備耦合到第二設(shè)備,那么該連接可以是通過直接電連接、通過經(jīng) 由其他設(shè)備和連接的間接電連接、通過光學(xué)電連接、或者通過無線電連 接。另外,術(shù)語"系統(tǒng)"指代兩個或更多個硬件和/或軟件組件的集合, 并且可以被用來指代電子設(shè)備,比如計算機、計算機的一部分、計算機 的組合等等。此外,術(shù)語"軟件"包括能夠在處理器上運行的任何可執(zhí) 行代碼,而不管被用來存儲所述軟件的介質(zhì)如何。因此,在軟件的定義 內(nèi)包括了存儲在非易失性存儲器中并且有時被稱作"嵌入式固件"的代 碼。此外,術(shù)語"真實計算機系統(tǒng),,指代實際的物理計算機系統(tǒng),舉例
來說,比如圖2A和2B中示出的計算沖幾系統(tǒng)。
術(shù)語"虛擬機"指代對計算機系統(tǒng)的仿真、模擬或者其他類似的功 能表示,由此所述虛擬機包括不受限定一個或多個真實或物理計算機系 統(tǒng)的物理邊界的約束的一個或多個功能組件。所述功能組件可以包括真 實或物理設(shè)備、互連總線和網(wǎng)絡(luò)、以及在一個或多個CPU上執(zhí)行的軟 件程序。虛擬機例如可以包括功能組件的子集,其包括某一真實或物理 計算機系統(tǒng)內(nèi)的 一些而非全部功能組件;虛擬機可以包括多個真實或物 理計算機系統(tǒng)的 一些功能組件;虛擬機可以包括一個真實或物理計算機 系統(tǒng)的全部功能組件,但是僅僅包括另 一個真實或物理計算機系統(tǒng)的一 些組件;或者虛擬機可以包括多個真實或物理計算機系統(tǒng)的全部功能組 件。還可能有許多其他組合,并且所有這種組合都打算在本公開內(nèi)容的 范圍內(nèi)。此外,在與其他組件、系統(tǒng)和/或子系統(tǒng)(例如存儲器、固件、 資源、存儲設(shè)備以及輸入/輸出設(shè)備)相關(guān)聯(lián)時,術(shù)語"虛擬"類似地指 代對所述組件、系統(tǒng)和/或子系統(tǒng)的仿真、模擬或者其他類似的功能表示, 其#皮實施為虛擬才幾的一部分或者纟皮實施為虛擬才幾軟件程序的一部分。
具體實施例方式
圖1示出包括處理邏輯102(例如微處理器)和易失性存儲裝置110 (例如隨機存取存儲器或RAM)的計算機系統(tǒng)100,其適合用于執(zhí)行虛擬化軟件(包括管理程序以及一個或多個虛擬機)并且是根據(jù)至少一些
說明性實施例而構(gòu)造的。管理程序200 (有時被稱作"虛擬機監(jiān)視器,,) 包括一個或多個虛擬機軟件程序,所述虛擬機軟件程序被加載到存儲器 110中并且由處理器102執(zhí)行。管理程序200保持對在由該管理程序200 創(chuàng)建的操作環(huán)境內(nèi)執(zhí)行的所述 一 個或多個虛擬機的控制并且保持所述 虛擬機之間的隔離。在一些說明性實施例中,管理程序200包括基本輸 入輸出系統(tǒng)(BIOS)軟件,而在其他說明性實施例中,所述BIOS包括 管理程序200。在另一些說明性實施例中,管理程序200作為在處理器 102上執(zhí)行的操作系統(tǒng)的一部分被包括,而在又一些說明性實施例中, 管理程序200作為已經(jīng)在處理器102上執(zhí)行的操作系統(tǒng)內(nèi)的應(yīng)用程序來 執(zhí)行。BIOS軟件、操作系統(tǒng)軟件和管理程序軟件的其他變型和組合對 于本領(lǐng)域技術(shù)人員而言將變得顯而易見,并且所有這種變型和組合都在 本公開內(nèi)容的范圍內(nèi)。
示出了在由圖1的管理程序200創(chuàng)建的操作環(huán)境內(nèi)執(zhí)行的3個虛擬 機(VM 300、 VM400和VM 500)。每一個虛擬機都模擬和/或仿真類 似于計算機系統(tǒng)100的真實計算機系統(tǒng)。因此,每一個虛擬機都包括虛 擬處理器(vProc 312、 412和512 )、虛擬存儲器設(shè)備(被包括在VM 300 內(nèi)的vMem[O] ( 220 )和vMem[l] ( 221 ) 、 VM 400內(nèi)的vMem[2] ( 222 )、 以及VM 500內(nèi)的vMem[3] ( 223 ))以及虛擬固件(vF/W316、 416和 516)。所述虛擬固件包括類似于被包括在真實固件中的程序,比如BIOS 代碼(未示出)以及硬件與電源控制接口代碼(比如在虛擬機300的虛 擬固件316內(nèi)示出的虛擬高級控制與電源接口 (vACPI)固件318)。 雖然圖1的實施例包括虛擬ACPI接口 ,但是其他說明性實施例可以包 括其他虛擬化硬件接口固件(例如Intel 的可擴展固件接口 (EFI)), 并且所有這種虛擬化硬件接口固件都在本公開內(nèi)容的范圍內(nèi)。
vACPI 318提供在虛擬處理器312上執(zhí)行的軟件,其具有到虛擬機 300的虛擬化硬件的接口。這種軟件例如包括圖1的操作系統(tǒng)314 (其 包括虛擬存儲器資源驅(qū)動器(vMRDvr) 315) 。 vACPI 318保持一系列 對象,其中每一個對象對應(yīng)于一個虛擬化硬件元件,并且其中每一個對 象包括與每一個虛擬化硬件元件的配置和狀態(tài)相關(guān)的信息。因此,例如 vMemObj[O](虛擬存儲器對象320 )是虛擬機300內(nèi)的一個虛擬化ACPI 對象,其包括與vMem[O](虛擬存儲器設(shè)備220)相關(guān)的信息,類似地,
8vMemObj[l](虛擬存儲器對象321 )是包括與vMem[l](虛擬存儲器設(shè) 備221 )相關(guān)的信息的虛擬化ACPI對象。被包括在這些對象內(nèi)的信息 例如可以包括所述設(shè)備在虛擬機300的存l諸器地址空間內(nèi)的基地址和地 址范圍。
圖1的說明性實施例的虛擬ACPI 318還保持虛擬存儲器資源對象 (vMRsrcObj) 330,其與一組虛擬設(shè)備(這里在所示出的該-說明性實施 例中是一組虛擬存儲器設(shè)備)的設(shè)備類型相關(guān)聯(lián)。虛擬存儲器資源對象 330提供單個狀態(tài)點以及針對"熱插拔"各組虛擬存儲器設(shè)備(即在無 需復(fù)位或重啟相應(yīng)的虛擬機的情況下添加或去除虛擬存儲器設(shè)備)的控 制。因此,例如如果由vACPI318 (例如通過通用事件或者說GPE)從 管理程序200接收到針對彈出特定數(shù)量的存儲器的請求,則由vACPI 318 向虛擬存儲器資源對象330發(fā)送單個聚集彈出通知,該虛擬存儲器資源 對象330又向虛擬存儲器資源驅(qū)動器315發(fā)送請求。虛擬存儲器資源對 象330還提供用于獲得關(guān)于各組設(shè)備對象的狀態(tài)和/或信息的單個點。因 此,虛擬存儲器資源驅(qū)動器315例如可以向虛擬存儲器資源對象330發(fā) 出單個查詢以便獲得關(guān)于某 一虛擬機內(nèi)的每一個所述虛擬存儲器的信
表,或者將被彈出的存儲器數(shù)量的^大小 :';''
虛擬存儲器資源驅(qū)動器315與操作系統(tǒng)314進(jìn)行交互,以便確定是 否有用以滿足所述請求的足夠的虛擬存儲器設(shè)備不在使用中或者正被 可以移出存儲器的可交換任務(wù)所訪問(從而使得所述存儲器可用于彈 出)。如果虛擬存儲器資源驅(qū)動器315識別出滿足所述請求的足夠的虛 擬存儲器設(shè)備,則由虛擬存儲器資源驅(qū)動器315內(nèi)部地(即在操作系統(tǒng) 314內(nèi))生成對應(yīng)于每一個虛擬存儲器設(shè)備的各單獨的彈出請求,并且 將所述彈出請求發(fā)送到對應(yīng)于將被彈出的存儲器設(shè)備的每一個虛擬存 儲器對象(例如圖1的虛擬存儲器對象320)。 一旦完成了所述各單獨 的彈出操作,虛擬存儲器資源對象330就(基于從虛擬存儲器資源驅(qū)動 器315接收到的完成狀態(tài))把所述聚集彈出的完成狀態(tài)返回到管理程序 200。
圖1的說明性實施例的虛擬存儲器資源對象330和虛擬存儲器資源 驅(qū)動器315的操作允許利用單個請求來彈出多個虛擬存儲器設(shè)備,并且 還允許在無需首先嘗試彈出一個或多個虛擬存儲器設(shè)備的情況下拒絕
9所述彈出請求。由于虛擬存儲器資源驅(qū)動器315在把任何所述單獨的彈 出請求發(fā)出到所述各單獨的虛擬存儲器對象之前確定是否有足夠的存 儲器設(shè)備可用于滿足所述請求,因此所述請求將不會改變所述系統(tǒng)的配 置,除非該請求可以成功地彈出所請求的存儲器數(shù)量。此外,與管理程 序嘗試單獨地彈出每一個虛擬存儲器設(shè)備并且可能必須一次一個地彈 出所述虛擬機中的所有虛擬存儲器設(shè)備的情況相比,通過使用被導(dǎo)向虛
擬存儲器資源驅(qū)動器315的單個請求以及僅僅發(fā)出滿足所述原始請求所 需的單獨彈出的次數(shù),得到更為高效的彈出操作。此外,如果有多于所 需的存儲器設(shè)備可用,則虛擬存儲器資源驅(qū)動器可以選擇彈出那些需要 最小開銷來彈出的虛擬存儲器設(shè)備(例如是不在使用中的存儲器,而不 是需要交換出數(shù)據(jù)的存儲器)。這種選擇允許總體上更快地執(zhí)行所述彈 出。
在至少一些說明性實施例中,由管理程序200發(fā)送到虛擬資源對象 330的針對彈出虛擬存儲器設(shè)備的請求包括被標(biāo)識以供彈出的特定虛擬 存儲器設(shè)備的列表而不是將要彈出的存儲器數(shù)量。在這種實施例中,虛 擬資源對象330再次向虛擬存儲器資源驅(qū)動器315發(fā)送單個請求,但是 取代掃描所有可用存儲器以找到滿足所述請求的足夠的虛擬存儲器設(shè) 備,僅僅檢查在所述請求中列出的那些虛擬存儲器設(shè)備以便確定對應(yīng)于 所述虛擬存儲器設(shè)備的存儲器范圍是否不在使用中(或者正被可交換任 務(wù)所使用)。如果任何所列出的設(shè)備不可用,則拒絕所述請求。否則就 把彈出請求發(fā)送到對應(yīng)于每一個所列出的虛擬存儲器設(shè)備的每一個虛 擬存儲器對象。 一旦完成了所述各單獨的彈出操作,虛擬存儲器資源對 象330就(基于從虛擬存儲器資源驅(qū)動器315接收到的完成狀態(tài))把所 述聚集彈出的完成狀態(tài)返回到管理程序200。
在至少一些說明性實施例中,管理程序200保持未分配的虛擬存儲
器設(shè)備(即尚未被添加到虛擬機的虛擬存儲器設(shè)備)的存儲庫,正如圖 1中所示出的那樣(虛擬存儲器設(shè)備224-227 (vMem[4-7]))。可以把 該存儲庫中的虛擬存儲器設(shè)備與從一個或多個虛擬機彈出的虛擬存儲 器設(shè)備一起利用來在按需的基礎(chǔ)上向計算機系統(tǒng)100內(nèi)的其他虛擬機提 供虛擬存儲器設(shè)備。在其他說明性實施例中,可以"在操作中"按照需 要創(chuàng)建虛擬存儲器設(shè)備并且將其分配給各虛擬機,而不是將其保持在管 理程序200內(nèi)的未分配的虛擬存儲器設(shè)備池中。個或多個真實存儲器設(shè)備的細(xì)分或子集,所述真實存儲器設(shè)備被包括在 存儲器110內(nèi)。因此,例如在至少一個說明性實施例中,存儲器110包
括4個真實的1GB存儲器設(shè)備(例如4個1GB雙列直插存儲器模塊或 者說DIMM),而每一個虛擬存儲器設(shè)備僅僅包括256MB的真實存儲 器。虛擬存儲器220-223利用第一 DIMM中的所述1GB的存儲器,虛 擬存儲器224-227利用第二 DIMM的所述1GB的存儲器,以及剩余的2 個DIMM的剩余的2GB的存儲器由管理程序200和/或在真實處理器102 上執(zhí)行的任何其他應(yīng)用程序來利用。真實與虛擬存儲器設(shè)備的許多其他 組織和組合對于本領(lǐng)域技術(shù)人員而言將變得顯而易見,并且所有這種組 織和組合都在本公開內(nèi)容的范圍內(nèi)。
圖2A和2B示出一個說明性計算機系統(tǒng)100,其適合用于執(zhí)行圖1 的虛擬化軟件(管理程序200以及虛擬才幾300、 400和500)。如所示, 所述說明性計算機系統(tǒng)100包括機箱180、顯示器140和輸入設(shè)備170。 所述計算機系統(tǒng)100包括處理邏輯102、易失性存儲裝置110和非易失 性存儲裝置164。處理邏輯102可以用硬件(例如微處理器)、軟件(例 如微代碼)、或者硬件與軟件的組合來實施。計算機系統(tǒng)100還包括計 算機可讀介質(zhì)。所述計算機可讀介質(zhì)包括易失性存儲裝置IIO(例如隨 機存取存儲器(RAM))、非易失性存儲裝置164 (例如閃速RAM、 只讀存儲器(ROM)、硬盤驅(qū)動器、軟盤(例如軟盤194)、光盤只讀 存儲器(CD-ROM,例如CD196))、或其組合。
易失性存儲裝置110和非易失性存儲裝置164當(dāng)中的任何一個或二 者例如包括軟件,所述軟件由處理邏輯102執(zhí)行并且為所述計算機系統(tǒng) 100提供在此所述的一些或全部功能。所述計算機系統(tǒng)IOO還包括網(wǎng)絡(luò) 接口 (網(wǎng)絡(luò)I/F) 162,其使得該計算機系統(tǒng)100能夠通過在圖2A的例 子中由以太網(wǎng)插座192表示的局域網(wǎng)和/或有線或無線廣域網(wǎng)來接收信 息。視頻接口 (視頻I/F) 142耦合到所述顯示器140。用戶通過耦合到 外圍接口 168的所述輸入設(shè)備170 (例如鍵盤)和/或定點設(shè)備172 (例 如鼠標(biāo))與所述站進(jìn)行通信。所述顯示器140可以與所述輸入設(shè)備170 和/或定點設(shè)備172 —起作為用戶接口來操作。
計算機系統(tǒng)IOO可以是基于總線的計算機,其中多種總線通過一系 列集線器或橋接器互連圖2B中示出的各種元件,其中包括存儲器控制
ii器集線器(MCH ) 104 (有時被稱作"北橋")和接口控制器集線器(ICH ) 106(有時被稱作"南橋")。圖2B的說明性實施例的總線包括前端 總線103,其把處理邏輯102耦合到MCH 104;加速圖形端口 ( AGP ) 總線141,其把一見頻接口 142耦合到MCH 104;外圍組件互連(PCI) 總線161,其把網(wǎng)絡(luò)接口 162、非易失性存儲裝置164、外圍接口 168和 ICH 106彼此耦合;PCI快速(PCIe)總線151,其4巴一個或多個PCI 快速設(shè)備152耦合到MCH 104;以及存儲器總線lll,其把MCH 104 耦合到易失性存儲裝置110內(nèi)的雙列直插存儲器;^莫塊(DIMM) 120和 130。
所述外圍接口 168接受來自所述輸入設(shè)備170和其他輸入設(shè)備(比 如定點設(shè)備172)的信號,并且把所述信號轉(zhuǎn)換成適合用于在PCI總線 161上傳送的形式。所述視頻接口 142可以包括圖形卡或者其他合適的 視頻接口,其接受來自所述AGP總線141的信息并且將其轉(zhuǎn)換成適合 用于所述顯示器140的形式。所述處理邏輯102收集來自其他系統(tǒng)元件 的信息,其中包括來自所述外圍接口 168的輸入數(shù)據(jù),以及來自非易失 性存儲裝置164或易失性存儲裝置IIO或者來自通過所述網(wǎng)絡(luò)接口 162 耦合到局域網(wǎng)或廣域網(wǎng)的其他系統(tǒng)(例如被用來存儲及分發(fā)可執(zhí)行代碼 的拷貝的服務(wù)器)的程序指令或其他數(shù)據(jù)。所述處理邏輯102執(zhí)行所述 程序指令(例如管理程序200)并且相應(yīng)地處理所述數(shù)據(jù)。所述程序指 令可以進(jìn)一步把所述處理邏輯102配置成向其他系統(tǒng)元件發(fā)送數(shù)據(jù),比 如通過所述視頻接口 142和顯示器140呈現(xiàn)給用戶的信息。所述網(wǎng)絡(luò)接 口 162使得所述處理邏輯102能夠通過網(wǎng)絡(luò)(例如因特網(wǎng))與其他系統(tǒng) 進(jìn)行通信。易失性存儲裝置IIO可以充當(dāng)用于所述處理邏輯102的信息 的低等待時間的臨時存儲裝置,以及非易失性存儲裝置164可以充當(dāng)信 息的長期(但是更高等待時間的)存儲裝置。
所述處理邏輯102 (以及從而作為一個整體的所述計算機系統(tǒng)100) 根據(jù)存儲在非易失性存儲裝置164上的或者通過所述網(wǎng)絡(luò)接口 162接收 的一個或多個程序進(jìn)行操作。所述處理邏輯102可以把所述程序的各部 分拷貝到易失性存儲裝置110中以用于更快地訪問,并且可以響應(yīng)于所 述輸入設(shè)備170的用戶啟動而在各程序之間進(jìn)行切換或者實施附加的程 序??梢詮姆且资源鎯ρb置164檢索所述附加的程序,或者可以通過 所述網(wǎng)絡(luò)接口 162從其他位置檢索或接收所述附加的程序。這些程序當(dāng)中的一個或多個在計算機系統(tǒng)ioo上執(zhí)行,從而使得該計算機系統(tǒng)執(zhí)行
在此公開的至少一些功能。
圖3A到3C示出根據(jù)至少一些說明性實施例由管理程序300把虛擬 存儲器設(shè)備添加到虛擬機300的一個例子。圖3A示出已經(jīng)分配了虛擬 存儲器設(shè)備220的虛擬機300。虛擬存儲器設(shè)備221和222由管理程序
可用于在請求時被分配。雖然圖3A到3C的實施例示出未分配虛擬存儲 器設(shè)備的靜態(tài)池,但是在其他說明性實施例中,可以例如在以下情況下 在"按需"或者"在操作中"的基礎(chǔ)上創(chuàng)建所述虛擬存儲器設(shè)備在由 管理程序200 (例如通過與計算機系統(tǒng)100相關(guān)耳關(guān)的用戶接口從發(fā)出請 求的操作者)接收到分配請求時;在由管理程序200基于該管理程序200 所監(jiān)視的已經(jīng)被分配給每一個虛擬機的存儲器的存儲器利用率水平來 內(nèi)部地生成請求時;或者在由虛擬機基于該虛擬機所監(jiān)視的該虛擬機的 存儲器利用率水平向所述管理程序生成請求時。
圖3A示出從管理程序200發(fā)送到vACPI 318的針對添加虛擬存4諸 器設(shè)備的初始請求351。管理程序200按照虛擬"熱插入"指示的形式 (例如作為ACPI通用事件或者說GPE)把所述添加請求發(fā)送到vACPI 318。圖3B示出對所述請求的初始響應(yīng),其中,先前未分配的虛擬存儲 器設(shè)備221和222 ^皮添加到虛擬才幾300,但是如由虛擬存4諸器設(shè)備221 和222與把虛擬處理器312耦合到虛擬存儲器設(shè)備220的總線之間的虛 線所指示的那樣,所述先前未分配的虛擬存儲器設(shè)備221和222尚不可 用。虛擬存儲器設(shè)備對象321和322由vACPI318添加,^f旦是尚未由搮: 作系統(tǒng)314識別(如由所述存儲器對象周圍的虛線所指示的那樣)。在 至少一些說明性實施例中,所述虛擬存儲器對象已經(jīng)存在于所述ACPI
名稱空間中,并且響應(yīng)于虛擬存儲器設(shè)備221和222的添加而從禁用狀 態(tài)過渡到啟用狀態(tài)。所述熱插入通知353由虛擬存儲器資源對象330轉(zhuǎn) 發(fā)到虛擬存儲器資源驅(qū)動器315,并且向虛擬機300的虛擬硬件配置反 映了虛擬存儲器設(shè)備221和222的添加。在至少一些說明性實施例中, 所述通知353包括新虛擬存儲器對象的列表,而在其他說明性實施例中, 可以通過查詢所述虛擬存儲器資源對象而獲得所述新虛擬存儲器對象 的列表。虛擬存儲器資源驅(qū)動器315內(nèi)部地生成兩個單獨的熱插入指示 (每一個指示對應(yīng)于一個虛擬存儲器設(shè)備),從而使得操作系統(tǒng)314識
13別出所添加的虛擬存儲器設(shè)備并且把所述設(shè)備添加到操作系統(tǒng)314的配 置中,正如圖3C中所示出的那樣。 一旦完成了對各單獨的虛擬存儲器 設(shè)備的添加,虛擬存儲器資源驅(qū)動器315就向虛擬存儲器資源對象330 發(fā)送完成狀態(tài)355,所述虛擬存儲器資源對象330又向管理程序200返 回完成狀態(tài)357。
圖4A到4D示出才艮據(jù)至少一些說明性實施例的從一個虛擬才幾到另 一個虛擬機的虛擬存儲器設(shè)備的再分配。圖4A示出已經(jīng)被分配給虛擬 機300的虛擬存儲器設(shè)備220、 221和222,以及已經(jīng)被分配給虛擬機 400的虛擬存儲器設(shè)備223。在接收到針對把虛擬存儲器從虛擬機300 再分配到虛擬機400的請求時,管理程序200首先按照"熱拔出"或者 "彈出"指示的形式向vACPI 318發(fā)出針對解除分配必要的存儲器的請 求451。在一些說明性實施例中,所述請求可以列出將要彈出的虛擬存 儲器設(shè)備,而在其他說明性實施例中,所述請求可以指定一個或多個量 度(例如存儲器大小以及諸如回寫、易失性/非易失性、以及存儲器位置 之類的存儲器屬性),所述量度被虛擬存儲器資源驅(qū)動器315內(nèi)的一個 或多個功能轉(zhuǎn)換成所需的虛擬存儲器設(shè)備的數(shù)目。
參考圖4B,虛擬聚集對象330把所述彈出請求453轉(zhuǎn)發(fā)到虛擬存儲 器資源驅(qū)動器315,該驅(qū)動器確定所需的資源是否可用。在圖4A到4E 的例子中,所述請求要求兩個可用的虛擬存儲器設(shè)備,所述虛擬存儲器 設(shè)備可用并且可以從虛擬機300解除分配(彈出)。圖4B示出去除虛 擬存儲器對象321和322 (由所述存儲器對象的虛線邊界來指示)以及 相應(yīng)的虛擬存儲器設(shè)備221和222 (由從虛擬存儲器設(shè)備221和222到 把虛擬存儲器設(shè)備220耦合到虛擬處理器312的總線的虛線來指示)。 如圖4C中所示, 一旦完成了所述彈出,虛擬存儲器資源驅(qū)動器315就 向虛擬存儲器資源對象330發(fā)送完成狀態(tài)455,所述虛擬存儲器資源對 象330又向管理程序200發(fā)送完成狀態(tài)457。
一旦從虛擬機300解除分配(彈出)虛擬存儲器設(shè)備221和222, 管理程序200就使得"姿照"熱插入,,指示的形式)向vACPI418發(fā)送 分配請求459 (圖4C),所述vACPI418又創(chuàng)建虛擬存儲器對象421和 422 (由虛線虛擬存儲器對象來指示),并且向虛擬存儲器資源驅(qū)動器 415發(fā)送熱插入通知消息(461),如圖4D中所示。圖4D還示出4巴虛 擬存儲器設(shè)備221和222添加到虛擬機400以及對所述添加的初始識別(由從虛擬存儲器設(shè)備221和222到耦合虛擬存儲器設(shè)備223與虛擬處 理器412的總線的虛線來指示)。圖4E示出最終得到的虛擬存儲器設(shè) 備221和222到虛擬機400的分配。 一旦完成了對虛擬存儲器設(shè)備221 和222的添加,虛擬存儲器資源驅(qū)動器就向虛擬存儲器資源對象430發(fā) 送完成狀態(tài),所述虛擬存儲器資源對象430又向管理程序200發(fā)送完成 狀態(tài)465。
在至少 一 些說明性實施例中,所述針對彈出虛擬設(shè)備的請求包括反 映將要彈出的虛擬設(shè)備的特性的量度。因此,這種實施例(例如如圖4A 到4C中所示)中的針對從虛擬機300彈出虛擬存儲器設(shè)備221和222 的請求例如包括以字節(jié)計的將要彈出的存儲器數(shù)量?;谒鎏摂M存儲 器設(shè)備的大小,通過虛擬存儲器資源驅(qū)動器315內(nèi)的一個或多個功能來 確定所需的設(shè)備的數(shù)目,并且如果滿足所述請求的所需數(shù)目的設(shè)備不在 使用中或者正由可交換任務(wù)使用(從而是可用的),則彈出所請求的虛 擬存儲器。例如,如果每一個虛擬存儲器設(shè)備是128MB并且請求彈出 2GB的存儲器,則如果至少16個存儲器設(shè)備可用就將彈出所請求的存 儲器。在針對彈出虛擬設(shè)備的請求內(nèi)可以使用與不同類型的虛擬設(shè)備相 關(guān)聯(lián)的其他量度,并且所有這種量度和虛擬設(shè)備類型都在本公開內(nèi)容的 范圍內(nèi)。通過允許針對設(shè)備的請求是基于某一量度而不是所請求的特定 設(shè)備的列表,對資源的負(fù)載平衡得到簡化,這是因為請求和/或管理所述 虛擬設(shè)備的程序(例如在虛擬機上執(zhí)行的應(yīng)用、或者管理程序)不需要 在作出所述請求之前跟蹤或檢查哪些設(shè)備正在使用中。
圖5示出根據(jù)至少 一些說明性實施例的用于從一個虛擬機到另 一個 虛擬才幾彈出及添加(即再分配) 一個或多個虛擬i殳備的方法600。向第 一虛擬機內(nèi)的虛擬資源對象發(fā)送請求,以便彈出(解除分配)當(dāng)前被分 配給第一虛擬機的一個或多個虛擬設(shè)備(塊602)。如塊604中所示, 如果滿足所述請求所需的虛擬設(shè)備當(dāng)前未被所述第一虛擬機使用或者 正在使用中但是可以使其可用(例如可以從存儲器設(shè)備交換出和/或清除 出的內(nèi)容),則從所述第一虛擬機彈出所請求的虛擬設(shè)備(塊608)。 如塊604中所示,如果所需的虛擬設(shè)備正在使用中并且無法使其可用(即 無法被清除),則拒絕所述請求(塊606 ),從而結(jié)束所述方法(塊616 )。 如果將不把所彈出的設(shè)備添加到另一個虛擬機(塊610),則所述方法 結(jié)束(塊616)。如果所請求的虛擬設(shè)備被彈出(塊608)并且將把一
15個或多個所彈出的設(shè)備添加到第二虛擬機(塊610),則向所述第二虛 擬機內(nèi)的某一虛擬設(shè)備資源對象發(fā)送命令,以便把一個或多個虛擬設(shè)備 添加到該虛擬機(塊612)。所述請求使得由所述虛擬沖幾生成虛擬熱插 入事件并為之服務(wù),并且所請求的虛擬設(shè)備被添加到該虛擬機(塊614 ), ,人而結(jié)束所述方法(塊616)。
上面的討論打算說明本發(fā)明的原理和各種實施例。對于本領(lǐng)域技術(shù) 人員而言, 一旦完全理解了上面的公開內(nèi)容,許多變型和修改就將變得 顯而易見。例如,雖然本公開內(nèi)容的至少一些說明性實施例描述了添加 及彈出虛擬存儲器設(shè)備,但是也可以如在此所述的那樣添加及彈出許多 其他虛擬設(shè)備,其中包括諸如虛擬硬盤、虛擬網(wǎng)絡(luò)適配器以及虛擬處理 器(每個虛擬機具有多于一個虛擬處理器,或者具有不同有效速度的虛 擬處理器)之類的設(shè)備,在這里僅僅舉出幾個例子。此外,在所述彈出 請求中提供的所述量度不限于存儲器大小,并且可以是與可以被彈出的 所述許多虛擬設(shè)備相關(guān)聯(lián)的任何數(shù)目的量度。這種量度的例子可以包括 虛擬硬盤的傳輸帶寬、虛擬網(wǎng)絡(luò)適配器的通信帶寬、虛擬處理器的數(shù)目、 虛擬處理器的處理能力(例如以每秒百萬指令或者說MIPS計)以及虛 擬處理器的速度,其中的每一項可以被表示為一個或多個真實設(shè)備的相 應(yīng)量度的一定比例。后面的權(quán)利要求書打算被解釋為包含所有上述的變 型和i奮改。
權(quán)利要求
1、一種方法,包括在真實計算機系統(tǒng)(100)上執(zhí)行虛擬機軟件(300),所述虛擬機軟件包括管理程序(200)和虛擬機,所述虛擬機包括多個虛擬設(shè)備(220,221);把所述多個虛擬設(shè)備當(dāng)中的每一個與所述真實計算機系統(tǒng)內(nèi)的真實設(shè)備(110)的唯一子集相關(guān)聯(lián);所述管理程序向所述虛擬機內(nèi)的虛擬固件(316)發(fā)送針對彈出的請求,所述請求要求從該虛擬機彈出所述多個虛擬設(shè)備當(dāng)中的一個或多個虛擬設(shè)備;所述虛擬固件內(nèi)的虛擬設(shè)備資源對象把所述針對彈出的請求轉(zhuǎn)發(fā)到在所述虛擬機上執(zhí)行的虛擬設(shè)備資源驅(qū)動器(315);以及所述虛擬設(shè)備資源驅(qū)動器導(dǎo)致響應(yīng)于所轉(zhuǎn)發(fā)的請求而從所述虛擬機單獨彈出所述一個或多個虛擬設(shè)備當(dāng)中的每一個。
2、 根據(jù)權(quán)利要求l所述的方法,還包括把所述虛擬設(shè)備資源對象 與所述多個虛擬設(shè)備(220, 221)的設(shè)備類型相關(guān)聯(lián)。
3、 根據(jù)權(quán)利要求l所述的方法,還包括基于被包括在所述針對彈出的請求中的量度來確定滿足所述針對 彈出的請求所需的虛擬設(shè)備(220, 221 )的數(shù)目;以及如果有足夠數(shù)目的虛擬設(shè)備可用,并且確定了所述多個虛擬設(shè)備當(dāng) 中的哪些被用來滿足所述針對彈出的請求,則從所述虛擬機彈出被確定 需要的所述虛擬設(shè)備;其中,由所述虛擬設(shè)備資源驅(qū)動器(315)來執(zhí)行對所需的虛擬設(shè) 備的數(shù)目的所述確定以及對使用所述多個虛擬設(shè)備當(dāng)中的哪些的所述 確定。
4、 根據(jù)權(quán)利要求l所述的方法,還包括基于被包括在所述請求中的虛擬設(shè)備的列表來確定哪些虛擬設(shè)備 (220, 221)被識別以供彈出;以及如果在所述請求中列出的虛擬設(shè)備可用,則從所述虛擬機彈出所列 出的所述虛擬設(shè)備。
5、 根據(jù)權(quán)利要求l所述的方法,還包括所述管理程序(200 )向所述虛擬設(shè)備資源對象發(fā)送針對把一個或多個虛擬i殳備(220, 221 )添加到所述虛擬才幾的請求;所述虛擬設(shè)備資源對象把所述針對添加的請求轉(zhuǎn)發(fā)到所述虛擬設(shè)備資源驅(qū)動器(315);以及所述虛擬設(shè)備資源驅(qū)動器使得分別把所述一個或多個虛擬設(shè)備單獨地添加到所述虛擬才幾。
6、 一種計算機系統(tǒng),包括執(zhí)行虛擬^L軟件(300)的真實處理器,所述虛擬機軟件實施虛擬 機,所述虛擬機包括虛擬處理器、虛擬資源設(shè)備驅(qū)動器、包括虛擬設(shè) 備資源對象的虛擬固件(316)、以及多個虛擬設(shè)備(220, 221 );以 及耦合到所述處理器的真實設(shè)備(110),所述虛擬機軟件把所述多 個虛擬設(shè)備當(dāng)中的每一個與該真實設(shè)備的唯一細(xì)分相關(guān)聯(lián);求,所述請求要求從所述虛擬機彈出所述多個虛擬設(shè)備當(dāng)中的一個或多 個虛擬i殳備;以及其中,所述虛擬設(shè)備資源對象使得所述虛擬資源設(shè)備驅(qū)動器從所述 虛擬機單獨地彈出所請求的所述一個或多個虛擬設(shè)備。
7、 根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中,所述虛擬設(shè)備資源對 象與所述多個虛擬設(shè)備(220, 221 )的設(shè)備類型相關(guān)聯(lián)。
8、 根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中,所述真實設(shè)備(110) 包括真實存儲器設(shè)備,并且所述多個虛擬設(shè)備(220, 221 )包括多個虛 擬存儲器設(shè)備,所述多個虛擬存儲器設(shè)備中的每一個與由所述真實存儲 器設(shè)備所占據(jù)的地址空間的唯一子范圍相關(guān)聯(lián)。
9、 根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中,所述虛擬資源設(shè)備驅(qū)動器基于被包括在所述針對彈出的請求 中的量度來確定滿足所述請求所需的虛擬設(shè)備(220, 221 )的數(shù)目,并 且還確定選擇使用所述多個虛擬設(shè)備當(dāng)中的哪些來滿足所述針對彈出 的請求;以及其中,如果所述虛擬資源設(shè)備驅(qū)動器確定有足夠數(shù)目的虛擬設(shè)備不 在使用中,則所述虛擬機軟件(300)彈出被確定需要并且被選擇使用 的所述虛擬設(shè)備。
10、 根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中,所述虛擬資源設(shè)備驅(qū)動器基于在所述請求中提供的虛擬設(shè)備的列表來確定哪些虛擬設(shè)備(220, 221 )被識別以供彈出;以及如果在所述請求中列出的虛擬設(shè)備可用,則所述虛擬機軟件(300) 從所述虛擬機彈出所列出的所述虛擬設(shè)備。
全文摘要
本發(fā)明公開了虛擬機設(shè)備的動態(tài)分配。在此描述了用于高效地動態(tài)分配虛擬機資源的系統(tǒng)和方法。至少一些說明性實施例包括一種方法,其包括在真實計算機系統(tǒng)(100)上執(zhí)行虛擬機軟件(300),所述虛擬機軟件包括管理程序(200)和虛擬機,所述虛擬機包括多個虛擬設(shè)備(220,221);把所述多個虛擬設(shè)備當(dāng)中的每一個與所述真實計算機系統(tǒng)(100)內(nèi)的真實設(shè)備(110)的唯一子集相關(guān)聯(lián);所述管理程序(200)發(fā)送針對彈出的請求;虛擬設(shè)備資源對象(330)把所述針對彈出的請求轉(zhuǎn)發(fā)到虛擬設(shè)備資源驅(qū)動器(315);以及所述虛擬設(shè)備資源驅(qū)動器(315)導(dǎo)致單獨彈出所述虛擬設(shè)備(220,221)當(dāng)中的每一個。
文檔編號G06F9/50GK101425022SQ200810173958
公開日2009年5月6日 申請日期2008年10月31日 優(yōu)先權(quán)日2007年10月31日
發(fā)明者T·卡尼 申請人:惠普開發(fā)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1