專利名稱:一種創(chuàng)建虛擬機(jī)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及虛擬化技術(shù)領(lǐng)域,具體涉及一種創(chuàng)建虛擬機(jī)的方法和裝置。
背景技術(shù):
當(dāng)前,計(jì)算機(jī)越來越普及,應(yīng)用面也越來越廣。隨著節(jié)能減排和低碳經(jīng)濟(jì)的提出, 虛擬化技術(shù)越來越多的應(yīng)用到計(jì)算機(jī)領(lǐng)域中,減少投入的同時,大大提高了資源利用率。當(dāng) 前,應(yīng)用最廣泛的,技術(shù)最成熟的應(yīng)該是操作系統(tǒng)的虛擬化。我們使用虛擬化軟件產(chǎn)品進(jìn)行 創(chuàng)建子操作系統(tǒng)來模擬“真實(shí)”操作系統(tǒng)。在創(chuàng)建客戶操作系統(tǒng)時,現(xiàn)有的虛擬化產(chǎn)品一次 只能創(chuàng)建一個。當(dāng)客戶需要在較大資源池中創(chuàng)建多個虛擬機(jī)時,如圖1所示,需要逐個創(chuàng)建,或者 利用克隆,模板逐個復(fù)制。如果需要創(chuàng)建相當(dāng)多的虛擬機(jī)時,需要花費(fèi)大量時間和資源。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種創(chuàng)建虛擬機(jī)的方法和裝置,能夠讓客戶提交 一次請求就能創(chuàng)建多個虛擬機(jī)。為了解決上述問題,本發(fā)明提供了一種創(chuàng)建虛擬機(jī)的方法,包括接收客戶請求,所述客戶請求指示按照所選模板創(chuàng)建多個虛擬機(jī);所述模板為創(chuàng) 建虛擬機(jī)的父本;根據(jù)所述客戶請求建立多個創(chuàng)建線程;各所述創(chuàng)建線程分別用于按照所選模板生 成一虛擬機(jī);執(zhí)行所建立的各創(chuàng)建線程生成虛擬機(jī)。進(jìn)一步地,所述執(zhí)行所建立的各創(chuàng)建線程生成虛擬機(jī)的步驟后還包括遍歷資源池內(nèi)所有主機(jī),每次遍歷時找出資源利用率最低的主機(jī),將生成的虛擬 機(jī)中的一個部署到該主機(jī),接著再次遍歷所述資源池內(nèi)所有主機(jī),直至所有生成的虛擬機(jī) 部署完畢。進(jìn)一步地,所述根據(jù)所述客戶請求建立多個創(chuàng)建線程的步驟包括A、載入所述客戶請求所指示的所選模板;B、計(jì)算N除以M所得到的商的向下取整值P及余數(shù)0 ;N為所述客戶請求所指示的 要創(chuàng)建虛擬機(jī)的個數(shù),M為最大線程數(shù);C、判斷P是否為0,如果為0則進(jìn)行步驟D ;否則先建立M個所述創(chuàng)建線程,這些創(chuàng) 建線程執(zhí)行完后再建立M個所述創(chuàng)建線程,共建立P次,都執(zhí)行完后進(jìn)行步驟D ;D、判斷0是否為0,如果不為0則建立0個所述創(chuàng)建線程。進(jìn)一步地,所述步驟A包括Al、載入所述客戶請求所指示的所選模板,有多個模板時以模板隊(duì)列形式保存在
第一存儲器中;A2、從所述第一存儲器中取出一個模板放入第二存儲器、當(dāng)?shù)谝淮鎯ζ髦袥]有模CN 101937360 A
說明書
2/5頁
板時指示虛擬機(jī)創(chuàng)建完畢;所述步驟D還包括如果0為0則返回步驟A2 ;建立0個所述創(chuàng)建線程后返回步 驟A2 ;各所述創(chuàng)建線程是按照所述第二存儲器中保存的模板生成虛擬機(jī)。進(jìn)一步地,所選的模板為一種或多種系統(tǒng)類型。本發(fā)明還提供了一種創(chuàng)建虛擬機(jī)的裝置,包括用于保存各作為創(chuàng)建虛擬機(jī)的父本的模板的第一存儲模塊;用于接收指示按照所選模板創(chuàng)建多個虛擬機(jī)的客戶請求,根據(jù)所述客戶請求建立 多個各用于按照所選模板生成一虛擬機(jī)的創(chuàng)建線程,并執(zhí)行所建立的各創(chuàng)建線程的控制模 塊。進(jìn)一步地,所述控制模塊包括用于接收所述客戶請求的接口單元;用于從所述第一存儲模塊中載入所述客戶請求所指示的所選模板的加載單元;用于根據(jù)所述客戶 請求所指示的要創(chuàng)建虛擬機(jī)的個數(shù),建立相應(yīng)個數(shù)的所述創(chuàng)建 線程的生成單元;用于執(zhí)行所述生成單元生成的各創(chuàng)建線程,按照所述加載單元載入的模板所生成 虛擬機(jī)的執(zhí)行單元。進(jìn)一步地,所述生成單元包括用于存放所述客戶請求所指示的要創(chuàng)建虛擬機(jī)的個數(shù)N的第一寄存器;用于存放最大線程數(shù)M的第二寄存器;第三、第四寄存器;用于計(jì)算N除以M所得到的商的向下取整值及余數(shù)0,將所述向下取整值保存在所 述第三寄存器中,將0保存在所述第四寄存器中,然后發(fā)送觸發(fā)信號的運(yùn)算器;用于當(dāng)收到所述觸發(fā)信號后檢查所述第三、第四寄存器中的數(shù)值,如果第三寄存 器中數(shù)值不為0則建立M個所述創(chuàng)建線程,并將第三寄存器中的數(shù)值減1、如果所述第三寄 存器中的數(shù)值為0而第四寄存器中數(shù)值不為0則建立0個所述創(chuàng)建線程,并將第四寄存器 中的數(shù)值置為0、如果第三、第四寄存器的數(shù)值均為0則指示建立完成的第一處理器。進(jìn)一步地,所述加載單元包括第一、第二存儲器;所述第二存儲器與所述執(zhí)行單元相連;用于從所述第一存儲模塊中載入所述客戶請求所指示的所選模板,有多個模板時 以模板隊(duì)列形式保存在所述第一存儲器中,保存后指示載入完畢的選擇器;用于當(dāng)收到所述選擇器載入完畢的指示或所述第一處理器建立完成的指示時,從 所述第一存儲器中取出一個模板放入第二存儲器、當(dāng)?shù)谝淮鎯ζ髦袥]有模板時指示虛擬機(jī) 創(chuàng)建完畢的第二處理器。進(jìn)一步地,所述控制模塊還包括用于遍歷資源池內(nèi)所有主機(jī),每次遍歷時找出資源利用率最低的主機(jī),將生成的 虛擬機(jī)中的一個部署到該主機(jī),接著再次遍歷所述資源池內(nèi)所有主機(jī),直至部署完畢所有 生成的虛擬機(jī),然后發(fā)送所述觸發(fā)信號給所述第一處理器的部署單元。本發(fā)明的技術(shù)方案能夠使客戶在需要創(chuàng)建多個虛擬機(jī)時,只提交一次請求即可;
5本發(fā)明的一個優(yōu)化方案還可以根據(jù)客戶的一次請求,分別針對多個模板創(chuàng)建虛擬機(jī);本發(fā) 明的又一個優(yōu)化方案可以兼顧系統(tǒng)性能。
圖1為當(dāng)前普遍采用的創(chuàng)建多個虛擬機(jī)的方法的示意圖;圖2為實(shí)施例二中創(chuàng)建虛擬機(jī)的示意圖。
具體實(shí)施例方式下面將結(jié)合附圖及實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。需要說明的是,如果不沖突,本發(fā)明實(shí)施例以及實(shí)施例中的各個特征可以相互結(jié) 合,均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī) 可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況 下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。實(shí)施例一,一種創(chuàng)建虛擬機(jī)的方法,包括接收客戶請求,所述客戶請求指示按照所選模板創(chuàng)建多個虛擬機(jī);所述模板為創(chuàng) 建虛擬機(jī)的父本;根據(jù)所述客戶請求建立多個創(chuàng)建線程;各所述創(chuàng)建線程分別用于按照所選模板生 成一虛擬機(jī);執(zhí)行所建立的各創(chuàng)建線程生成虛擬機(jī);本實(shí)施例中,所述執(zhí)行所建立的各創(chuàng)建線程生成虛擬機(jī)的步驟后還可以包括遍歷資源池內(nèi)所有主機(jī),每次遍歷時找出資源利用率最低的主機(jī),將生成的虛擬 機(jī)中的一個部署到該主機(jī),接著再次遍歷所述資源池內(nèi)所有主機(jī),直至所有生成的虛擬機(jī) 部署完畢。也就是根據(jù)資源池內(nèi)各主機(jī)的配置及負(fù)載情況,把生成的虛擬機(jī)部署到各主機(jī) 上,使整個資源池內(nèi)的資源利用率相對均衡,具體過程包括遍歷所有資源池內(nèi)主機(jī)的配置及資源利用情況,找出其中資源利用率最低的主機(jī) A;第一個生成的虛擬機(jī),部署到主機(jī)A ;重新遍歷所有資源池內(nèi)主機(jī)的配置及資源利用情況,找出其中資源利用率最低的 主機(jī)B ;第二個生成的虛擬機(jī),部署到所述主機(jī)B ;以此類推,直至所有創(chuàng)建的虛擬機(jī)部署完畢。本實(shí)施例中,在部署前可以先保存生成的各虛擬機(jī);可以但不限于以虛擬機(jī)組的 形式保存;在部署時,也可以從未被部署的虛擬機(jī)中任選一個,而不一定按照特定順序。本實(shí)施例中,客戶發(fā)送一次客戶請求,其中指定所選的模板,以及按照該所選模板 創(chuàng)建虛擬機(jī)的個數(shù),就可以一次性得到多個虛擬機(jī),而不再需要每生成一個虛擬機(jī)都發(fā)送
一次客戶請求。本實(shí)施例中,所述根據(jù)所述客戶請求建立多個創(chuàng)建線程的步驟具體可以包括A、載入所述客戶請求所指示的所選模板;
B、計(jì)算N除以M所得到的商的向下取整值P及余數(shù)0 ;C、判斷P是否為0,如果為0則進(jìn)行步驟D ;否則先建立M個所述創(chuàng)建線程,這些創(chuàng) 建線程執(zhí)行完后再建立M個所述創(chuàng)建線程,共建立P次,都執(zhí)行完后進(jìn)行步驟D ;D、判斷0是否為0,如果不為0則建立0個所述創(chuàng)建線程。本實(shí)施例中,所述步驟A具體可以包括Al、載入所述客戶請求所指示的所選模板,有多個模板時以模板隊(duì)列形式保存在
第一存儲器中;A2、從所述第一存儲器中取出一個模板放入第二存儲器、當(dāng)?shù)谝淮鎯ζ髦袥]有模 板時指示虛擬機(jī)創(chuàng)建完畢;所述步驟D還包括如果0為0則返回步驟A2 ;建立0個所述創(chuàng)建線程后返回步 驟A2 ;各所述創(chuàng)建線程是按照所述第二存儲器中保存的模板生成虛擬機(jī)。本實(shí)施例中,所選的模板可以是一個或多個,并且可以為一種或多種系統(tǒng)類型;相 應(yīng)的,所保存的生成的虛擬機(jī)的系統(tǒng)類型也可為一種或多種類型。實(shí)施例二,一種創(chuàng)建虛擬機(jī)的裝置,包括用于保存各作為創(chuàng)建虛擬機(jī)的父本的模板的第一存儲模塊;用于接收指示按照所選模板創(chuàng)建多個虛擬機(jī)的客戶請求,根據(jù)所述客戶請求建立 多個各用于按照所選模板生成一虛擬機(jī)的創(chuàng)建線程,并執(zhí)行所建立的各創(chuàng)建線程的控制模 塊。本實(shí)施例中,客戶發(fā)送一次客戶請求,其中指定所選的模板,以及按照該所選模板 創(chuàng)建虛擬機(jī)的個數(shù),就可以一次性得到多個虛擬機(jī),而不再需要每生成一個虛擬機(jī)都發(fā)送
一次客戶請求。本實(shí)施例中,所述控制模塊具體可以包括用于接收所述客戶請求的接口單元;用于從所述第一存儲模塊中載入所述客戶請求所指示的所選模板的加載單元;用于根據(jù)所述客戶請求所指示的要創(chuàng)建虛擬機(jī)的個數(shù),建立相應(yīng)個數(shù)的所述創(chuàng)建 線程的生成單元;用于執(zhí)行所述生成單元生成的各創(chuàng)建線程,按照所述加載單元載入的模板生成虛 擬機(jī)的執(zhí)行單元。本實(shí)施例中,所述生成單元具體可以包括用于存放所述客戶請求所指示的要創(chuàng)建虛擬機(jī)的個數(shù)N的第一寄存器;用于存放最大線程數(shù)M的第二寄存器;第三、第四寄存器;用于計(jì)算N除以M所得到的商的向下取整值及余數(shù)0,將所述向下取整值保存在所 述第三寄存器中,將0保存在所述第四寄存器中,然后發(fā)送觸發(fā)信號的運(yùn)算器;用于當(dāng)收到所述觸發(fā)信號后檢查所述第三、第四寄存器中的數(shù)值,如果第三寄存 器中數(shù)值不為0則建立M個所述創(chuàng)建線程,并將第三寄存器中的數(shù)值減1、如果所述第三寄 存器中的數(shù)值為0而第四寄存器中數(shù)值不為0則建立0個所述創(chuàng)建線程,并將第四寄存器 中的數(shù)值置為0、如果第三、第四寄存器的數(shù)值均為0則指示建立完成的第一處理器。
比如當(dāng)N等于M時,第三寄存器中數(shù)值是0,而第四寄存器中數(shù)值是M(N);當(dāng)N小 于M時,第三寄存器中數(shù)值是0,而第四寄存器中數(shù)值是N ;當(dāng)N大于M時,比如分別為100 和30時,則第三寄存器中數(shù)值為3,第四寄存器中數(shù)值為10。本實(shí)施例中,所述加載單元具體可以包括第一、第二存儲器;所述第二存儲器與所述執(zhí)行單元相連;用于從所述第一存儲模塊中載入所述客戶請求所指示的所選模板,有多個模板時 以模板隊(duì)列形式保存在所述第一存儲器中,保存后指示載入完畢的選擇器;用于當(dāng)收到所述選擇器載入完畢的指示或所述第一處理器建立完成的指示時,從 所述第一存儲器中取出一個模板放入第二存儲器、當(dāng)?shù)谝淮鎯ζ髦袥]有模板時指示虛擬機(jī) 創(chuàng)建完畢的第二處理器。所述第一處理器生成的創(chuàng)建線程所參照的模板是所述第二存儲器中保存的模板, 所述執(zhí)行單元在執(zhí)行創(chuàng)建線程時是按照所述第二存儲器中保存的模板生成虛擬機(jī)。比如,所述客戶請求中選擇的模板為A和B,對于A模板欲創(chuàng)建X個虛擬機(jī),對于B 模板欲創(chuàng)建虛擬機(jī)Y個;則所述生成單元先按A模板生成X個虛擬機(jī),再按B模板生成Y個 虛擬機(jī),如圖2所示。當(dāng)然,也可以先按B模板生成Y個虛擬機(jī),再按A模板生成X個虛擬機(jī),或是同時 進(jìn)行。所選擇的模板不止兩個時的實(shí)現(xiàn)方案可以類推。本實(shí)施例中,所述控制模塊還可以包括用于遍歷資源池內(nèi)所有主機(jī),每次遍歷時找出資源利用率最低的主機(jī),將生成的 虛擬機(jī)中的一個部署到該主機(jī),接著再次遍歷所述資源池內(nèi)所有主機(jī),直至部署完畢所有 生成的虛擬機(jī),然后發(fā)送所述觸發(fā)信號給所述第一處理器的部署單元。本實(shí)施例中,所述裝置還可以包括一用于保存生成的、還未部署的虛擬機(jī)的第二 存儲模塊,可以但不限于以虛擬機(jī)組的形式保存。本實(shí)施例中,所選的模板可以是一個或多個,并且可以為一種或多種系統(tǒng)類型;相 應(yīng)的,所述第二存儲模塊中保存的虛擬機(jī)的系統(tǒng)類型也可為一種或多種類型。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,所述程序可以存儲于計(jì)算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤 等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個或多個集成電路來實(shí)現(xiàn)。相應(yīng) 地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的 形式實(shí)現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟 悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變 形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
一種創(chuàng)建虛擬機(jī)的方法,包括接收客戶請求,所述客戶請求指示按照所選模板創(chuàng)建多個虛擬機(jī);所述模板為創(chuàng)建虛擬機(jī)的父本;根據(jù)所述客戶請求建立多個創(chuàng)建線程;各所述創(chuàng)建線程分別用于按照所選模板生成一虛擬機(jī);執(zhí)行所建立的各創(chuàng)建線程生成虛擬機(jī)。
2.如權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行所建立的各創(chuàng)建線程生成虛擬機(jī) 的步驟后還包括遍歷資源池內(nèi)所有主機(jī),每次遍歷時找出資源利用率最低的主機(jī),將生成的虛擬機(jī)中 的一個部署到該主機(jī),接著再次遍歷所述資源池內(nèi)所有主機(jī),直至所有生成的虛擬機(jī)部署 完畢。
3.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述客戶請求建立多個創(chuàng)建線程 的步驟包括A、載入所述客戶請求所指示的所選模板;B、計(jì)算N除以M所得到的商的向下取整值P及余數(shù)0;N為所述客戶請求所指示的要創(chuàng) 建虛擬機(jī)的個數(shù),M為最大線程數(shù);C、判斷P是否為0,如果為0則進(jìn)行步驟D;否則先建立M個所述創(chuàng)建線程,這些創(chuàng)建線 程執(zhí)行完后再建立M個所述創(chuàng)建線程,共建立P次,都執(zhí)行完后進(jìn)行步驟D ;D、判斷0是否為0,如果不為0則建立0個所述創(chuàng)建線程。
4.如權(quán)利要求3所述的方法,其特征在于,所述步驟A包括Al、載入所述客戶請求所指示的所選模板,有多個模板時以模板隊(duì)列形式保存在第一 存儲器中;A2、從所述第一存儲器中取出一個模板放入第二存儲器、當(dāng)?shù)谝淮鎯ζ髦袥]有模板時 指示虛擬機(jī)創(chuàng)建完畢;所述步驟D還包括如果0為0則返回步驟A2 ;建立0個所述創(chuàng)建線程后返回步驟A2 ;各所述創(chuàng)建線程是按照所述第二存儲器中保存的模板生成虛擬機(jī)。
5.如權(quán)利要求1到4中任一項(xiàng)所述的方法,其特征在于,所選的模板為一種或多種系統(tǒng) 類型。
6.一種創(chuàng)建虛擬機(jī)的裝置,其特征在于,包括用于保存各作為創(chuàng)建虛擬機(jī)的父本的模板的第一存儲模塊;用于接收指示按照所選模板創(chuàng)建多個虛擬機(jī)的客戶請求,根據(jù)所述客戶請求建立多個 各用于按照所選模板生成一虛擬機(jī)的創(chuàng)建線程,并執(zhí)行所建立的各創(chuàng)建線程的控制模塊。
7.如權(quán)利要求6所述的裝置,其特征在于,所述控制模塊包括用于接收所述客戶請求的接口單元;用于從所述第一存儲模塊中載入所述客戶請求所指示的所選模板的加載單元;用于根據(jù)所述客戶請求所指示的要創(chuàng)建虛擬機(jī)的個數(shù),建立相應(yīng)個數(shù)的所述創(chuàng)建線程 的生成單元;用于執(zhí)行所述生成單元生成的各創(chuàng)建線程,按照所述加載單元載入的模板所生成虛擬 機(jī)的執(zhí)行單元。
8.如權(quán)利要求7所述的裝置,其特征在于,所述生成單元包括用于存放所述客戶請求所指示的要創(chuàng)建虛擬機(jī)的個數(shù)N的第一寄存器;用于存放最大線程數(shù)M的第二寄存器;第三、第四寄存器;用于計(jì)算N除以M所得到的商的向下取整值及余數(shù)0,將所述向下取整值保存在所述第 三寄存器中,將0保存在所述第四寄存器中,然后發(fā)送觸發(fā)信號的運(yùn)算器;用于當(dāng)收到所述觸發(fā)信號后檢查所述第三、第四寄存器中的數(shù)值,如果第三寄存器中 數(shù)值不為0則建立M個所述創(chuàng)建線程,并將第三寄存器中的數(shù)值減1、如果所述第三寄存器 中的數(shù)值為0而第四寄存器中數(shù)值不為0則建立0個所述創(chuàng)建線程,并將第四寄存器中的 數(shù)值置為0、如果第三、第四寄存器的數(shù)值均為0則指示建立完成的第一處理器。
9.如權(quán)利要求8所述的裝置,其特征在于,所述加載單元包括第一、第二存儲器;所述第二存儲器與所述執(zhí)行單元相連;用于從所述第一存儲模塊中載入所述客戶請求所指示的所選模板,有多個模板時以模 板隊(duì)列形式保存在所述第一存儲器中,保存后指示載入完畢的選擇器;用于當(dāng)收到所述選擇器載入完畢的指示或所述第一處理器建立完成的指示時,從所述 第一存儲器中取出一個模板放入第二存儲器、當(dāng)?shù)谝淮鎯ζ髦袥]有模板時指示虛擬機(jī)創(chuàng)建 完畢的第二處理器。
10.如權(quán)利要求8或9所述的裝置,其特征在于,所述控制模塊還包括用于遍歷資源池內(nèi)所有主機(jī),每次遍歷時找出資源利用率最低的主機(jī),將生成的虛擬 機(jī)中的一個部署到該主機(jī),接著再次遍歷所述資源池內(nèi)所有主機(jī),直至部署完畢所有生成 的虛擬機(jī),然后發(fā)送所述觸發(fā)信號給所述第一處理器的部署單元。全文摘要
本發(fā)明公開了一種創(chuàng)建虛擬機(jī)的方法和裝置;方法包括接收客戶請求,所述客戶請求指示按照所選模板創(chuàng)建多個虛擬機(jī);所述模板為創(chuàng)建虛擬機(jī)的父本;根據(jù)所述客戶請求建立多個創(chuàng)建線程;各所述創(chuàng)建線程分別用于按照所選模板生成一虛擬機(jī);執(zhí)行所建立的各創(chuàng)建線程生成虛擬機(jī)。本發(fā)明能夠讓客戶提交一次請求就能創(chuàng)建多個虛擬機(jī)。
文檔編號G06F9/455GK101937360SQ201010270440
公開日2011年1月5日 申請日期2010年9月1日 優(yōu)先權(quán)日2010年9月1日
發(fā)明者劉成平, 王理想 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司