本發(fā)明涉及云計算技術領域,尤其涉及一種在云平臺或者數(shù)據(jù)中心中基于用戶請求或者后臺管理員發(fā)出的創(chuàng)建虛擬機請求而執(zhí)行的虛擬機快速創(chuàng)建方法。
背景技術:
虛擬機(Virtual Machine,VM)指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)。在云平臺中創(chuàng)建一臺虛擬機,就是將CPU數(shù)量、內存容量、聯(lián)網(wǎng)方式以及其他虛擬硬件信息保存起來,需要開啟虛擬機時使用這些參數(shù)來啟動,并能夠實現(xiàn)在很短的時間內對這些信息進行存儲,而創(chuàng)建時真正的耗時的操作是創(chuàng)建一個有可用操作系統(tǒng)的虛擬磁盤。
在使用虛擬機之前,需要在物理服務器中創(chuàng)建并配置。具體過程包括:準備服務器、安裝操作系統(tǒng)、配置操作系統(tǒng)及部署應用幾個步驟。因為涉及的過程較為繁瑣,且創(chuàng)建虛擬機的過程中涉及到的數(shù)據(jù)文件較大,整個創(chuàng)建過程的時間較長。
目前的常見做法是通過模板技術實現(xiàn)快速創(chuàng)建。所謂模板是指包含了完整的操作系統(tǒng)(OS)以及用戶特定的應用的虛擬機鏡像。通過模板創(chuàng)建一個虛擬機分為如下的步驟:創(chuàng)建虛擬機磁盤;從模板庫或模板快照(cache)中復制模板到建好的虛擬機磁盤上;生成虛擬機的配置信息;啟動虛擬機。在此過程中,虛擬機磁盤在物理服務器上以文件或設備的方式存在。因此,創(chuàng)建虛擬機磁盤即是物理服務器上創(chuàng)建一個文件或一個設備。復制模板到虛擬機磁盤即是將模板的數(shù)據(jù)信息寫入虛擬機磁盤上。因為模板本身是一個虛擬機的完全復制,所以系統(tǒng)啟動需要的分區(qū)引導信息也包含在模板鏡像中,這就使得將模板數(shù)據(jù)信息完全寫到虛擬機磁盤后,虛擬機即可正常啟動。但是,此種方法中,在創(chuàng)建虛擬機時,因為需要讀取全部的模板數(shù)據(jù)信息并寫入對應的虛擬機磁盤中。因為模板數(shù)據(jù)信息通常較大,通常以千兆(G)計,而且同時進行讀操作和寫操作所涉及的數(shù)據(jù)量即為模板數(shù)據(jù)本身大小的兩倍,這無疑會花費較長的時間。此外,這種虛擬機創(chuàng)建方法還可能會影響該物理服務器中其他已經(jīng)創(chuàng)建的虛擬機的正常運行。
有鑒于此,有必要對現(xiàn)有技術中在云平臺中創(chuàng)建虛擬機的方法予以改進,以解決上述問題。
技術實現(xiàn)要素:
本發(fā)明的目的在于公開一種在云平臺中快速創(chuàng)建虛擬機的方法,用以克服現(xiàn)有技術中在創(chuàng)建虛擬機的過程中所存在的虛擬機啟動時間過長、創(chuàng)建效率不高等缺陷,降低后臺計算開銷。
為實現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種虛擬機快速創(chuàng)建方法,包括以下步驟:
S1、在能夠配置虛擬機的介質中構建基礎配置,以逐級配置出至少一個基礎虛擬機;
S2、獲取并保存基礎虛擬機被配置時的狀態(tài);
S3、遍歷虛擬機創(chuàng)建的請求,以基礎虛擬機為模板加載增量配置或者卸載配置,直至請求被執(zhí)行完畢,并響應用戶。
作為本發(fā)明的進一步改進,所述基礎配置是CPU配置、內存配置、帶寬配置、磁盤配置、實時時鐘配置或者外設配置中的一種或者兩種以上任意組合的配置。
作為本發(fā)明的進一步改進,所述基礎配置還包括操作系統(tǒng)。
作為本發(fā)明的進一步改進,所述步驟S1中配置形成兩個或者兩個以上基礎虛擬機,每個基礎虛擬機被配置的基礎配置呈增量關系。
作為本發(fā)明的進一步改進,所述步驟S2還包括:獲取配置形成的多個基礎虛擬機的操作系統(tǒng)狀態(tài)文件、操作系統(tǒng)日志或者磁盤文件系統(tǒng)。
作為本發(fā)明的進一步改進,所述步驟S2還包括:根據(jù)用戶發(fā)送的創(chuàng)建請求的歷史記錄建立索引表,并通過索引表匹配出滿足用戶發(fā)送的創(chuàng)建請求的一個虛擬機并響應用戶。
作為本發(fā)明的進一步改進,所述步驟S2中,在基礎虛擬機配置完畢之后,還包括保存基礎虛擬機的操作系統(tǒng)狀態(tài)文件并關閉基礎虛擬機的步驟。
作為本發(fā)明的進一步改進,所述步驟S3還包括:根據(jù)基礎虛擬機的操作系統(tǒng)狀態(tài)文件以及基礎虛擬機被配置時的狀態(tài),啟動虛擬機。
作為本發(fā)明的進一步改進,所述基礎虛擬機被配置時的狀態(tài)包括:CPU狀態(tài)、內存狀態(tài)、帶寬狀態(tài)、磁盤狀態(tài)、實時時鐘狀態(tài)或者外設狀態(tài)。
作為本發(fā)明的進一步改進,所述CPU配置包括單虛擬CPU或者對稱多處理結構虛擬CPU組。
作為本發(fā)明的進一步改進,所述方法還包括對向用戶響應的虛擬機設置上限配置的步驟,所述上限配置包括最大的CPU配置、內存配置、帶寬配置、監(jiān)視器配置、磁盤配置、實時時鐘配置或者外設配置。
作為本發(fā)明的進一步改進,所述步驟S1中的介質包括:物理機、計算機集群服務器、計算機節(jié)點或者分布式存儲系統(tǒng)。
作為本發(fā)明的進一步改進,在步驟S1中配置形成的多個基礎虛擬機,每個基礎虛擬機之間形成能夠支持用戶請求所創(chuàng)建的虛擬機的最低配置要求作為增量配置。
作為本發(fā)明的進一步改進,所述操作系統(tǒng)包括:Windows操作系統(tǒng)、Linux操作系統(tǒng)、Unix操作系統(tǒng)或者Be操作系統(tǒng)。
與現(xiàn)有技術相比,本發(fā)明的有益效果是:通過本發(fā)明,極大提高了創(chuàng)建虛擬機的速度,并降低了虛擬機的啟動時間,避免了對能夠配置虛擬機的介質(例如服務器)的計算開銷;同時也實現(xiàn)了盡可能使用較少的模板來啟動并創(chuàng)建虛擬機,進一步降低了計算開銷。
附圖說明
圖1為現(xiàn)有技術中在云平臺中創(chuàng)建虛擬機的步驟圖;
圖2為本發(fā)明一種虛擬機快速創(chuàng)建方法的流程示意圖;
圖3為實現(xiàn)本發(fā)明步驟S1的示意圖。
具體實施方式
下面結合附圖所示的各實施方式對本發(fā)明進行詳細說明,但應當說明的是,這些實施方式并非對本發(fā)明的限制,本領域普通技術人員根據(jù)這些實施方式所作的功能、方法、或者結構上的等效變換或替代,均屬于本發(fā)明的保護范圍之內。
請參圖1所示,圖1為現(xiàn)有技術中在云平臺中創(chuàng)建虛擬機的步驟圖。在創(chuàng)建一個虛擬機過程中依次需要經(jīng)過云平臺UI創(chuàng)建,后臺(或者提供交互式服務的后臺服務器)在接收到用戶創(chuàng)建虛擬機的請求后,交由控制臺處理。然后,通過虛擬化調度層及虛擬化統(tǒng)一層并使用虛擬化軟件逐個啟動各種應用,并返回active至虛擬化統(tǒng)一層。在上述執(zhí)行過程中所消耗的時間定義為T1。然后,后臺開始準備虛擬化環(huán)境,并進去啟動引導程序,啟動系統(tǒng),并最終啟動服務,至此虛擬機創(chuàng)建完畢。上述執(zhí)行過程中所消耗的時間定義為T2。則該虛擬機創(chuàng)建的總時間T=T1+T2。由此可見,現(xiàn)有計算中創(chuàng)建虛擬機的步驟繁瑣、時間較長且后臺的計算開銷過大。
請參圖2至圖3所示出的本發(fā)明一種虛擬機快速創(chuàng)建方法的一種具體實施方式。在本實施方式中,該方法具體包括以下步驟。
步驟S1、在能夠配置虛擬機的介質中構建基礎配置,以逐級配置出至少一個基礎虛擬機?;A配置是CPU配置、內存配置、帶寬配置、磁盤配置、實時時鐘配置或者外設配置中的一種或者兩種以上任意組合的配置或者操作系統(tǒng)。該操作系統(tǒng)可為Windows操作系統(tǒng)、Linux操作系統(tǒng)、Unix操作系統(tǒng)或者Be操作系統(tǒng)。在下文所示出的實例中,所選用的操作系統(tǒng)為Linux操作系統(tǒng),本領域技術人員可以合理預測到其他操作系統(tǒng)根據(jù)各自操作系統(tǒng)實際硬件的虛擬硬件環(huán)境(包括處理器,內存,I/O設備)而適應性選用。
所謂能夠配置虛擬機的介質包括但不限于PC、服務器、計算機集群服務器、計算節(jié)點、虛擬機、分布式存儲系統(tǒng)或者其他具有邏輯運算功能的電子裝置,在本實施方式中,該能夠配置虛擬機的介質選用服務器,并作示范性說明。
在傳統(tǒng)的創(chuàng)建虛擬機的現(xiàn)有計算中,后臺在接收到用戶發(fā)送的創(chuàng)建虛擬機的請求后,在由服務器通過虛擬化技術(例如Hyper-V)經(jīng)過虛擬化所形成的各種虛擬化資源,以形成資源池,并根據(jù)用戶發(fā)送的請求來臨時創(chuàng)建虛擬機以響應用戶的創(chuàng)建請求。
然而,在本實施方式中,可預先在能夠配置虛擬機的介質(例如服務器),既可以預先將所有資源(基于一定規(guī)格的服務器所形成支持各種應用的最大資源)預先封裝或者配置成具有單個功能的子資源。例如,將資源池中的CPU資源封裝為1顆、2顆、3顆至10顆,將內存資源封裝為1G、2G、3G至10G,其他支持虛擬機健康運行的各種資源,并以此類推,并逐級增量設置;或者將1顆CPU與1G內存封裝為一個基礎配置,將2顆CPU與2G內存為另一個配置增加的基礎配置,從而形成多個基礎配置。各個基礎配置之間可形成線性增加的邏輯關系,并在后期創(chuàng)建虛擬機的過程中進行整合或者組合,以靈活的根據(jù)用戶發(fā)送的虛擬機創(chuàng)建請求創(chuàng)建符合請求的虛擬機,防止后臺根據(jù)用戶發(fā)送的創(chuàng)建虛擬機的請求臨時從資源池中抽取CPU、內存等配置并創(chuàng)建虛擬機時對后臺造成擁塞或者無法響應請求的問題,降低系統(tǒng)上線后的計算開銷,從而降低了臨時創(chuàng)建虛擬機時對后臺造成額外的計算開銷;同時,也能降低云平臺中的負載均衡器的開銷。
當然,也可如圖3所的將配置虛擬機的介質預先封裝或者逐級配置出基礎虛擬機101、基礎虛擬機102(余略)……基礎虛擬機10n,以構成n個基礎虛擬機。n個基礎虛擬機之間的配置形成增量關系。例如,基礎虛擬機101的CPU配置為1顆,內存配置為1G(余略),基礎虛擬機102的CPU配置為2顆,內存配置為2G(余略)。其中,基礎虛擬機101的各項配置設定為用以響應用戶創(chuàng)建虛擬機的請求所對應的最低配置。
另,可選擇云平臺所有基礎虛擬機創(chuàng)建共有設備集(相當于上述基礎虛擬機),以基礎虛擬機101為最小化的基礎虛擬機并作為其他基礎虛擬機的創(chuàng)建模板或者配置模板。該共有設備集可理解成上文所述的經(jīng)過封裝后的包含CPU及內存的配置。這些共有設備集用于后期支持虛擬機的創(chuàng)建。
接下來我們以虛擬化軟件選用qemu為例,在創(chuàng)建共有設備集的具體過程作簡要闡述。
上述共有設備集包括:monitor(監(jiān)視器),串口,CPU,內存,實時時鐘(rtc)以及對稱多處理結構虛擬CPU組(SMP)等等,并可根據(jù)云平臺設置作適應性選擇。具體的,創(chuàng)建該共有設備集的主要代碼如下所示:
-cpu qemu64
-chardev socket,id=charmonitor,path=./qemu.monitor,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control
-rtc base=utc,driftfix=slew
-machine pc
-m 1G,slots=3,maxmem=4G
-smp 1,maxcpus=64,sockets=64,cores=1,threads=1
其中,smp反映了基礎虛擬機內的CPU顆數(shù),指定maxcpus意圖是在基礎虛擬機啟動后動態(tài)的根據(jù)客戶配置(2顆、4顆、8顆或者數(shù)量更多的CPU進行選擇)增加CPU顆數(shù),最大到64顆CPU。-m反映了運行該基礎虛擬機的系統(tǒng)內存,maxmem是運行該基礎虛擬機可配置的最大內存容量。然后根據(jù)選擇的已經(jīng)安裝好的系統(tǒng)盤啟動基礎虛擬機,并作為后續(xù)創(chuàng)建定制化虛擬機的創(chuàng)建模板。
在本實施方式中,為了避免用戶發(fā)送的創(chuàng)建虛擬機的請求突破該能夠配置虛擬機的介質所形成的共有設備集或者資源的上限,在執(zhí)行完步驟S1之后,還可執(zhí)行對向用戶響應的虛擬機配置上限配置的步驟。該上限配置包括最大的CPU配置、最大的內存配置、最大的帶寬配置、最佳的監(jiān)視器配置、最大的磁盤配置、最優(yōu)的實時時鐘配置以及最優(yōu)的外設配置等資源。當基礎虛擬機被配置完畢后,可以關閉基礎虛擬機也可不關閉基礎虛擬機。
然后,執(zhí)行步驟S2、獲取并保存基礎虛擬機被配置時的狀態(tài)。優(yōu)選的,在本實施方式中,該步驟S2還包括獲取配置形成多個基礎虛擬機的操作系統(tǒng)狀態(tài)文件、操作系統(tǒng)日志(OS log file)或者磁盤文件系統(tǒng)(disk file system)。所述基礎虛擬機被配置時的狀態(tài)包括:CPU狀態(tài)、內存狀態(tài)、帶寬狀態(tài)、磁盤狀態(tài)、實時時鐘狀態(tài)或者外設狀態(tài)。優(yōu)選的,該步驟S3還包括:根據(jù)基礎虛擬機的操作系統(tǒng)狀態(tài)文件以及基礎虛擬機被配置時的狀態(tài),啟動虛擬機。
需要說明的是,在本實施方式中,所謂“狀態(tài)”對于內存(或虛擬內存)而言是指內存快照,對于磁盤(或虛擬磁盤)而言是指磁盤快照。在創(chuàng)建快照操作時,以創(chuàng)建基礎虛擬機的內置系統(tǒng)還原點為例,其相應的執(zhí)行代碼為:(qemu)savevm xxc。
在步驟S2中,在基礎虛擬機配置完畢之后,還包括保存基礎虛擬機的操作系統(tǒng)狀態(tài)文件并關閉基礎虛擬機的步驟,以進一步降低后臺的計算開銷。
然后,執(zhí)行步驟S3、遍歷虛擬機創(chuàng)建的請求,以基礎虛擬機為模板加載增量配置或者卸載配置,直至請求被執(zhí)行完畢,并響應用戶。
由于在步驟S1中所預先配置或者預先創(chuàng)建的基礎虛擬機并非能完全滿用戶的請求,同時為了提高后期虛擬機創(chuàng)建與部署的效率,避免預先配置數(shù)量過多的基礎虛擬機,在本發(fā)明中,可將能夠配置虛擬機的介質中預先配出處最低配置的一個基礎虛擬機,一個中等配置的基礎虛擬機以及一個高等配置的基礎虛擬機,三者之間形成增量配置的關系。在后期的虛擬機創(chuàng)建過程中,對于一般用戶發(fā)送的性能不是很高的虛擬機創(chuàng)建請求時,可直接基于上述最低配置的虛擬機并以其為模板加載增量配置,從而從上文的步驟S1中所形成的共有設備集或者稱之為基礎配置中選取合適的配置(或者資源),從而進一步封裝成一臺能夠滿足用戶請求的虛擬機,以響應用戶。
具體的,啟動增量配置的命令為:-loadvm xxc。
假定用戶的配置僅僅在最低配置的模板虛擬機上增加了內存使用量,為2G,在qemu monitor內動態(tài)增加內存,其代碼如下所示:
(qemu)object_add memory-backend-ram,id=mem1,size=1G
(qemu)device_add pc-dimm,id=dimm1,memdev=mem1。
下文示出了最低配置的基礎虛擬機進行加載增量配置這一個過程前后的代碼。
a.加載增量配置前
[root@localhost~]#cat/proc/meminfo
b.加載增量配置后
[root@localhost~]#cat/proc/meminfo
至此,符合用戶請求的虛擬機創(chuàng)建完畢。
在本實施方式中,通過逐級配置出一個或者多個呈增量配置的基礎虛擬機,并通過加載增量配置的方式,以形成滿足用戶創(chuàng)建請求的虛擬機,極大的提高了虛擬機的創(chuàng)建效率。
另一方面,由于客戶的創(chuàng)建請求是個性化的,如果一味地增加基礎虛擬機的數(shù)量也會導致后臺計算開銷的增加。因此,如果當某個用戶所發(fā)送的創(chuàng)建虛擬機的請求所關聯(lián)的虛擬機的配置超過最低配置的基礎虛擬機時,后臺可從與該用戶請求相匹配的最接近的配置的基礎虛擬機中進行選取,并進行卸載配置的操作。
例如,對最接近的配置的基礎虛擬機減少內存配置的代碼如下所示。
(qemu)device_del dimm1//從基礎虛擬機中移除虛擬內存;
(qemu)object_del mem1//從虛擬化軟件中移移除內存配置對象;
具體的,可以GB、MB或者KB為單位逐級減少配置,從而匹配出與用戶請求最接近的虛擬機,并向用戶響應,從而有效的避免了資源池中內存資源的浪費。
例如,對最接近的配置的基礎虛擬機減少磁盤配置或者增加磁盤配置的代碼如下所示。
(qemu)drive_add 0if=none,file=/tmp/test.img,format=raw,id=disk1//添加一塊RAW格式磁盤test.img名字為disk1到虛擬化軟件。
(qemu)device_add virtio-blk-pci,drive=disk1,id=myvirtio1
//將添加到虛擬化軟件的名字為disk1的塊設備添加為到虛擬機設備,設備識別名為myvirtio1。
(qemu)device_del disk1
//將名為disk1的塊設備從虛擬機和虛擬化軟件中移除。
作為本實施方式的進一步優(yōu)化,在步驟S2還包括:根據(jù)用戶發(fā)送的創(chuàng)建請求的歷史記錄建立索引表,并通過索引表匹配出滿足用戶發(fā)送的創(chuàng)建請求的一個虛擬機并響應用戶。索引表可記錄用戶創(chuàng)建、啟動、運行及關閉虛擬機的使用習慣,并形成記錄文件。記錄文件可與步驟S1中所創(chuàng)建的基礎虛擬機進行關聯(lián),并在用戶再次發(fā)起請求操作時通過該索引表直接創(chuàng)建并啟動虛擬機,從而進一步提高了用戶創(chuàng)建虛擬機的效率。
上文所列出的一系列的詳細說明僅僅是針對本發(fā)明的可行性實施方式的具體說明,它們并非用以限制本發(fā)明的保護范圍,凡未脫離本發(fā)明技藝精神所作的等效實施方式或變更均應包含在本發(fā)明的保護范圍之內。
對于本領域技術人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有變化囊括在本發(fā)明內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。
此外,應當理解,雖然本說明書按照實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術方案,說明書的這種敘述方式僅僅是為清楚起見,本領域技術人員應當將說明書作為一個整體,各實施例中的技術方案也可以經(jīng)適當組合,形成本領域技術人員可以理解的其他實施方式。