動態虛擬機生成的製作方法
2023-07-20 07:10:56 3
專利名稱:動態虛擬機生成的製作方法
技術領域:
本發明的實施例涉及虛擬機技術,更具體來"i兌,涉及虛擬機的動 態創建。
背景技術:
隨著虛擬機用於使多個獨立操作環境能夠在可用硬體上運行,虛 擬化的使用不斷增加。按照傳統方式,虛擬機創建通過通常涉及人類 管理員配置和實現各虛擬機的管理動作來進行。在一些情況中, 一個 或多個操作是可描述的,它們允許代表可配置和實現虛擬機(例如可調 用的服務)的管理員運行腳本。傳統的虛擬機創建所需的用戶輸入減少 了在工作環境中使用虛擬化的機會;特別是在虛擬機用於專門目的(例 如測試、運行隔離的進程)的方面,其中建立虛擬機所涉及的工作對於 虛擬機的預計使用可能看來並不合理。在虛擬機的存在時間預計比較 短(例如大約數秒鐘)時,情況可能更是如此。缺少使用虛擬化的機會 可能導致因無法在隔離環境(例如虛擬化所提供的隔離環境)中運行特 定進程或者執行特定任務所涉及的更高安全風險和開發成本。發明內容根據本發明的一方面,本發明涉及一種用於生成虛擬機的方法, 包括響應在程序運行時從所述程序接收的克隆請求而識別要克隆的虛 擬機(VM)狀態;確定在哪些硬體資源上生成所述VM克隆;以及 在所確定的硬體資源上生成所述VM克隆。
根據本發明的另一方面,本發明涉及一種包括其上存儲了內容的 機器可讀存儲i某體的製造產品,所述內容提供使裝置執行包括以下步驟的操作的指令從虛擬機(VM)上運行的應用程式接收克隆請求、即克隆所述VM 的請求;確定所述VM的操作狀態;識別在其上生成所述克隆的可用資源;以及在所識別的資源上生成具有所確定的才乘作狀態的克隆。 根據本發明的又一方面,本發明涉及一種虛擬機(VM)生成器,包括克隆引擎,用於識別具有要克隆的VM的VM狀態和虛擬硬體映 射的VM,並確定哪些硬體資源可用於在其上克隆所識別的VM,包 括克隆所述VM狀態和所述虛擬硬體映射;與所述克隆引擎耦合的布置引擎,用於確定在哪些可用硬體資源 上克隆所識別的VM;以及VM實例化才莫塊,用於在由所述布置引擎確定的所述石更件資源上 實例化具有所述VM狀態的克隆。根據本發明的再一方面,本發明涉及一種虛擬機(VM)管理器,包括管理VM資源的VM控制器;以及與所述VM控制器耦合的VM生成器,所述VM生成器具有克 隆引擎,用於識別具有要克隆的VM的VM狀態和虛擬硬體映射的 VM,並確定哪些硬體資源可用於在其上克隆所識別的VM,包括克隆 所述VM狀態和所述虛擬硬體映射;與所述克隆引擎耦合的布置引 擎,用於確定在哪些可用硬體資源上克隆所識別的VM;以及VM實 例化才莫塊,用於在由所述布置引擎確定的所述硬體資源上實例化具有 所述VM狀態的克隆。
以下描述包括對各個附圖的論述,通過本發明的實施例的實現的 實例對附圖進行了說明。附圖應當理解為舉例說明,而不應當理解為 限制。圖1是具有動態創建虛擬機(VM)的VM生成器的系統的 一個實施 例的框圖。圖2是具有帶分析引擎和布置引擎的虛擬機(VM)生成器的系統的 一個實施例的框圖。圖3是虛擬機(VM)生成器的一個實施例的框圖。圖4是具有隨可能的不同資源使用情況而動態創建虛擬機(VM)的 VM生成器的系統的一個實施例的框圖。圖5是用於利用虛擬機(VM)生成器派生VM的進程的一個實施例 的流程圖。
具體實施方式
本文採用的對一個或多個"實施例"的提法將被理解為描述本發 明的至少一個實現中包含的具體特徵、結構或特性。本文中出現的例 如"在一個實施例中"或"在一個備選實施例中"等短語描述本發明 的各種實施例和實現,但不一定都表示同一個實施例。但是,它們也 不一定相互排斥。下面進行某些細節和實現的描述,其中先簡要描述 本發明的實施例,然後參照附圖進行更詳細描述。系統包括在運行時動態創建虛擬機(VM)的VM生成器。與要求管 理活動的傳統VM創建相比,應用程式或力良務可將虛擬機創建結合到 其基本應用邏輯中。本文所使用的"應用程式"在此用來描述VM生 成的調用,它僅為了簡潔起見而用於描述;實際上,應用程式或服務 或者其它軟體實體可包括可調用如本文所述的VM生成的邏輯。因 此,在提到"應用程式"提供請求或者提供VM創建的參數的情況下, 應當理解同樣也完全適用於服務或其它軟體實體。應用程式可向VM
生成器請求生成VM(例如經由"VMfork"程式語言構造)。VM生成器 接收該操作請求,並克隆運行VM。本文所述的VM生成器可利用克隆運行虛擬機的"VMfork"操作。 VM生成器可看作具有兩個主要部分VM克隆機構以及新VM位置 機構。在一個實施例中,由應用程式進行的VM克隆操作的調用啟動 VM生成器中的兩種機構。因此,應用程式可請求生成VM克隆,以 及VM生成器確定需要分配哪些資源以便產生該克隆,確定生成克隆 的位置,並在所確定位置中創建克隆。在一個實施例中,調用VMfork操作引起執行邏輯動作,其中包 括創建虛擬資源、拷貝克隆的VM的狀態或軟體環境以及向請求應用 程序返回新VM的標識符。創建虛擬資源可包括提供多個系統配置的 任一個。下面更全面地進行說明,資源可^皮複製、共享,或者最初尋皮 共享並在產生配置改變時;l皮複製。注意,不同的資源使用情況可能存 在於VM克隆中,這意味著,不同使用情況可存在於單個VM的不同 資源之間。因此,例如,可能在VM克隆中複製一個資源(例如存儲資 源),而在該克隆中共享另一個資源(例如網紹 接口)。 VM克隆的資源 配置的選擇取決於任何數量的因素,包括克隆的目的、克隆的預計使 用壽命、用以克隆的可用資源等。拷貝克隆的VM的狀態包括複製待克隆的VM正在其中運行的操 作系統和軟體環境。拷貝狀態可包括設置配置等。拷貝VM的狀態可 包括複製或共享磁碟內容、過程、存儲器內容、外設狀態等。向請求應用程式返回新VM的標識符包括返回句柄(handle)、IP(因 特網協議)地址或者成功克隆的VM的其它標識符。在克隆不成功的情 況中,可將出錯返回給請求應用程式。除了可支持克隆機構的操作/動作之外,VM生成器還可執行多個 操作/動作的任一個,以便支持確定克隆的VM的位置。克隆VM的位 置可根據許多因素來確定,這些因素的實例可包括克隆的(新)VM的屬 性(例如>^人原始VM繼承的屬性、調用克隆的進程所指定的屬性等)、 當前計算環境的屬性(例如機器上的負荷、功率要求等)和/或其它因 素。要由VM生成器考慮的因素可包括資源分配和/或可用性(例如存儲器、磁碟/存儲裝置(包括網絡連接存儲裝置NAS)、處理器/核心的可 用性、可用1/0(輸^/輸出)、對網絡的訪問、到其它計算機的連接、資源等待時間、對裝置的等待時間、對網絡位置的等待時間、可靠性等)、 來自請求應用程式的提示和/或優選項(優選單個硬體裝置上的新VM、 VM將存在x秒/分鐘、所需可用性等)或者其它任何考慮因素。一些當前作業系統包括標準"派生(fork)"操作(支持uniX(POSIX) 的便攜作業系統接口的作業系統),它在獨立地址空間中克隆運行進 程。通過由軟體應用程式和服務在支持相關進程創建操作(或"派生,, 操作)的環境中執行這種操作的頻率來說明這種操作的有用性。類似 地,提供"VMfork"操作使應用程式和/或服務產生相關VM。此外, 如本文所述地,通過應用邏輯對VM創建的調用精簡了關於提出新VM 的位置的確定(部分或完全)。這種確定的精筒減輕了程序設計人員編 寫代碼以便在運行時動態確定分發代碼的位置和方式的負擔。這種確定而是可由VM生成器來處理。在一個實施例中,作為對處理VM創建的VM生成器子例程的函 數調用來執行VM創建的調用(例如"VMfork")。或者,可經由例如 向VM生成器發送消息或信號、調用啟動VM生成器的中斷或者其它 方式等的其它機制,來調用VM創建。圖1是具有動態創^擬機(VM)的VM生成器的系統的一個實施 例的框圖。系統100包括作為要克隆的VM的VM 110。為了清楚起 見而不是作為限制,將VM110稱作"原始VM110",它表示以下事 實VM110存在,並且在發起如本文所述的克隆操作時正在運行。系 統100的VM 120表示原始VM IIO的克隆,並且為了筒潔起見而不 是限制,稱作"新VM120",它表示新VM120源於原始VM110這 一事實。原始VM 110包括作業系統(OS)l 12,作業系統(OS)l 12不僅具體表
示作業系統,而且還表示原始VM 110的軟體環境或軟體狀態。原始VM 110還包括虛擬硬體114,虛擬硬體114表示原始VM 110的硬體 狀態。虛擬硬體114表示分配給原始VM 110的所有硬體資源。將虛 擬硬體114映射到物理硬體140,物理硬體140表示系統100中的實 際裝置,例如存儲器、處理器、網絡接口、存儲裝置、磁碟驅動器等。 注意,物理硬體140可存在於系統100的一個或多個不同的物理裝置 或機器中。也就是說,物理硬體140可全部存在於單個框中,或者可 作為多個獨立框的資源的虛擬集合體而存在。物理硬體140可包括作 為網絡資源(例如網絡連接存儲裝置(NAS)、機架安裝資源等)可用的物 理裝置和/或從多個連網裝置可得到的資源。VMM 130表示虛擬機管理器或管理程序,它管理物理硬體140 的物理資源以及虛擬硬體114到物理資源的分配或映射。在一個實施 例中,VMM 130與VM生成器150耦合,VM生成器150包括VM克 隆機構和新VM位置機構。本文所使用的"耦合"表示無論是電氣、 機械和/或通信的任何類型的連通性。 一個硬體組件與另一個的耦合可 通過其它硬體進行。軟體組件可通過函數調用或者例程/子例程的其它 調用相互耦合。硬體和軟體可通過使軟體;溪塊能夠向硬體組件提供控 制命令的驅動程序和其它軟體進行耦合。在一個實施例中,VM生成 器150是VMM 130的組成部分,或者VM生成器150提供VMM 130 的擴展。注意,VM生成器150可能獨立於VMM 130。 VMM 130可 駐留在運行VM的多平臺環境(例如多核機器)中,或者可能是管理運 行VM的平臺的網絡實體。VMM 130包括VM控制器132, VM控制器132表示管理VM的 一個或多個組件。VM控制器132使VMM 130能夠管理VM的資源, 並執行被中斷的VM的診斷和恢復。在一個實施例中,VM生成器經 由VM控制器132創建VM克隆。VM生成器150從應用程式接收克隆原始VM 110的請求。為了 克隆原始VM 110, VM生成器150確定克隆該VM所必需的資源。VM生成器150根據VMM 130確定哪些物理資源被使用(例如識別虛 擬硬體114),並確定原始VM 110的操作環境(例如OS 112的狀態)。 例如通過請求配置信息以及讀取這種信息,VM生成器150可識別原 始VM110的狀態。VM生成器150根據物理硬體140、已識別物理資源以及原始VM 110的操作狀態來確定可生成克隆的位置。新VM 120包括虛擬硬體 124,虛擬硬體124具有對相當於原始VM 110的硬體資源的硬體資源 的映射。同樣,OS 122相當於OS 112的狀態。在一個實施例中,在 生成新VM 120之後,VM生成器150向請求應用程式返回新VM 120 的標識符。圖2是具有帶分析引擎和布置引擎的虛擬機(VM)生成器的系統的 一個實施例的框圖。系統200包括VM 202, VM 202包括應用程式 (app)222。應用程式222包括表示應用程式的操作流程的各種指令行 (instr)。在應用程式的操作流程中的一個點上,應用程式222包括指令 v=VMfork(a,b,c),該指令表示生成VM 202的克隆的請求,其中帶有 某些參數'a' 、 'b,和'c,。參數可表示與作為VM202的克隆的 VM204的創建有關的優選項或提示。例如,調用應用程式222可能表 示要在與VM 202相同的物理裝置中生成的VM 204的優選項、或者 要利用採用單個硬體裝置上的所有資源生成的VM 204的優選項。應 用程序222還可表明關於克隆的目的、克隆的預計使用壽命等的提 示。在一個實施例中,參數允許應用程式222向VM生成器210傳遞 有關它的軟體環境的信息。VM生成器210接收傳遞了任何參數的VMfork指令,並確定克隆 VM 202所需的資源以及生成克隆的VM 204的位置。在一個實施例 中,VM生成器210包括分析引擎212,分析引擎212使VM生成器 210能夠識別所需的各種硬體資源以及將要克隆的VM 202的軟體狀 態。在一個實施例中,VM生成器210包括布置引擎214,布置引擎 214使VM生成器210能夠識別映射到虛擬硬體、在VM 204中將克 隆其軟體狀態的物理資源。VM204示出為具有應用程式224,應用程 序224表示應用程式222的克隆。在處理和運行VMfork指令(它生成 VM204)之後,應用程式的運行在它之前停止的位置上採用VMfork指 令之後的指令繼續進行。注意,應用程式的運行將在VM 202以及在 VM204中繼續進行。因此,可利用需要虛擬機、創建虛擬機的一段或 多段對應用程式222編程,以及需要虛擬機的代碼將在獨立環境中運 行。圖3是虛擬機(VM)生成器的一個實施例的框圖。VM生成器300 包括實現指導VM生成器300的操作的邏輯功能控制的控制邏輯302 和/或與指導VM生成器300的操作關聯的硬體。VM生成器300中表 示的組件的每一個是可採用硬體、軟體或者組合來實現的部件。邏輯 302可能是硬體邏輯電路和/或軟體例程。在一個實施例中,邏輯可能 是在計算裝置的處理器中運行的指令。因此,在軟體實現中,邏輯302 提供用於控制運行VM生成器300的處理器的操作的指令。在硬體實 現中,邏輯302表示提供功能控制(例如信號線上的輸出)的電路。邏輯 302還可能是指例如控制釆用組合的軟體和硬體的實現中的嵌入式處 理器的操作指令和電路。在一個實施例中,在部分或全部作為軟體的實現中,VM生成器 300包括一個或多個應用程式304,應用程式304表示向控制邏輯302 提供指令的代碼序列和/或程序。應用程式304可能是在運行VM生成 器300的公共處理器中運行的代碼。在一個實施例中,VM生成器300包括存儲器306和/或對用於存 儲數據和/或指令的存儲器資源306的訪問。在硬體實現中,表示VM 生成器300的硬體電路可包括存儲裝置。在軟體實現中,存儲器306 可理解為是指軟體才莫塊在存儲器中存儲數據以及訪問寄存器以便運行 代碼的能力。因此,存儲器306可包括VM生成器300本地的存儲器, 以及作為補充或替代還包括VM生成器300所在的裝置的存^l器。VM生成器300還包括一個或多個接口 308,接口 308表示相對於 VM生成器300外部的實體、至/來自VM生成器300的訪問接口 (作為 輸入/輸出接口)。在一個實施例中,作為可由用戶通過用戶界面在外部 操縱的系統的組件,VM生成器300是可訪問的。因此,在VM生成 器300是人類用戶可訪問的實現中,接口 308可包括圖形用戶界面、 鍵盤、指針裝置等。在一個備選實施例中,VM生成器300對於人類 用戶"在後臺,,運行,表示模塊在人類用戶不可見的情況下執行其功 能。但是,即使作為獨立組件是人類用戶不可見的,但VM生成器300 可能是外部電子組件或者外部軟體應用程式可訪問的。因此,在一個 實施例中,接口 308包括外部程序可通過其來訪問模塊的機構(例如 VM生成器300的硬體實現中的驅動器、軟體實現中的應用程式接口 (API)等)。VM生成器300還包括克隆引擎310,克隆引擎310表示使VM生 成器300能夠提供VM克隆的資源分配的一個或多個功能組件。VM 生成器300還包括布置引擎320,布置引擎320表示使VM生成器300 能夠提供克隆的VM的布置的一個或多個功能組件。克隆引擎310和 布置引擎320可實現為硬體和/或軟體,並且提供VM生成器300的功 能性。組件的功能或特徵包括一個或多個部件或者由一個或多個部件 來提供,這些部件可包括用於克隆引擎324的狀態確定器312、輸入 參數模塊314、資源確定器316和資源使用選擇器318以及用於布置 引擎320的資源輸入才莫塊322、物理硬體(hw)識別器324和提示/優選 項(pref)確定器326。各組件還可包括4是供特定功能性的其它模塊。本 文所使用的"模塊"表示無論以硬體、軟體還是某種組合來實現的例 程、子系統等。狀態確定器312使克隆引擎310能夠確定要克隆的VM的操作狀 態。操作狀態可包括在VM中運行的作業系統、在作業系統中運行的 應用程式以及系統配置。操作狀態中包含的可能是安全信息、許可、 密碼等。注意,克隆的VM中的等效操作狀態不一定表示完全相同的 配置。例如,在使用獨立的物理資源的情況中,IP位址或其它網絡標
識符可能是不同的,數字證書可能是不同的,等等。因此,"等效,, 在本文中不應當理解為表示完全相同,而是表示除了某些變量之外基 本上相同的狀態。在一個實施例中,狀態確定器312訪問配置表和/或文件,以便確定要克隆的VM的狀態。輸入參數才莫塊314使克隆引擎310能夠接收來自請求應用程式的 提示和/或優選項參數。在一個實施例中,還將狀態信息作為參數來傳 遞。輸入參數還可包括系統和網絡信息。輸入參數;f莫塊314解析並處 理各種輸入參數。輸入參數為克隆引擎310提供可用於確定哪些資源 可用於克隆所選/已識別的VM的信息。資源確定器316使克隆引擎310能夠識別待克隆的VM的虛擬硬 件配置/簡檔中的資源。資源確定器316還確定請求了克隆的應用程式 正在其中運行的裝置中的可用資源、以及可用的網絡資源。在一個實 施例中,資源確定器316還確定應用程式正在其中運行的裝置中已識 別的資源上和/或網絡資源上的負荷。在一個實施例中,VM生成器300 配置成一般採用具有最小負荷的資源來創建VM。在一個實施例中, 資源確定器316編譯列表或數據結構,列表或數據結構包括與所需資 源、可用資源以及可能的可用資源的狀態有關的信息。這種數據結構 可由資源確定器316傳遞給另一個功能或才莫塊、例如布置引擎320的 某個組件。資源使用選擇器318使克隆引擎310能夠確定每個待克隆的已識 別資源的使用情況。使用情況選擇的具體情況將參照圖4更全面地描 述,在此僅作筒要論述。可以共享資源,其中原始VM以及新VM均 經由其虛擬硬體配置映射到單個物理組件。還可拷貝資源,這是指由 原始VM映射的物理組件祐L新VM複製和映射的使用情況。資源的復 制包括拷貝內容。資源也可能最初^^皮共享,然後在改變時一支拷貝(例如 供存儲的寫入時拷貝)。因此,為了讀取或訪問的目的,兩種VM可映 射到相同的物理裝置上。但是,如果在新VM中生成配置改變或者內 容的改變,則為新VM複製物理裝置的至少那個部分。因此,可完整
或部分複製資源。資源輸入才莫塊322使布置引擎320能夠接收克隆引擎、或者可能 提供關於產生VM克隆所需資源的確定的另一個實體的資源確定。例 如,資源輸入才莫塊322可與資源確定器316耦合,並接收資源確定器 的確定的輸出。布置引擎320參照哪些資源已知是可用的、以及可能 參照那些資源的狀態來考慮資源需求。注意,本文所使用的"可用的" 一般表示資源是可識別的並且一般對VM是可訪問的。對於可用的資 源,可考慮諸如資源負荷、許可、安全性等的其它考慮因素,以便確 定是否可經由VM的虛擬硬體來映射已識別資源。物理硬體識別器324使布置引擎320能夠識別可考慮用於創^Jt 隆VM的可用物理硬體資源。在一個實施例中,在啟動VMM時向 VMM指示所有系統資源,並且可使信息對於VM生成器300是可用 的。還可當資源在系統中變為可用時向VM生成器指示資源(例如,新 添加的資源可向系統表明自己的身份)。物理硬體識別器324—般可識 別可用硬體,並且明確地使布置引擎320能夠識別用於VM克隆的具 體硬體資源。因此,由物理硬體識別器324或者等效才莫塊來確定將用 於VM克隆的具體硬體。注意,雖然用於VM的硬體可能沒有駐留在 單個物理位置(例如在單個裝置或者單個機架)中,但是,硬體識別VM 的"位置"或者識別將要創建VM的"位置"。因此,當提到在一個 位置或者另一個位置中創建VM時,對位置的引用是指將要分配給VM 的硬體資源,它們在VM的虛擬硬體配置中被映射。提示/優選項確定器326使布置引擎320能夠按照請求應用程式所 提供的優選項或提示來調節關於創建克隆VM的位置的確定。以上提 供了提示或建議的實例,並且在此不再贅述。這類提示或優選項可能 影響實際上可為VM分配的可識別硬體資源。例如,如果指示了某個 負荷優選項,則布置引擎320可確定某個處理器對於VM的虛擬硬體 配置不是適當選擇,因為該處理器具有高於所指示優選項的負荷。VM生成器300還包括VM實例化器330。又可稱作VM實例化 衝莫塊的VM實例化器330表示VM生成器300採用已識別資源在所確 定位置中創建克隆VM的能力。在一個實施例中,創建克隆VM是指 向VMM請求創建VM,或者觸發VMM以創建克隆VM。按照在其 中生成VM的系統以及VMM的配置和能力,用於生成VM的具體算 法是實現特定的。因此,具體算法的論述超出了本文論述的範圍,並 且認為本領域的技術人員熟悉實例化過程。本文中對衝莫塊的說明描述了可包括硬體、軟體和/或它們的組合的 組件。在執行本文所述操作的組件包括軟體的情況中,可由機器/電子 裝置/硬體經由製造產品來提供軟體數據、指令和/或配置。製造產品可 包括具有提供指令、數據等的內容的機器可讀i某體。內容可產生本文 所述的電子裝置,從而執行所述的各種操作或運行。機器可讀々某體包 括提供(即存儲和/或傳送)以機器(如計算裝置、電子裝置、電子系統/ 子系統等)可讀的形式的信息/內容的任何機構。例如,機器可讀i某體包 括可記錄/不可記錄媒體(例如只讀存儲器(ROM)、隨機存取存儲器 (RAM)、磁碟存儲媒體、光存儲媒體、以及閃速存儲裝置等)。機器可 讀i某體還可包括在存儲裝置中加載了代碼的電子裝置,其中的代碼可 在電子裝置工作時^皮運行。因此,交付具有這種代碼的電子裝置可理 解為提供具有本文所述的這種內容的製造產品。此外,在資料庫或其 它存儲位置上存儲代碼以及通過通信々某體提供代碼供下載的步驟可理 解為提供具有本文所述的這種內容的製造產品。圖4是具有隨可能的不同資源使用情況而動態創建虛擬機(VM)的 VM生成器的系統的一個實施例的框圖。系統400表示根據本文所述 的任何實施例的系統,其中具有根據本文所述的任何實施例的VM生 成器。如圖所示,VM生成器420接收輸入410,輸入410表示由應用 程序生成的對VM克隆的任何類型的請求。因此,由應用程式在其代 碼運行的過程中生成輸入410,並將輸入提供給VM生成器,以便提 供所請求VM創建。在一個實施例中,輸入410包括VM標識符 (ID)412、網絡信息(info)414和提示/優選項(pref)416。其它項也可包含
在輸入410中。VM標識符412標識將要克隆的VM。標識的部分可包括VM的 配置,其中包括硬體和軟體狀態。網絡信息414指示網絡資源是否可 用,以及在網絡資源可用時可指示哪些資源是可用的或者表明獲得關 於哪些是可用的指示的位置。提示/優選項416是指應用程式對克隆 VM的請求中指示的提示或優選項。輸入410由VM生成器420接收,VM生成器420確定克隆VM 所需的資源,並識別將用於克隆VM的資源。在進行確定之後,VM 生成器420產生輸出,或者作出將用於實際上克隆已識別的VM的決 定。"輸出"可能只是為新VM產生物理資源到虛擬硬體配置的映射、 以及表示可在創建克隆之前或之後發生的報告或數據結構或列表的生 成的過程。VM派生輸出430表示由VM生成器420作出的輸出或決 定/確定。作為整體可為VM作出關於哪些資源可使用以及如何克隆 VM的確定,或者在一個實施例中分別為各資源作出該決定。因此, 在一個實施例中,對所有資源應用相同的使用情況(例如複製所有資 源)。或者,可對不同的資源應用不同的使用情況(例如,共享網絡接 口,寫入時拷貝存儲裝置,以及複製存儲器)。一種可能的輸出包括拷貝的資源442(在本文中又稱作複製的資 源)。如果原始VM"A"、即待克隆的VM包括資源F,則克隆的VM "B"包括F的複製,表示為F,。各VM則具有它自己的要使用和管 理的資源。資源的配置和狀態對於各VM可能不同。另一種可能的輸出包括共享的資源444。如果原始VM "A"在其 虛擬硬體映射中包括資源F,則克隆的VM "B"也在其虛擬硬體映射 中指向F。 F的"拷貝"可能只是對在VM B的虛擬硬體中映射的F 的引用。因此,兩個VM均訪問相同的資源,並且在對於兩個VM可 訪問的資源的配置、內容和狀態之間存在一致性。由VMA對資源F 的改變對VM B是可見的,並且VM B需要以改變的狀態來訪問F。另一種可能的輸出包括改變時拷貝446。如果原始VM "A"在其
虛擬硬體映射中包括資源F,則克隆的VM "B"最初指向F,並且VM A以及VMB均訪問相同的資源。如果由VMB或VMA進行配置改 變,則生成F,,其中的改變作為新(拷貝的)資源淨支寫入。因此,在F 和F,相同的情況下,F,是實際的F(共享的),並且在圖4中示為"指向" F;但是,對於改變,F和F,將不同,並且B將指向作為其資源的改變 F,。圖5是利用虛擬機(VM)生成器派生VM的進程的一個實施例的流 程圖。本文所述的流程圖提供各種操作的序列的一個實例。雖然以特 定序列或順序來表示,但是如果沒有另外說明,操作順序可修改。因 此,所述實現應當僅理解為一個實例,並且操作可通過不同順序來才丸 行,並且部分操作可並行執行。另外,在本發明的各種實施例中,可 省略一個或多個操作;因此,並非在每一個實現中都需要全部操作。 其它操作流程也是可能的。VM生成器從應用程式接收派生VM的請求,502。從應用邏輯中 產生該請求。VM生成器識別要克隆的VM , 504。可根據從產生該 請求的應用程式所接收的輸入參數來識別待克隆的VM。 VM生成器 識別要克隆的VM的狀態,506,這可包括讀取配置文件、或者只^_/人 待克隆的VM中拷貝易失性存儲器。VM生成器還識別VM克隆所需 的硬體資源,508。可根據讀取硬體系統配置或者其它相似文件或設定 存儲裝置來識別硬體資源。還由VM生成器來識別可用硬體資源, 510。可將系統中可用的資源編程到VMM中,並使其對VM生成器是 可用的,可查詢網絡或系統管理實體以獲得可用硬體資源的標識,或 者可釆用另一種技術。VM生成器確定是否為VM克隆過程指定了優選項參數,512。請 求克隆的應用程式指定優選項(如果有的話)。如果已經指示了優選 項,則VM生成器將優選項分解為關於在哪裡克隆VM的確定。VM 生成器還可確定VM克隆的各資源的使用情況方案,514。如上所述, 資源的使用情況可能對於待克隆的所有資源均相同,或者可對於每個
不同的資源應用不同的使用情況,或者一部分可共同來處理,而其它 的則分別處理。注意,並非所有可能類型的資源是每個克隆實現所需的。VM可能僅有權訪問特定任務所需的某些資源,並且VM克隆僅具有那些資源。所需資源可能是確定硬體資源的克隆的使用方案時的 重要考慮因素。VM生成器根據已識別的環境以及可能接收的任何優選項參數來 確定實例化VM克隆的位置,516。與需要哪些資源以及哪些資源可用 有關的信息、以及強調首先應當考慮什麼資源的可能的優選項在由 VM生成器確定決定時一起考慮。這種確定決定可稱作確定算法。注 意,算法的類型的數量以及每一個的形式是一個實現問題,並且可能 性也許是無限的。通過對資源以及實例化VM的位置的確定決定,VM生成器在所 確定的位置中採用已識別的環境來實例化克隆,518。在創建VM克隆 之後,VM生成器向請求應用程式返回表明克隆成功的句柄,520。在 克隆操作失敗的情況中,可向請求應用程式表明這種情況,並執行差 錯處理。除了本文所描述的內容之外,可對本發明的公開實施例和實現進 行各種修改,而沒有背離其範圍。因此,本文中的說明和實例應當認 為是說明性而不是限制性的。本發明的範圍應當僅參照以下權利要求 書來限定。
權利要求
1.一種用於生成虛擬機的方法,包括響應在程序運行時從所述程序接收的克隆請求而識別要克隆的虛擬機(VM)狀態;確定在哪些硬體資源上生成所述VM克隆;以及在所確定的硬體資源上生成所述VM克隆。
2. 如權利要求l所述的方法,其特徵在於,確定在哪些硬體資源 上生成所述VM克隆包括選擇所述硬體資源的每一個硬體資源的資源使用情況。
3. 如權利要求2所述的方法,其特徵在於,選擇所述資源使用情 況包括選擇複製使用情況,其中把要克隆的所述VM的等效資源的所有 配置拷貝到所述硬體資源中。
4. 如權利要求2所述的方法,其特徵在於,選擇所述資源使用情 況包括選擇共享的使用情況,其中將對要克隆的所述VM的等效資源的 引用拷貝為所述硬體資源。
5. 如權利要求2所述的方法,其特徵在於,選擇所述資源使用情 況包括選擇改變時拷貝的使用情況,其中將對要克隆的所述VM的等效 資源的引用拷貝為硬體資源,以及在對所述硬體資源的配置進行改變 時,將所述改變複製到另一個硬體資源。
6. 如權利要求l所迷的方法,其特徵在於,確定在哪些硬體資源 上生成所述VM克隆還包括識別一個或多個處理器、存儲器和/或存儲資源。
7. 如權利要求l所述的方法,其特徵在於,確定在哪些硬體資源 上生成所述VM克隆還包括 識別 一個或多個輸入/輸出(1/0)和/或網絡訪問資源。
8. 如權利要求l所述的方法,其特徵在於,確定在哪些硬體資源上生成所述VM克隆還包括 識別資源;以及確定所述資源的容量、對所述資源的等待時間或者所述資源的可 靠性其中的一個或多個。
9. 一種包括其上存儲了內容的機器可讀存儲i某體的製造產品,所 述內容提供使裝置執行包括以下步驟的操作的指令從虛擬機(VM)上運行的應用程式4妄收克隆請求、即克隆所述VM的請求;確定所述VM的操作狀態;識別在其上生成所述克隆的可用資源;以及在所識別的資源上生成具有所確定的操作狀態的克隆。
10. 如權利要求9所述的製造產品,其特徵在於,提供用於接收 所述克隆請求的指令的內容包括提供用於進行以下步驟的指令的內 容接收對生成所述克隆的函數的函數調用。
11. 如權利要求9所述的製造產品,其特徵在於,提供用於接收 所述克隆請求的指令的內容還包括提供用於進行以下步驟的指令的內 容接收關於所述請求克隆的提示。
12. 如權利要求ll所述的製造產品,其特徵在於,提供用於接收 所述提示的指令的內容包括提供用於進行以下步驟的指令的內容接收所述請求克隆的預計使用壽命的指示。
13. 如權利要求9所述的製造產品,其特徵在於,提供用於接收 所述克隆請求的指令的內容還包括提供用於進行以下步驟的指令的內 容接收與生成所述克隆相關的優選項。
14. 如權利要求13所述的製造產品,其特徵在於,提供用於接收所述優選項的指令的內容包括提供用於進行以下步驟的指令的內容接收將識別所述可用資源限制到全部駐留在單個硬體裝置上的資 源的指示。
15. —種虛擬機(VM)生成器,包括克隆引擎,用於識別具有要克隆的VM的VM狀態和虛擬硬體映 射的VM,並確定哪些硬體資源可用於在其上克隆所識別的VM,包 括克隆所述VM狀態和所述虛擬硬體映射;與所述克隆引擎耦合的布置引擎,用於確定在哪些可用硬體資源 上克隆所識別的VM;以及VM實例化模塊,用於在由所述布置引擎確定的所述硬體資源上 實例化具有所述VM狀態的克隆。
16. 如權利要求15所述的VM生成器,其特徵在於,確定哪些硬 件資源可用於在其上克隆所識別的VM的所述克隆引擎包括進行以下 步驟的克隆引擎識別所述可用硬體資源;以及確定所述可用硬體資源的每一個的負荷。
17. 如權利要求16所述的VM生成器,其特徵在於,確定在哪些 可用硬體資源上克隆所識別的VM的所述布置引擎包括進行以下步驟 的布置引擎選擇具有最小負荷的硬體資源作為預設在其上克隆所識別的VM 的硬體資源。
18. —種虛擬機(VM)管理器,包括 管理VM資源的VM控制器;以及與所述VM控制器耦合的VM生成器,所述VM生成器具有克 隆引擎,用於識別具有要克隆的VM的VM狀態和虛擬硬體映射的 VM,並確定哪些硬體資源可用於在其上克隆所識別的VM,包括克隆 所述VM狀態和所述虛擬硬體映射;與所述克隆引擎耦合的布置引 擎,用於確定在哪些可用硬體資源上克隆所識別的VM;以及VM實 例化才莫塊,用於在由所述布置引擎確定的所述硬體資源上實例化具有 所述VM狀態的克隆。
19. 如權利要求18所述的VM管理器,其特徵在於,所述VM生 成器的所述克隆引擎選擇每一個單獨資源的資源使用情況,以及其中 所述VM生成器的所述布置引擎至少部分根據每一個單獨資源的資源 使用情況來確定在其上克隆所識別的VM的可用硬體資源。
20. 如權利要求18所述的VM,其特徵在於,所述實例化模塊經 由所述VM控制器來實例化所述克隆。
全文摘要
方法和裝置實現通過應用或服務邏輯發起的虛擬機(VM)克隆的創建。應用程式從應用程式的運行時的運行中請求生成VM克隆。由VM生成器服務於該請求,VM生成器識別要克隆的VM的狀態,並且識別在其上創建VM克隆的硬體資源。根據在哪些資源上生成VM克隆的確定,VM生成器在所確定的資源上創建VM克隆,其中具有已識別的狀態。在一個實施例中,為各資源選擇資源拷貝或引用拷貝的使用情況。在一個實施例中,VM生成器在確定實例化VM克隆的位置時考慮多個因素。參數可包括由應用程式發送的提示或優選項參數和/或資源負荷或性能。
文檔編號G06F9/455GK101211272SQ200710307228
公開日2008年7月2日 申請日期2007年12月29日 優先權日2006年12月29日
發明者M·鮑曼, P·布雷特, R·C·克瑙爾哈澤, R·亞當斯 申請人:英特爾公司