一種虛擬機資源管控方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種虛擬機資源管控方法,應(yīng)用于采用不同虛擬化技術(shù)的多個虛擬機共存的平臺,包括:通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值,解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值,根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型,采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中,實現(xiàn)了降低資源管控操作復(fù)雜度,及時有效對虛擬機進行資源管控的目的。另外,本發(fā)明還公開了一種虛擬機資源管控裝置。
【專利說明】一種虛擬機資源管控方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬機領(lǐng)域,特別涉及一種虛擬機資源管控方法及裝置。
【背景技術(shù)】
[0002]目前,流行的虛擬化技術(shù)有Xen虛擬化技術(shù)、KVM虛擬化技術(shù)、以及LXC虛擬化技術(shù)等。由于不同的虛擬化技術(shù)具有不同的特點,因此,很多時候需要采用不同虛擬化技術(shù)的多個虛擬機共存于同一平臺。而為了使共存于同一平臺的多個虛擬機能夠充分利用宿主機的資源,就需要對虛擬機占用宿主機資源的進行管控。
[0003]目前,通常由管理員通過虛擬機監(jiān)控程序?qū)μ摂M機占用宿主機的資源進行控制。但是,虛擬機監(jiān)控程序?qū)Σ煌摂M化技術(shù)實現(xiàn)的虛擬機所支持的資源控制方式是不同的。因此,在不同虛擬化技術(shù)的多個虛擬機共存于同一平臺時,即使針對一種管控需求,也需要管理員分別使用不同的資源控制方式分別對不同類型的虛擬機進行資源管控,導(dǎo)致資源管控操作復(fù)雜、失誤時有發(fā)生。因此,現(xiàn)有技術(shù)無法使管理員對虛擬機資源進行及時有效的管控。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明實施例的主要目的在于提供一種虛擬機資源管控方法及裝置以降低資源管控操作的復(fù)雜度,從而可以對虛擬機資源進行及時有效的管控的目的。
[0005]為了解決以上技術(shù)問題,本發(fā)明實施例采取的技術(shù)方案是:
[0006]第一方面,本發(fā)明實施例提供了一種虛擬機資源管控方法,應(yīng)用于采用不同虛擬化技術(shù)的多個虛擬機共存的平臺,所述方法包括:
[0007]通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值;
[0008]解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值;
[0009]根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型;
[0010]采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0011]第二方面,本發(fā)明實施例提供了一種虛擬機資源管控裝置,應(yīng)用于采用不同虛擬化技術(shù)的多個虛擬機共存的平臺,所述裝置包括:
[0012]接收單元,用于通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值;
[0013]解析單元,用于解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值;
[0014]類型檢測單元,用于根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型;
[0015]配置更細單元,用于采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0016]可見本發(fā)明具有如下有益效果:
[0017]由于本發(fā)明實施例在接收資源管控請求時,通過統(tǒng)一的接口接收對不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,因此,發(fā)出資源管控請求的一方無需關(guān)心哪種虛擬化技術(shù)的虛擬機所支持的資源控制方式是什么,只需調(diào)用參數(shù)要求相同的統(tǒng)一接口發(fā)出與資源管控需要對應(yīng)的資源管控請求即可,簡化了資源管控操作的復(fù)雜度,并且,由于不同虛擬化技術(shù)的虛擬機能夠支持的資源控制方式不同,因此,本發(fā)明實施例在解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值,根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型之后,采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中,從而實現(xiàn)了降低資源管控操作的復(fù)雜度,對虛擬機資源進行及時有效的管控的目的。
【專利附圖】
【附圖說明】
[0018]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0019]圖1是本發(fā)明實施例提供的一種虛擬機資源管控方法的流程示意圖之一;
[0020]圖2是本發(fā)明實施例提供的一種虛擬機資源管控方法的流程示意圖之二 ;
[0021]圖3是本發(fā)明實施例提供的一種虛擬機資源管控方法的流程示意圖之三;
[0022]圖4是本發(fā)明實施例提供的一種虛擬機資源管控裝置的結(jié)構(gòu)示意圖之一;
[0023]圖5是本發(fā)明實施例提供的一種虛擬機資源管控裝置的結(jié)構(gòu)示意圖之二。
【具體實施方式】
[0024]為使本發(fā)明實施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本發(fā)明實施例作進一步詳細的說明。
[0025]本發(fā)明實施例可用于眾多通用或?qū)S玫挠嬎阆到y(tǒng)環(huán)境或配置中。例如:個人計算機、服務(wù)器計算機、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。
[0026]本發(fā)明實施例可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊可以包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
[0027]本發(fā)明實施例可以應(yīng)用于不同虛擬化技術(shù)的多個虛擬機共存的平臺,用于對平臺中的虛擬機進行資源管控。其中,平臺中的虛擬機的具體虛擬化技術(shù)的類型不限,例如,可以是Xen虛擬機,KVM虛擬機,或者LXC虛擬機等等。[0028]例如,參見圖1,示出了本發(fā)明實施例提供的一種虛擬機資源管控方法流程示意圖之一。如圖所示,該實施例可以包括:
[0029]S110、通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值;
[0030]其中,一種統(tǒng)一的接口可以用于接收不同虛擬化技術(shù)的多個虛擬機的一種資源管控請求,根據(jù)實施需要,可以根據(jù)不同的管控請求設(shè)置不同的統(tǒng)一的接口,當然,在某些可能的情形下,也可以為不同的管控請求設(shè)置統(tǒng)一的接口,在本發(fā)明中并不進行限制。
[0031]其中,本實施例所述的資源管控請求可以是與不同的資源管控需要分別對應(yīng)的各種資源管控請求。例如:資源管控請求可以是CPU資源管控請求,Memory (內(nèi)存)資源管控請求,DISK I/O (磁盤輸入輸出)資源管控請求,Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求等等,在本發(fā)明中并不進行限制。
[0032]更具體地,例如,對于CPU資源管控請求來說,通過統(tǒng)一接口接收的CPU資源管控請求可以是“set_cpu_set () ”(設(shè)置與CPU綁定的虛擬機的請求)、“set_cpu_share () ”(設(shè)置與CPU綁定的各虛擬機所占權(quán)重的請求)等。
[0033]需要說明的是,所述目標虛擬機信息可以是目標虛擬機名稱等任何用于標識目標虛擬機的虛擬機信息。所述資源配置參數(shù)可以是與該資源管控請求相關(guān)資源被管控后應(yīng)達到的資源范圍,例如,CPU資源管控請求攜帶的資源配置參數(shù)可以是“vm_name”(虛擬機名稱參數(shù))、“cpu_num”(CPU數(shù)量參數(shù))、“CpuShare”(權(quán)重參數(shù))、“is_live”(設(shè)置是否實時生效參數(shù))。
[0034]S120、解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值;
[0035]在本發(fā)明實施例中,所述解析資源管控請求的具體實現(xiàn)例如可以為,根據(jù)資源管控請求的格式模板對資源管控請求進行解析。當然,也可以依據(jù)現(xiàn)有技術(shù)已有的其他實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0036]S130、根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型;
[0037]例如,可以利用目標虛擬機名稱、或者其他任何用于標識目標虛擬機的信息進行虛擬機類型檢測確定目標虛擬機的虛擬化技術(shù)類型。
[0038]具體地,例如,在創(chuàng)建虛擬機時,虛擬機的名稱或者其他用于標識虛擬機的信息可以與其具體采用的虛擬計劃技術(shù)類型對應(yīng)的添加在虛擬機的管理文件中,進而,在收到資源管控請求后,可以利用目標虛擬機名稱、或者其他任何用于標識目標虛擬機的信息到相關(guān)的管理文件中進行匹配以確定虛擬化技術(shù)類型。再例如,如果目標虛擬機名稱中包含虛擬化技術(shù)類型的信息,則可以直接根據(jù)目標虛擬機名稱確定虛擬化技術(shù)類型。或者,還可以有其他根據(jù)目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型的具體實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0039]S140、采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0040]需要說明的是,目標虛擬機可以是一個虛擬機,也可以是多個相同虛擬化技術(shù)類型或者不同虛擬化技術(shù)類型的虛擬機。可以先按照虛擬化技術(shù)類型對目標虛擬機進行分類,再分別對每個虛擬化技術(shù)類型的目標虛擬機,采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0041]其中,所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中,具體可以通過執(zhí)行一段自動生成的資源管控命令實現(xiàn),例如:該資源管控命令具體可以利用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與資源管控請求對應(yīng)的命令生成器生成,其中,命令生成器具體用于將資源配置參數(shù)值作為待生成的命令的輸入?yún)?shù),生成能夠在所針對的虛擬化技術(shù)類型的虛擬機中運行的、對資源管控請求實際要管控的資源進行資源管控的命令。例如,預(yù)先設(shè)置命令生成器的具體實現(xiàn)可以為:針對每個虛擬化技術(shù)類型,設(shè)置與資源管控請求對應(yīng)的命令格式模板,并提供將資源配置參數(shù)添加到命令格式模板相應(yīng)位置的功能模塊。當然,還可以有其他實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0042]另外,在采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中之后,還可以根據(jù)資源配置更新的情況返回需要的管控結(jié)果,例如,可以是管控命令自動返回的是否配置成功等結(jié)果,如果不同管控命令返回的結(jié)果的格式不同,也可以在統(tǒng)一為標準格式后返回。
[0043]可見,應(yīng)用本發(fā)明實施例,由于本發(fā)明實施例在接收資源管控請求時,通過統(tǒng)一的接口接收對不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,因此,對于發(fā)出資源管控請求的一方來說,對多個虛擬機中任一目標虛擬機的資源管控請求的調(diào)用接口相同,無需關(guān)心各個虛擬化技術(shù)類型的區(qū)別,可以以相同的命令發(fā)出對多個虛擬機中任一目標虛擬機的資源管控請求,并且,本發(fā)明實施例采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中,因此,本發(fā)明實施例相當于對異構(gòu)的操作進行了同構(gòu)的處理,上層調(diào)用與各個虛擬化技術(shù)類型各自的管控方式無關(guān),降低了資源管控請求的復(fù)雜度。
[0044]在圖1所示實施例的基礎(chǔ)上,針對虛擬機動態(tài)修改資源配置的需要,本發(fā)明實施例可以在虛擬機運行過程中對虛擬機占用宿主機資源進行管控。具體地,參見圖2,本發(fā)明實施例提供的一種虛擬機資源管控方法流程示意圖之二。如圖所示,該實施例可以包括:
[0045]S210、通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值;
[0046]S220、解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值;
[0047]S230、根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型;
[0048]S240、在所述目標虛擬機運行過程中,采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0049]在圖1或圖2所示實施例的基礎(chǔ)上,下面結(jié)合幾種具體的資源管控請求、虛擬化技術(shù)類型,對本發(fā)明實施例的具體實現(xiàn)進行詳細介紹。例如,在本發(fā)明實施例中所述不同虛擬化技術(shù)類型的多個虛擬機可以至少包括Xen虛擬機、KVM虛擬機以及LXC虛擬機中的任意兩種類型的虛擬機;所述資源管控請求可以包括以下任一種或多種=CPU資源管控請求、Memory (內(nèi)存)資源管控請求、DISK I/O (磁盤輸入輸出)資源管控請求、或者Network I/
0(網(wǎng)絡(luò)輸入輸出)資源管控請求。優(yōu)選地,本發(fā)明實施例所述不同虛擬化技術(shù)類型的多個虛擬機可以包括Xen虛擬機、KVM虛擬機以及LXC虛擬機三種,資源管控請求可以包括CPU資源管控請求、Memory (內(nèi)存)資源管控請求、DISK I/O (磁盤輸入輸出)資源管控請求、或者Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求這四種,從而可以針對常見的幾種主流虛擬化技術(shù)類型的虛擬機的資源進行全面有效的管控。
[0050]在本發(fā)明實施例中XeruKVM以及LXC三種虛擬機設(shè)置的資源控制方式可以有以下幾種,例如:
[0051]Xen虛擬機的CPU、內(nèi)存資源、KVM虛擬機的內(nèi)存資源可以使用現(xiàn)有的虛擬機監(jiān)控程序提供的API (應(yīng)用)進行控制;
[0052]Xen虛擬機的Disk I/O (磁盤輸入輸出)資源可以使用dm_ioband工具進行控制,當然,根據(jù)實施需要,也可以對dm-1oband工具進行適當修改;
[0053]LXC 虛擬機的 CPU、內(nèi)存、Disk 1/0,Network 1/0 資源、KVM 虛擬機的 CPU、Disk I/
O、Network 1/0資源可以使用宿主機上運行的Linux內(nèi)核提供的Cgroup的子系統(tǒng)進行控制;
[0054]Xen虛擬機、KVM虛擬機、LXC虛擬機的Network 1/0資源可以使用宿主機上運行的Linux內(nèi)核提供的TC (Traffic control,流量控制)命令進行控制。
[0055]下面,對本發(fā)明實施例優(yōu)選的資源控制方式進行詳細介紹。例如:
[0056](一)對于所述資源管控請求為CPU資源管控請求的情況:
[0057]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與CPU資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為應(yīng)用domain,set VCPUCount ()(設(shè)置虛擬機使用的虛擬cpu數(shù)量的應(yīng)用)的輸入?yún)?shù),調(diào)用所述應(yīng)用domain, set VCPUCount (),其中,所述應(yīng)用 domain, set VCPUCount ()為所述目標虛擬機的宿主機上運行的xend提供的應(yīng)用;
[0058]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的CPU資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為子系統(tǒng)Cpuset和子系統(tǒng)cpushare的輸入?yún)?shù),調(diào)用所述子系統(tǒng)cpuset和子系統(tǒng)cpushare,其中,所述子系統(tǒng)cpuset和cpushare為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的子系統(tǒng);
[0059]需要說明的是,由于需要使用Cgroup對目標虛擬機進行資源控制,因此,可以在啟動目標虛擬機進程時就將目標虛擬機加入到Cgroup中,從而可以使用Cgroup進行資源控制。例如,使用Cgroup的子系統(tǒng)cpuset和cpushare進行資源控制,可以對CPU可用資源和使用優(yōu)先級進行定義等。
[0060]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為LXC虛擬機設(shè)置的CPU資源管控請求對應(yīng)的資源控制方式可以為:將所述資源配置參數(shù)值作為子系統(tǒng)cpuset和子系統(tǒng)cpushare的輸入?yún)?shù),調(diào)用所述子系統(tǒng)cpuset和子系統(tǒng)cpushare。
[0061]具體地,例如,可以利用預(yù)先分別為Xen虛擬機、KVM虛擬機、LXC虛擬機設(shè)置的與CPU資源管控請求對應(yīng)的命令生成器,生成命令例如:
[0062]“ ‘xm vcpu-set參數(shù)I參數(shù)2” (xm為xen的操作命令,命令語義為:設(shè)置虛擬機編號為由參數(shù)I確定的虛擬機綁定由參數(shù)2確定的cpu);
[0063]“virsh setvcpus參數(shù)3參數(shù)4” (virsh為Iibvirt的執(zhí)行命令,命令語義為:設(shè)置虛擬機編號為由參數(shù)3確定的虛擬機綁定由參數(shù)4確定的cpu);
[0064]“ lxc-cgroup-n name cpuset.cpusO-2”( lxc-cgroup 是對 Ixc 配置文件進行設(shè)定的命令,-n name為虛擬機容器的名稱參數(shù),cpuset.cpus為Ixc虛擬機容器的設(shè)置值名稱,0-2為設(shè)置可使用0-2的vcpu)。
[0065]通過執(zhí)行所生成的命令,實現(xiàn)采用上述資源控制方式將資源配置參數(shù)值更新到目標虛擬機的資源配置中。
[0066](二)對于所述資源管控請求為Memory (內(nèi)存)資源管控請求的情況:
[0067]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與Memory(內(nèi)存)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為應(yīng)用dom ain.set Memory Target ()的輸入?yún)?shù),調(diào)用所述應(yīng)用dom ain.set Memory Target(),其中,所述應(yīng)用domain, set Memory Target ()為目標虛擬機的宿主機上運行的xend提供的應(yīng)用;
[0068]需要說明的是,對內(nèi)存的資源配置是有限制的,一般在創(chuàng)建虛擬機時,通常配置為最大可用內(nèi)存,在虛擬機運行過程中進行內(nèi)存資源更新時,應(yīng)大于目標虛擬機的最小內(nèi)存量,否則,將會引起系統(tǒng)的異?;蝈礄C。
[0069]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的與Memory (內(nèi)存)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為通過console端口修改虛擬機占用內(nèi)存資源的KVM命令的輸入?yún)?shù),調(diào)用所述通過console端口修改虛擬機占用內(nèi)存資源的KVM命令;
[0070]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為KVM虛擬機設(shè)置的與Memory (內(nèi)存)資源管控請求對應(yīng)的資源控制方式可以為:將所述資源配置參數(shù)值寫入目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的memory.limit_in_bytes文件中;
[0071]具體地,例如,可以利用預(yù)先分別為Xen虛擬機、KVM虛擬機、LXC虛擬機設(shè)置的與Memory (內(nèi)存)資源管控請求對應(yīng)的命令生成器,生成命令例如:
[0072]“xm mem-set guest參數(shù)5”(xm為xen的命令,mem-set為設(shè)置的分類為設(shè)置內(nèi)存guest為虛擬機,參數(shù)5為設(shè)置的內(nèi)存大小);
[0073]“balloon參數(shù)5”(此處執(zhí)行的命令需要在kvm的monitor中執(zhí)行,balloon為設(shè)置內(nèi)存大小的命令,命令語義為設(shè)置kvm虛擬機的內(nèi)存大小為參數(shù)5);
[0074]“l(fā)xc-cgroup-n name memory.limit_in_bytes 參數(shù) 6,,( lxc-cgroup 是對 Ixc 配置文件進行設(shè)定的命令,-n name為虛擬機容器的名稱參數(shù),memory.limit_in_bytes為Ixc虛擬機容器的設(shè)置值名稱,參數(shù)6為設(shè)置的最大使用內(nèi)存值)。
[0075]通過執(zhí)行所生成的命令實現(xiàn)采用上述資源控制方式將資源配置參數(shù)值更新到目標虛擬機的資源配置中。
[0076](三)對于所述資源管控請求為DISK1/0資源管控請求的情況:
[0077]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與DISK 1/0資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為dm-1oband工具中修改虛擬機占用DISK I/O資源的命令的輸入?yún)?shù),調(diào)用所述dm-1oband工具中修改虛擬機占用DISK I/O資源的命令;
[0078]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的與DISK I/O資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值寫入子系統(tǒng)blkio的文件中,其中,所述子系統(tǒng)blkio為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的子系統(tǒng);
[0079]例如,所述DISK I/O資源管控請求攜帶的資源配置參數(shù)值可以是目標虛擬機的IO權(quán)重設(shè)置或目標虛擬機各個磁盤的讀寫上限等。
[0080]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為LXC虛擬機設(shè)置的與DISK I/O資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值寫入子系統(tǒng)blkio的文件中。
[0081]具體地,例如,可以利用預(yù)先分別為Xen虛擬機、KVM虛擬機、LXC虛擬機設(shè)置的與DISK 1/0資源管控請求對應(yīng)的命令生成器,生成命令例如:
[0082]“echo"0$ (blockdev--getsize/dev/sdal) ioband/dev/sdal IOOnoneweightO: 80〃 I dmsetup create iobandl”(此處是對ioband的配置文件進行更改,并使其生效,設(shè)定為其磁盤讀寫的權(quán)重值);
[0083]“l(fā)xc-cgroup-n name blki0.throttle.read_iops_device 參數(shù) 7,,(lxc-cgroup是對Ixc配置文件進行設(shè)定的命令,-n name為虛擬機容器的名稱參數(shù),blki0.throttle.read_iops_device為Ixc虛擬機容器的設(shè)置值名稱,參數(shù)7為設(shè)置的blki0.throttle.read_iops_device 的值);
[0084]“l(fā)xc-cgroup-n n`ame blki0.throttle.read_iops_device 參數(shù) 7”(語義同上)。
[0085]通過執(zhí)行所生成的命令實現(xiàn)采用上述資源控制方式將資源配置參數(shù)值更新到目標虛擬機的資源配置中。
[0086](四)對于所述資源管控請求為Network1/0 (網(wǎng)絡(luò)輸入輸出)資源管控請求的情況:
[0087]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與Network 1/0 (網(wǎng)絡(luò)輸入輸出)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為TC (Traffic control,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令,其中,所述TC命令為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的命令;
[0088]需要說明的是,在使用TC命令對Xen虛擬機進行網(wǎng)絡(luò)流量的控制時,可以使用ipfilter的方式對IP進行流量控制,由于每個虛擬機具有唯一的IP,因此,可以對目標虛擬機進行單獨的網(wǎng)絡(luò)流量控制。
[0089]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的與Network 1/0 (網(wǎng)絡(luò)輸入輸出)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為TC (Traffic control,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令;
[0090]需要說明的是,在使用TC命令對KVM虛擬機或LXC虛擬機進行網(wǎng)絡(luò)流量的控制時,可以使用Cgroup系統(tǒng)和TC命令協(xié)作實現(xiàn),具體地,在創(chuàng)建KVM虛擬機或LXC虛擬機時,可以使用Cgroup對KVM虛擬機或LXC虛擬機的網(wǎng)絡(luò)設(shè)置一個classjd,進而在虛擬機運行過程中,可以使用TC命令對Class_id進行網(wǎng)絡(luò)流量的控制,例如可以設(shè)置最大的可用帶寬。
[0091]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為LXC虛擬機設(shè)置的與Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求對應(yīng)的資源控制方式可以為:將所述資源配置參數(shù)值作為TC (Traffic control,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令。
[0092]具體地,例如,可以利用預(yù)先分別為Xen虛擬機、KVM虛擬機、LXC虛擬機設(shè)置的與Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求對應(yīng)的命令生成器,生成命令例如:
[0093]“tc class add dev ethOparentl: lclassidl:1Ohtb rate 參數(shù) 8,,(tc 是對網(wǎng)絡(luò)流量進行控制的命令,class是指對ip或虛擬機流量進行的分組,此處表明是對分組產(chǎn)生作用,此命令的語義是將ethO網(wǎng)卡添加到父class是1:1,子classl:10中,并設(shè)定速率為參數(shù)8)。
[0094]通過執(zhí)行所生成的命令實現(xiàn)采用上述資源控制方式將資源配置參數(shù)值更新到目標虛擬機的資源配置中。
[0095]在本發(fā)明實施例一種可能的實現(xiàn)方式中,可以根據(jù)各個虛擬機在宿主機上的運行狀態(tài)對虛擬機可使用的資源進行動態(tài)的調(diào)整,具體地,例如,參見圖3所示的虛擬機資源管控方法的流程示意圖之三,如圖所示,該實施例可以包括:
[0096]S300、預(yù)先為所述目標虛擬機設(shè)置至少兩種運行狀態(tài)分別對應(yīng)的資源管控請求以及資源配置參數(shù)值,所述資源配置參數(shù)值與對應(yīng)的運行狀態(tài)下的目標虛擬機的資源管控需要相適應(yīng);
[0097]S301、當所述目標虛擬機開始以第一運行狀態(tài)運行時,將所述第一運行狀態(tài)對應(yīng)的資源配置參數(shù)值、以及所述目標虛擬機的信息攜帶在該第一運行狀態(tài)對應(yīng)的資源管控請求中,生成所述資源管控請求;
[0098]例如,在生成所述資源管控請求之后,可以調(diào)用所述的統(tǒng)一的接口,發(fā)出資源管控請求,進行資源配置的更新。
[0099]S310、通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值;
[0100]S320、解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值;
[0101]S330、根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型;
[0102]S340、采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0103]在本發(fā)明實施例中,考慮到不同類型的多個虛擬機共存的平臺中,不同的虛擬機所承擔的計算任務(wù)不同,因此,可以為承擔不同任務(wù)的虛擬機,根據(jù)任務(wù)執(zhí)行時段的需要,動態(tài)對其占用的資源進行調(diào)整,提高虛擬機運行效率以及資源利用率。例如,一些承擔訪問計算的虛擬機主要用于接收用戶的訪問并承擔與訪問有關(guān)的計算,其在白天的計算量較大,晚上的計算量較小、一些承擔統(tǒng)計計算的虛擬機主要用于進行訪問量的相關(guān)統(tǒng)計管理的計算,可以在晚上進行相關(guān)計算。因此,可以為虛擬機設(shè)置白天運行狀態(tài)和晚上運行狀態(tài),其中,承擔訪問計算的虛擬機的白天運行狀態(tài)可以對應(yīng)設(shè)置要求占用資源范圍較大的資源管控請求,晚上運行狀態(tài)可以對應(yīng)設(shè)置要求占用資源范圍較小的資源管控請求,而承擔統(tǒng)計計算的虛擬機按照相反的原則設(shè)置資源管控請求,從而可以在白天將大部分資源讓給承擔訪問的虛擬機,提高虛擬機運行效率以及資源利用率。
[0104]與上述本發(fā)明實施例提供的方法相對應(yīng)的,本發(fā)明實施例還提供了一種虛擬機資源管控裝置,可以應(yīng)用于采用不同虛擬化技術(shù)的多個虛擬機共存的平臺。參見圖4,示出了一種虛擬機資源管控裝置的結(jié)構(gòu)示意圖之一,如圖所示,該裝置可以包括:
[0105]接收單元410,可以用于通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值;
[0106]其中,所述統(tǒng)一的接口可以用于接收一種資源管控請求,也可以用于接收多種資源管控請求,在本發(fā)明中并不進行限制。
[0107]其中,所述資源管控請求可以是與不同的資源管控需要分別對應(yīng)的各種資源管控請求。例如:資源管控請求可以是CPU資源管控請求,Memory (內(nèi)存)資源管控請求,DISKI/O (磁盤輸入輸出)資源管控請求,Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求等等,在本發(fā)明中并不進行限制。
[0108]解析單元420,可以用于解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值;
[0109]在本發(fā)明實施例中,所述解析資源管控請求的具體實現(xiàn)例如可以為,根據(jù)資源管控請求的格式模板對資源管控請求進行解析。當然,也可以依據(jù)現(xiàn)有技術(shù)已有的其他實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0110]類型檢測單元430,可以用于根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型;
[0111]例如,可以利用目標虛擬機名稱、或者其他任何用于標識目標虛擬機的信息進行虛擬機類型檢測確定目標虛擬機的虛擬化技術(shù)類型。
[0112]具體地,例如,在創(chuàng)建虛擬機時,虛擬機的名稱或者其他用于標識虛擬機的信息可以與其具體采用的虛擬計劃技術(shù)類型對應(yīng)的添加在虛擬機的管理文件中,進而,在收到資源管控請求后,可以利用目標虛擬機名稱、或者其他任何用于標識目標虛擬機的信息到相關(guān)的管理文件中進行匹配以確定虛擬化技術(shù)類型。再例如,如果目標虛擬機名稱中包含虛擬化技術(shù)類型的信息,則可以直接根據(jù)目標虛擬機名稱確定虛擬化技術(shù)類型?;蛘撸€可以有其他根據(jù)目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型的具體實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0113]配置更新單元440,可以用于采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0114]需要說明的是,目標虛擬機可以是一個虛擬機,也可以是多個相同虛擬化技術(shù)類型或者不同虛擬化技術(shù)類型的虛擬機??梢韵劝凑仗摂M化技術(shù)類型對目標虛擬機進行分類,再分別對每個虛擬化技術(shù)類型的目標虛擬機,采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0115]其中,所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中,具體可以通過執(zhí)行一段自動生成的資源管控命令實現(xiàn),例如:該資源管控命令具體可以利用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與資源管控請求對應(yīng)的命令生成器生成,其中,命令生成器具體用于將資源配置參數(shù)值作為待生成的命令的輸入?yún)?shù),生成能夠在所針對的虛擬化技術(shù)類型的虛擬機中運行的、對資源管控請求實際要管控的資源進行資源管控的命令。例如,預(yù)先設(shè)置命令生成器的具體實現(xiàn)可以為:針對每個虛擬化技術(shù)類型,設(shè)置與資源管控請求對應(yīng)的命令格式模板,并提供將資源配置參數(shù)添加到命令格式模板相應(yīng)位置的功能模塊。當然,還可以有其他實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0116]可見,應(yīng)用本發(fā)明實施例,由于接收單元410在接收資源管控請求時,通過統(tǒng)一的接口接收對不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,因此,對于發(fā)出資源管控請求的一方來說,對多個虛擬機中任一目標虛擬機的資源管控請求的調(diào)用接口相同,無需關(guān)心各個虛擬化技術(shù)類型的區(qū)別,可以以相同的命令發(fā)出對多個虛擬機中任一目標虛擬機的資源管控請求,并且,配置更新單元440采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中,因此,本發(fā)明實施例相當于對異構(gòu)的操作進行了同構(gòu)的處理,上層調(diào)用與各個虛擬化技術(shù)類型各自的管控方式無關(guān),降低了資源管控請求的復(fù)雜度。
[0117]下面結(jié)合幾種具體的資源管控請求、虛擬化技術(shù)類型,對本發(fā)明實施例的具體實現(xiàn)進行詳細介紹。例如,在本發(fā)明實施例中所述不同虛擬化技術(shù)類型的多個虛擬機可以至少包括Xen虛擬機、KVM虛擬機以及LXC虛擬機中的任意兩種類型的虛擬機;所述資源管控請求可以包括以下任一種或多種=CPU資源管控請求、Memory (內(nèi)存)資源管控請求、DISKI/O (磁盤輸入輸出)資源管控請求、或者Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求。優(yōu)選地,本發(fā)明實施例所述不同虛擬化技術(shù)類型的多個虛擬機可以包括Xen虛擬機、KVM虛擬機以及LXC虛擬機三種,資源管控請求可以包括CPU資源管控請求、Memory (內(nèi)存)資源管控請求、DISK I/O (磁盤輸入輸出)資源管控請求、或者Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求這四種,從而可以針對常見的幾種主流虛擬化技術(shù)類型的虛擬機的資源進行全面有效的管控。
[0118]下面,對本發(fā)明實施例優(yōu)選的資源控制方式進行詳細介紹。例如:
[0119]對于所述資源管控請求為CPU資源管控請求的情況:
[0120]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與CPU資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為應(yīng)用domain,set VCPUCount ()的輸入?yún)?shù),調(diào)用所述應(yīng)用domain, set VCPUCount (),其中,所述應(yīng)用domain, set VCPUCount ()為所述目標虛擬機的宿主機上運行的xend提供的應(yīng)用;
[0121]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的CPU資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為子系統(tǒng)cpuset和子系統(tǒng)cpushare的輸入?yún)?shù),調(diào)用所述子系統(tǒng)cpuset和子系統(tǒng)cpushare,其中,所述子系統(tǒng)cpuset和cpushare為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的子系統(tǒng);
[0122]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為LXC虛擬機設(shè)置的CPU資源管控請求對應(yīng)的資源控制方式可以為:將所述資源配置參數(shù)值作為子系統(tǒng)cpuset和子系統(tǒng)cpushare的輸入?yún)?shù),調(diào)用所述子系統(tǒng)cpuset和子系統(tǒng)cpushare。
[0123]對于所述資源管控請求為Memory (內(nèi)存)資源管控請求的情況:
[0124]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與Memory (內(nèi)存)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為應(yīng)用 domain, set Memory Target ()的輸入?yún)?shù),調(diào)用所述應(yīng)用 domain, set Memory Target(),其中,所述應(yīng)用domain, set Memory Target ()為目標虛擬機的宿主機上運行的xend提供的應(yīng)用;
[0125]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的與Memory (內(nèi)存)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為通過console端口修改虛擬機占用內(nèi)存資源的KVM命令的輸入?yún)?shù),調(diào)用所述通過console端口修改虛擬機占用內(nèi)存資源的KVM命令;
[0126]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為KVM虛擬機設(shè)置的與Memory (內(nèi)存)資源管控請求對應(yīng)的資源控制方式可以為:將所述資源配置參數(shù)值寫入目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的memory.limit_in_bytes文件中;
[0127]對于所述資源管控請求為DISK 1/0資源管控請求的情況:
[0128]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與DISK 1/0資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為dm-1oband工具中修改虛擬機占用DISK 1/0資源的命令的輸入?yún)?shù),調(diào)用所述dm-1oband工具中修改虛擬機占用DISK 1/0資源的命令;
[0129]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的與DISK 1/0資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值寫入子系統(tǒng)blkio的文件中,其中,所述子系統(tǒng)blkio為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的子系統(tǒng);
[0130]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為LXC虛擬機設(shè)置的與DISK 1/0資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值寫入子系統(tǒng)blkio的文件中。
[0131]對于所述資源管控請求為Network 1/0 (網(wǎng)絡(luò)輸入輸出)資源管控請求的情況:
[0132]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則為Xen虛擬機設(shè)置的與Network 1/0 (網(wǎng)絡(luò)輸入輸出)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為TC (Traffic control,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令,其中,所述TC命令為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的命令;
[0133]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則為KVM虛擬機設(shè)置的與Network 1/0 (網(wǎng)絡(luò)輸入輸出)資源管控請求對應(yīng)的資源控制方式可以為:將資源配置參數(shù)值作為TC (Traffic control,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令;
[0134]如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則為LXC虛擬機設(shè)置的與Network 1/0 (網(wǎng)絡(luò)輸入輸出)資源管控請求對應(yīng)的資源控制方式可以為:將所述資源配置參數(shù)值作為TC (Traffic control,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令。
[0135]在圖4所示實施例的基礎(chǔ)上,針對虛擬機動態(tài)修改資源配置的需要,本發(fā)明實施例可以在虛擬機運行過程中對虛擬機占用宿主機資源進行管控。具體地,例如,所述配置更新單元440,具體可以用于在所述目標虛擬機運行過程中將資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
[0136]在本發(fā)明實施例一種可能的實現(xiàn)方式中,可以根據(jù)各個虛擬機在宿主機上的運行狀態(tài)對虛擬機可使用的資源進行動態(tài)的調(diào)整,具體地,例如,參見圖5所示的虛擬機資源管控裝置的結(jié)構(gòu)示意圖之二,如圖所示,在如圖4所示的結(jié)構(gòu)的基礎(chǔ)上,該裝置還可以包括: [0137]預(yù)置單元400,可以用于預(yù)先為所述目標虛擬機設(shè)置至少兩種運行狀態(tài)分別對應(yīng)的資源管控請求以及資源配置參數(shù)值,所述資源配置參數(shù)值與對應(yīng)的運行狀態(tài)下的目標虛擬機的資源管控需要相適應(yīng);
[0138]請求生成單元401,可以用于在所述接收單元接收資源管控請求之前,當所述目標虛擬機開始以第一運行狀態(tài)運行時,將所述第一運行狀態(tài)對應(yīng)的資源配置參數(shù)值、以及所述目標虛擬機的信息攜帶在該第一運行狀態(tài)對應(yīng)的資源管控請求中,生成所述資源管控請求。
[0139]通過以上的實施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法中的全部或部分步驟可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者諸如媒體網(wǎng)關(guān)等網(wǎng)絡(luò)通信設(shè)備,等等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
[0140]需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0141]而且,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0142]以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。
【權(quán)利要求】
1.一種虛擬機資源管控方法,其特征在于,應(yīng)用于采用不同虛擬化技術(shù)的多個虛擬機共存的平臺; 所述方法包括: 通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任意目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值; 解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值; 根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型; 采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將資源配置參數(shù)值更新到所述目標虛擬機的資源配置中具體在所述目標虛擬機運行過程中更新。
3.根據(jù)權(quán)利要求1-2任意一項所述的方法,其特征在于,所述不同虛擬化技術(shù)類型的多個虛擬機至少包括Xen虛擬機、KVM虛擬機以及LXC虛擬機中的任意兩種類型的虛擬機; 所述資源管控請求包括以下任一種或多種:` CPU資源管控請求、Memory (內(nèi)存)資源管控請求、DISK I/O (磁盤輸入輸出)資源管控請求、或者Network I/O (網(wǎng)絡(luò)輸入輸出)資源管控請求。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述資源管控請求為CPU資源管控請求; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為應(yīng)用domain.setVCPUCount ()的輸入?yún)?shù),調(diào)用所述應(yīng)用domain.setVCPUCount (),其中,所述應(yīng)用domain.setVCPUCount ()為所述目標虛擬機的宿主機上運行的xend提供的應(yīng)用; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為子系統(tǒng)cpuset和子系統(tǒng)cpushare的輸入?yún)?shù),調(diào)用所述子系統(tǒng)cpuset和子系統(tǒng)cpushare,其中,所述子系統(tǒng)cpuset和cpushare為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的子系統(tǒng); 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為子系統(tǒng)cpuset和子系統(tǒng)cpushare的輸入?yún)?shù),調(diào)用所述子系統(tǒng)cpuset和子系統(tǒng)cpushare。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述資源管控請求為Memory(內(nèi)存)資源管控請求; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為應(yīng)用domain.setMemoryTarget ()的輸入?yún)?shù),調(diào)用所述應(yīng)用 domain.setMemoryTarget (),其中,所述應(yīng)用domain.setMemoryTarget ()為目標虛擬機的宿主機上運行的xend提供的應(yīng)用; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為通過console端口修改虛擬機占用內(nèi)存資源的KVM命令的輸入?yún)?shù),調(diào)用所述通過console端口修改虛擬機占用內(nèi)存資源的KVM命令; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值寫入目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的memory.limit_in_bytes文件中。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述資源管控請求為DISKI/0資源管控請求; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為dm-1oband工具中修改虛擬機占用DISK I/O資源的命令的輸入?yún)?shù),調(diào)用所述dm-1oband工具中修改虛擬機占用DISK I/O資源的命令; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值寫入子系統(tǒng)blkio的文件中,其中,所述子系統(tǒng)blkio為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的Cgroup的子系統(tǒng); 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值寫入子系統(tǒng)blkio的文件中。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述資源管控請求為NetworkI/O (網(wǎng)絡(luò)輸入輸出)資源管控請求; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為Xen虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為TCXTrafficcontrol,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令,其中,所述TC命令為目標虛擬機的宿主機上運行的Linux內(nèi)核提供的命令; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為KVM虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為TCXTrafficcontrol,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令; 如果所述目標虛擬機所屬的虛擬化技術(shù)類型為LXC虛擬機,則所述采用預(yù)先為目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中包括:將所述資源配置參數(shù)值作為TC (Traffic control,流量控制)命令的輸入?yún)?shù),調(diào)用所述TC命令。
8.根據(jù)權(quán)利要求1-2任一項所述的方法,其特征在于,還包括:預(yù)先為所述目標虛擬機設(shè)置至少兩種運行狀態(tài)分別對應(yīng)的資源管控請求以及資源配置參數(shù)值,所述資源配置參數(shù)值與對應(yīng)的運行狀態(tài)下的目標虛擬機的資源管控需要相適應(yīng); 且,在接收資源管控請求之前,還包括: 當所述目標虛擬機開始以第一運行狀態(tài)運行時,將所述第一運行狀態(tài)對應(yīng)的資源配置參數(shù)值、以及所述目標虛擬機的信息攜帶在該第一運行狀態(tài)對應(yīng)的資源管控請求中,生成所述資源管控請求。
9.一種虛擬機資源管控裝置,其特征在于,應(yīng)用于采用不同虛擬化技術(shù)的多個虛擬機共存的平臺; 所述裝置包括: 接收單元,用于通過統(tǒng)一的接口,接收對所述不同虛擬化技術(shù)的多個虛擬機中任一目標虛擬機的資源管控請求,其中,所述資源管控請求中攜帶目標虛擬機信息,以及資源配置參數(shù)值; 解析單元,用于解析資源管控請求得到目標虛擬機信息以及資源配置參數(shù)值; 類型檢測單元,用于根據(jù)所述目標虛擬機信息確定目標虛擬機的虛擬化技術(shù)類型; 配置更細單元,用于采用預(yù)先為所述目標虛擬機的虛擬化技術(shù)類型設(shè)置的與所述資源管控請求對應(yīng)的資源控制方式,將所述資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述配置更新單元,具體用于在所述目標虛擬機運行過程中將資源配置參數(shù)值更新到所述目標虛擬機的資源配置中。
11.根據(jù)權(quán)利要求9或10任一項所述的裝置,其特征在于,還包括: 預(yù)置單元,用于預(yù)先為所述目標虛擬機設(shè)置至少兩種運行狀態(tài)分別對應(yīng)的資源管控請求以及資源配置參數(shù)值,所述資源配置參數(shù)值與對應(yīng)的運行狀態(tài)下的目標虛擬機的資源管控需要相適應(yīng); 請求生成單元,用于在所述接收單元接收資源管控請求之前,當所述目標虛擬機開始以第一運行狀態(tài)運行時,將所述第一運行狀態(tài)對應(yīng)的資源配置參數(shù)值、以及所述目標虛擬機的信息攜帶在該第一運行狀態(tài)對應(yīng)的資源管控請求中,生成所述資源管控請求。
【文檔編號】G06F9/50GK103645957SQ201310729287
【公開日】2014年3月19日 申請日期:2013年12月25日 優(yōu)先權(quán)日:2013年12月25日
【發(fā)明者】劉宇航, 王帥, 周星 申請人:北京搜狐新媒體信息技術(shù)有限公司