亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在線升級基于內(nèi)核虛擬機模塊的設備和方法與流程

文檔序號:11949614閱讀:234來源:國知局
在線升級基于內(nèi)核虛擬機模塊的設備和方法與流程

本發(fā)明涉及計算機領域,尤其涉及在線升級基于內(nèi)核虛擬機模塊技術。



背景技術:

KVM虛擬機(Kernel-based Virtual Machine,基于內(nèi)核虛擬機)是一種用于Linux內(nèi)核中的虛擬化基礎設施,可以將Linux內(nèi)核轉(zhuǎn)化為一個hypervisor,所述“內(nèi)核”指的是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務等功能的系統(tǒng)軟件。所述hypervisor又稱虛擬機器監(jiān)視器(Virtual machine monitor,VMM),在電腦上的軟件,固件或是硬件,能用來建立與執(zhí)行虛擬機器。擁有Hypervior,能被用來執(zhí)行一個或多個虛擬機器,這樣的電腦被定義為是一臺主體機器(host machine)。在上面執(zhí)行的虛擬機器,則稱為客體機器(guest machine)。hypervisor可以用一個客體操作系統(tǒng)(guest operating systems)的外貌出現(xiàn),提供虛擬的作業(yè)平臺,負責管理其他客體操作系統(tǒng)的運作。在它之上運作的多個操作系統(tǒng),共同分享了虛擬化之后的硬件資源。

KVM虛擬機能在不改變linux或windows鏡像的情況下同時運行多個虛擬機,即一臺虛擬機使用一個鏡像,kvm虛擬化可以在一臺物理機上運行多個虛擬機,并為每一個虛擬機配置個性化硬件環(huán)境(例如網(wǎng)卡、磁盤、圖形適配器等)。KVM虛擬化方案包含提供底層虛擬化功能的可加載的核心模塊-KVM模塊,其中KVM模塊(基于內(nèi)核虛擬模塊)包括:kvm.ko和kvm-平臺.ko(kvm-平臺.ko包括例如:kvm-intel.ko或kvm-AMD.ko)。KVM模塊是云計算底層虛擬化技術中非常重要的組件,以致于KVM虛擬化方案都以它命名,它是整個虛擬化方案中的Hypervisor。

現(xiàn)有技術中,KVM模塊的升級需要關閉KVM虛擬機,這在公有云環(huán)境上代價是很大的,不經(jīng)濟損失大,而且為虛擬機停機時間提供更多倍的賠償,會造成客戶服務中斷,甚至對客戶造成很大損失。

然而,目前KVM模塊的熱升級(即KVM模塊在不關閉功能服務情 況下在線升級)在業(yè)界還是空白。



技術實現(xiàn)要素:

本申請的一個目的是提供一種在線升級基于內(nèi)核虛擬機模塊的方法,其中,所述方法包括:

對基于內(nèi)核虛擬機模塊進行重組和編譯,以獲得初始的第一運行模塊,所述初始的第一運行模塊支持雙活模式;以及

在進行在線升級時,將機器虛擬器先使用所述第一運行模塊,根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊。

進一步的,對基于內(nèi)核虛擬機模塊進行重組和編譯包括:

將所述基于內(nèi)核虛擬機模塊中支持虛擬機運行和支持運行模塊雙活模式的最小功能部分集成到支持模塊中,所述支持模塊用于支持所有運行模塊;以及

將所述基于內(nèi)核虛擬機模塊中集成到所述支持模塊以外的部分集成到所述第一運行模塊。

進一步的,根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊包括:

使所述支持模塊支持所述第一運行模塊和所述第二運行模塊。

進一步的,所述方法還包括:

在第一運行模塊根據(jù)所述第一運行模塊的代碼的升級版本編譯出所述第二運行模塊之后,將所述第二運行模塊插入內(nèi)核中。

進一步的,所述第一運行模塊和第二運行模塊采用不同導出設備,其中,所述導出設備用以導出用戶態(tài)接口。

進一步的,將所述機器虛擬器切換使用所述第二運行模塊包括:

在所述機器虛擬器中增加參數(shù),所述參數(shù)用于將所述機器虛擬器從使用所述第一運行模塊的導出設備指定切換到使用所述第二運行模塊的導出設備。

進一步的,所述方法還包括:

在將所述機器虛擬器切換使用所述第二運行模塊之后,移除第一運行模塊。

進一步的,所述方法還包括:

對所述機器虛擬器進行升級。

本申請的另一個目的是提供一種在線升級基于內(nèi)核虛擬機模塊的設備,其中,所述設備包括:

第一裝置,用于對基于內(nèi)核虛擬機模塊進行重組和編譯,以獲得初始的第一運行模塊,所述初始的第一運行模塊支持雙活模式;以及

第二裝置,用于在進行在線升級時,將機器虛擬器先使用所述第一運行模塊,根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊。

進一步的,所述第一裝置包括:

第一單元,用于將所述基于內(nèi)核虛擬機模塊中支持虛擬機運行和雙活模式的最小功能部分集成到支持模塊中,所述支持模塊用于支持所有運行模塊;以及

第二單元,用于將所述基于內(nèi)核虛擬機模塊中集成到所述支持模塊以外的部分集成到所述第一運行模塊。

進一步的,所述第二裝置包括:

第三單元,用于使所述支持模塊支持所述第一運行模塊和所述第二運行模塊。

進一步的,所述第二裝置還包括:

第四單元,用于在根據(jù)所述第一運行模塊的代碼的升級版本編譯出所述第二運行模塊之后,將所述第二運行模塊插入內(nèi)核中。

進一步的,所述第一運行模塊和第二運行模塊采用不同導出設備,其中,所述導出設備用以導出用戶態(tài)接口。

進一步的,所述第二裝置還包括:

第五單元,用于在所述機器虛擬器中增加參數(shù),所述參數(shù)用于將所述 機器虛擬器從使用所述第一運行模塊的導出設備指定切換到使用所述第二運行模塊的導出設備。

進一步的,所述設備還包括:

第三裝置,用于在將所述機器虛擬器切換使用所述第二運行模塊之后,移除第一運行模塊。

進一步的,所述設備還包括:

第四裝置,用于對所述機器虛擬器進行升級。

相比于現(xiàn)有技術,本申請所述方法和設備通過對基于內(nèi)核虛擬機模塊進行重組和編譯,以獲得初始的第一運行模塊,所述初始的第一運行模塊支持雙活模式;然后,將機器虛擬器先使用所述第一運行模塊,根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后在進行機器虛擬器在線升級時,即將所述機器虛擬器切換使用所述第二運行模塊,能夠?qū)崿F(xiàn)在不關閉虛擬機的情況下升級基于內(nèi)核虛擬機模塊,使得基于內(nèi)核虛擬機模塊的快速升級和迭代變?yōu)榭赡?例如新特性引入、故障修復(BUG fix)等),并且在升級過程中用戶不被感知,進而提高虛擬化技術核心競爭力。

附圖說明

通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:

圖1示出根據(jù)本發(fā)明一個方面的一種在線升級基于內(nèi)核虛擬機模塊的設備示意圖;

圖2示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的設備的第一裝置示意圖;

圖3(a)~圖3(d)示出根據(jù)本申請一具體實施例提供的基于內(nèi)核虛擬機模塊的在線升級過程示意圖;

圖4示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的設備;

圖5示出根據(jù)本發(fā)明一個方面的一種在線升級基于內(nèi)核虛擬機模塊的 方法流程圖;

圖6示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的步驟S11的流程示意圖;

圖7示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的方法流程圖。

附圖中相同或相似的附圖標記代表相同或相似的部件。

具體實施方式

下面結合附圖對本發(fā)明作進一步詳細描述。

圖1示出根據(jù)本發(fā)明一個方面的一種在線升級基于內(nèi)核虛擬機模塊的設備,其中所述設備1包括:第一裝置11和第二裝置12。

第一裝置11對基于內(nèi)核虛擬機模塊進行重組和編譯,以獲得初始的第一運行模塊,所述初始的第一運行模塊支持雙活模式;第二裝置12進行在線升級時,平臺機器虛擬器先使用所述第一運行模塊,根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊。

在此,設備1包括但不限于網(wǎng)絡設備、觸摸終端或網(wǎng)絡設備與觸摸終端通過網(wǎng)絡相集成所構成的設備。在此,所述網(wǎng)絡設備包括但不限于如網(wǎng)絡主機、單個網(wǎng)絡服務器、多個網(wǎng)絡服務器集或基于云計算的計算機集合等實現(xiàn);或者由用戶設備實現(xiàn)。在此,云由基于云計算(Cloud Computing)的大量主機或網(wǎng)絡服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個超級虛擬計算機。優(yōu)選地,設備1還可以是運行于觸摸終端、使得用戶以觸摸終端為媒介進行娛樂的游戲軟件。在此,所述觸摸終端是一種任何可通過觸屏進行人機交互的電子產(chǎn)品,如智能手機、PDA、便攜式游戲機、掌上電腦PPC、便攜式設備或平板電腦等;其中,觸屏(Touch Screen),包括電容式觸摸屏。本領域技術人員應能理解上述設備1和觸摸終端僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設備1或觸摸終端如可適用于本發(fā)明,也應包含在本發(fā)明保護范圍 以內(nèi),并在此以引用方式包含于此。

進一步的,所述第一裝置11對基于內(nèi)核虛擬機模塊進行重組和編譯,以獲得初始的第一運行模塊,所述初始的第一運行模塊支持雙活模式。

圖2示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的設備的第一裝置示意圖,其中,所述第一裝置11包括第一單元101和第二單元102,具體的,所述第一裝置11通過第一單元101和第二單元102對原KVM模塊的kvm.ko和kvm-平臺.ko進行重組和編譯,其中,所述第一單元101將所述基于內(nèi)核虛擬機模塊中支持虛擬機運行和支持運行模塊雙活模式的最小功能部分集成到支持模塊中,所述支持模塊用于支持所有運行模塊,所述第二單元102將所述基于內(nèi)核虛擬機模塊中集成到所述支持模塊以外的部分集成到所述第一運行模塊。

在具體的實施例中,在KVM虛擬化中,原kvm模塊(原基于內(nèi)核虛擬機模塊)包括平臺(Host,例如linux、AMD平臺等)上兩個模塊:kvm.ko和kvm-平臺.ko(其中kvm-平臺.ko,如果是AMD平臺則是kvm-amd.ko)。其中,kvm.ko和kvm-平臺.ko運行在CPU(中央處理器)根模式中,負責初始化CPU硬件虛擬化功能,將虛擬客戶機運行在KVM虛擬機模式下,并對KVM虛擬客戶機的運行提供支持,主要包括一些硬件虛擬化功能,如內(nèi)存虛擬化、CPU虛擬化,為了性能考慮也會模擬一些硬件設備(如pit時鐘)。其中,Kvm.ko包括了平臺無關的虛擬化功能,kvm-平臺.ko則包括了平臺相關的虛擬化功能,kvm.ko支持kvm-平臺.ko。

具體的,在初始階段,第一裝置11對原KVM模塊開始通過重組編譯的代碼編譯出初始的第一運行模塊和支持模塊,首先使用初始的第一運行模塊和支持模塊這兩個模塊創(chuàng)建虛擬機,此時QEMU(機器虛擬器)使用初始的第一運行模塊。

其中,所述第一單元101對原KVM模塊進行編譯,將支持虛擬機運行和支持運行模塊雙活模式的最小功能部分,即簡單的、與功能特性幾乎無關的功能,以至于其代碼在有新功能添加時也完全不需要修改更新的,但在進行升級時需要支持虛擬機運行以及第一運行模塊和第二運行模塊的雙活功能的極少的功能代碼集成到所述支持模塊中。同時,第二單元102 則將原KVM模塊中kvm.ko支持kvm-平臺.ko兩個模塊中集成到所述支持模塊以外的大部分功能集成到所述初始的第一運行模塊,在第一次升級時,以初始的第一運行模塊作為第一運行模塊,在初始的第一運行模塊的升級版本基礎上編譯獲得第二運行模塊。

接著,所述第二裝置12在進行在線升級時,將機器虛擬器先使用所述第一運行模塊,第一運行模塊根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊。

在此,QEMU(機器虛擬器)是KVM虛擬機的組成之一,QUEM作為虛擬機上層控制和界面,客機(Guest)通過QEMU實現(xiàn)對虛擬機的操作。

在此,所述當前即為在當前時間節(jié)點,第一運行模塊即為當前支持虛擬機運行的運行模塊,例如當前用于支持虛擬機的運行模塊,例如當前用于支持虛擬機的運行模塊的第一運行模塊為kvm-平臺-0.ko,機器虛擬器使用第一運行模塊為kvm-平臺-0.ko;在第一次升級中,支持虛擬機的運行模塊切換為第二運行模塊kvm-平臺-1.ko,機器虛擬器切換使用該第二運行模塊為kvm-平臺-1.ko;則在第二次升級開始前,支持虛擬機的第一運行模塊為kvm-平臺-1.ko,機器虛擬器使用第一運行模塊為kvm-平臺-1.ko。

當然,本領域技術人員應當能夠理解,對運行模塊的命名、數(shù)量僅為舉例,今后可能出現(xiàn)的、能夠?qū)崿F(xiàn)雙活的運行模塊方式都在本申請的思想范圍之內(nèi)。

具體地,在在線升級之前,以及在線升級過程中編譯出第二運行模塊之前,所述機器虛擬器使用所述第一運行模塊。

接著,在在線升級過程中,第二裝置12通過所述第一運行模塊的代碼的升級版本編譯第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,此時,所述第二運行模塊和第一運行模塊都處于雙活狀態(tài),即所述第二運行模塊和第一運行模塊都可以支持虛擬機運行,且都能夠獲得所述支持模塊的支持。

圖3(a)~圖3(d)示出根據(jù)本申請一具體實施例提供的基于內(nèi)核虛擬機模塊的在線升級過程示意圖,繼續(xù)接前例,雙活的運行模塊包括kvm-平臺-0.ko和kvm-平臺-1.ko,如圖3(a),在某次升級前,第一運行模塊為kvm-平臺-0.ko,機器虛擬器使用第一運行模塊為kvm-平臺-0.ko;在第一運行模塊kvm-平臺-0.ko出現(xiàn)故障(Bug)或需要功能更新時,則進入升級階段,在升級過程中,如圖3(b),首先通過所述第一運行模塊kvm-平臺-0.ko的代碼升級版本編譯出第二運行模塊kvm-平臺-1.ko,然后,如圖3(c),機器虛擬器切換使用該第二運行模塊為kvm-平臺-1.ko。

第一運行模塊和第二運行模塊并非固定的運行模塊,例如,接上例,在下一次進行升級時,kvm-平臺-1.ko則作為第一運行模塊,即機器虛擬器使用第一運行模塊為kvm-平臺-1.ko,然后,根據(jù)第一運行模塊kvm-平臺-1.ko的代碼編譯出第二運行模塊kvm-平臺-0.ko,機器虛擬器切換使用第二運行模塊為kvm-平臺-0.ko,在此后的升級過程依此循環(huán)升級。

進一步的,所述第二裝置12包括第三單元(圖中未示出),所述第三單元使所述支持模塊支持所述第一運行模塊和所述第二運行模塊。在升級期間,支持模塊的vmm-exclusive功能(虛擬機獨占功能)始終不關閉,避免關閉該功能后造成約5%的性能下降。支持模塊支持運行模塊雙活模式,即支持模塊可以同時支持兩個運行模塊。比如一臺使用第一運行模塊的虛擬同和一臺使用第二運行模塊的虛擬機同時在運行也是可以的。在升級前,允許第一運行模塊支持虛擬機,在升級后,切換到所第二運行模塊,既不影響虛擬機的正常運行,又能夠保證熱升級功能不以犧牲性能為代價。

進一步的,所述第二裝置12還包括第四單元(圖中未示出),所述第四單元在根據(jù)所述第一運行模塊的代碼的升級版本編譯出所述第二運行模塊之后,將所述第二運行模塊插入內(nèi)核中,即插入主機(Host)中。

例如,接前例,參考圖3(c)在主機(host)中插入支持模塊kvm.ko、第一運行模塊kvm-平臺-0.ko、kvm-平臺-1.ko時使用lsmod|grep kvm命令的效果如下圖:

其中,“Kvm_平臺_0 40”表示其為當前支持虛擬機的第一運行模塊,“Kvm 2 Kvm_平臺_1、Kvm_平臺_0”表示支持模塊支持兩個運行模塊Kvm_平臺_1和Kvm_平臺_0。

優(yōu)選的,所述第一運行模塊和第二運行模塊采用不同導出設備,其中,所述導出設備用以導出用戶態(tài)接口。

例如,接前例,雙活的運行模塊kvm-平臺-0.ko和kvm-平臺-1.ko,分別使用不同的導出設備,例如,分別使用/dev/kvm0和/dev/kvm1。

接著,所述第二裝置12還包括第五單元(圖中未示出),所述第五單元用于在所述機器虛擬器中增加參數(shù),所述參數(shù)用于將所述機器虛擬器從使用所述第一運行模塊的導出設備指定切換到使用所述第二運行模塊的導出設備(misc設備)。

例如,接前例,雙活的運行模塊kvm-平臺-0.ko和kvm-平臺-1.ko,分別使用不同的導出設備,例如,分別使用/dev/kvm0和/dev/kvm1。在某次升級前,第一運行模塊為kvm-平臺-0.ko,機器虛擬器指定通過導出設備/dev/kvm0使用第一運行模塊為kvm-平臺-0.ko,當編譯獲得第二運行模塊kvm-平臺-1.ko之后,機器虛擬器通過增加的參數(shù),使機器虛擬器通過導出設備/dev/kvm1使用第二運行模塊kvm-平臺-1.ko,以實現(xiàn)在線升級(即熱升級)。在一優(yōu)選的實施例中,這個切換過程通過一次機器虛擬器在線升級(即熱升級)來實現(xiàn),在機器虛擬器熱升級(在線升級)過程中,通過參數(shù)指定升級后的機器虛擬器(當然如果只是為了升級kvm運行模塊,仍舊使用老的機器虛擬器也是可以的)使用第二運行模塊(即升級版本的運行模塊)。當然,本領域技術人員應當能夠理解,將機器虛擬器通過切換使用運行模塊的過程并不限于在機器虛擬器熱升級過程完成,其他能夠?qū)崿F(xiàn)機器虛擬器的切換的方式都包含在本申請的思想范圍之內(nèi)。

圖4示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的設備,所述設備1包括第一裝置11’、第二裝置12’以及第三裝 置13’。

其中,所述第一裝置11’和所述第二裝置12’與圖1示出的第一裝置11和第二裝置12的內(nèi)容相同或基本相同,為簡明起見,不再贅述。

其中,所述第三裝置13’在將所述機器虛擬器切換使用所述第二運行模塊之后,移除第一運行模塊。

繼續(xù)參考圖3,接前例,在某次升級過程中,第一運行模塊為kvm-平臺-0.ko,通過所述第一運行模塊kvm-平臺-0.ko的代碼升級版本編譯出第二運行模塊kvm-平臺-1.ko,機器虛擬器切換使用該第二運行模塊為kvm-平臺-1.ko之后,如圖3(d),所述第三裝置13’移除第一運行模塊為kvm-平臺-0.ko。如后續(xù)在此進行更新時,再根據(jù)當前的第一運行模塊kvm-平臺-1.ko的代碼的升級版本重新編譯出第二運行模塊kvm-平臺-0.ko,第二運行模塊kvm-平臺-0.ko與之前移除的kvm-平臺-0.ko可以通過不同的版本號進行區(qū)分,其后依次循環(huán)。因為支持模塊支持雙活模式,所以在升級完成后移除第一運行模塊能夠有效避免虛擬機誤用老版本(當前未更新版本)的運行模塊。

在優(yōu)選的實施例中,每次升級過程中,循環(huán)執(zhí)行第二裝置12’進行在線升級時,平臺機器虛擬器先使用所述第一運行模塊,第一運行模塊根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊以及所述第三裝置13’在將所述機器虛擬器切換使用所述第二運行模塊之后,移除第一運行模塊,實現(xiàn)在線升級。

進一步的,所述設備1還包括第四裝置(圖中未示出),所述第四裝置(圖中未示出)對所述機器虛擬器進行升級。

在此,所述機器虛擬器(QEMU)的升級過程可以與KVM模塊的升級過程同步或異步。

圖5示出根據(jù)本發(fā)明一個方面的一種在線升級基于內(nèi)核虛擬機模塊的方法流程圖,其中所述方法包括:步驟S11和步驟S12。

在步驟S11中,設備1對基于內(nèi)核虛擬機模塊進行重組和編譯,以獲得初始的第一運行模塊,所述初始的第一運行模塊支持雙活模式;在步驟 S12中,進行在線升級時,設備1使機器虛擬器先使用所述第一運行模塊,第一運行模塊根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊。

在此,設備1包括但不限于網(wǎng)絡設備、觸摸終端或網(wǎng)絡設備與觸摸終端通過網(wǎng)絡相集成所構成的設備。在此,所述網(wǎng)絡設備包括但不限于如網(wǎng)絡主機、單個網(wǎng)絡服務器、多個網(wǎng)絡服務器集或基于云計算的計算機集合等實現(xiàn);或者由用戶設備實現(xiàn)。在此,云由基于云計算(Cloud Computing)的大量主機或網(wǎng)絡服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個超級虛擬計算機。優(yōu)選地,設備1還可以是運行于觸摸終端、使得用戶以觸摸終端為媒介進行娛樂的游戲軟件。在此,所述觸摸終端是一種任何可通過觸屏進行人機交互的電子產(chǎn)品,如智能手機、PDA、便攜式游戲機、掌上電腦PPC、便攜式設備或平板電腦等;其中,觸屏(Touch Screen),包括電容式觸摸屏。本領域技術人員應能理解上述設備1和觸摸終端僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設備1或觸摸終端如可適用于本發(fā)明,也應包含在本發(fā)明保護范圍以內(nèi),并在此以引用方式包含于此。

進一步的,所述步驟S11包括步驟S101和步驟S102,在所述步驟S101中,將所述基于內(nèi)核虛擬機模塊中支持虛擬機運行和支持運行模塊雙活模式的最小功能部分集成到支持模塊中,所述支持模塊用于支持所有運行模塊,在所述步驟S102中將所述基于內(nèi)核虛擬機模塊中集成到所述支持模塊以外的部分集成到所述第一運行模塊。

圖6示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的步驟S11的流程示意圖,所述步驟S11通過具體通過步驟S101和步驟S102對原KVM模塊的kvm.ko和kvm-平臺.ko進行重組和編譯,其中,所述第一單元101將所述基于內(nèi)核虛擬機模塊中支持虛擬機運行和支持運行模塊雙活模式的最小功能部分集成到支持模塊中,所述支持模塊用于支持所有運行模塊,所述第二單元102將所述基于內(nèi)核虛擬機模塊中集成到所述支持模塊以外的部分集成到所述第一運行模塊。

在具體的實施例中,在KVM虛擬化中,原kvm模塊(原基于內(nèi)核虛擬機模塊)包括平臺(Host,例如linux、AMD平臺等)上兩個模塊:kvm.ko和kvm-平臺.ko(其中kvm-平臺.ko,如果是AMD平臺則是kvm-amd.ko)。其中,kvm.ko和kvm-平臺.ko運行在CPU(中央處理器)根模式中,負責初始化CPU硬件虛擬化功能,將虛擬客戶機運行在KVM虛擬機模式下,并對KVM虛擬客戶機的運行提供支持,主要包括一些硬件虛擬化功能,如內(nèi)存虛擬化、CPU虛擬化,為了性能考慮也會模擬一些硬件設備(如pit時鐘)。其中,Kvm.ko包括了平臺無關的虛擬化功能,kvm-平臺.ko則包括了平臺相關的虛擬化功能,kvm.ko支持kvm-平臺.ko。

具體的,在初始階段,對原KVM模塊開始通過重組編譯的代碼編譯出初始的第一運行模塊和支持模塊,首先使用初始的第一運行模塊和支持模塊這兩個模塊創(chuàng)建虛擬機,此時QEMU(機器虛擬器)使用初始的第一運行模塊。

其中,所述第一單元101對原KVM模塊進行編譯,將支持虛擬機運行和支持運行模塊雙活模式的最小功能部分,即簡單的、與功能特性幾乎無關的功能,以至于其代碼在有新功能添加時也完全不需要修改更新的,但在進行升級時需要支持虛擬機運行以及第一運行模塊和第二運行模塊的雙活功能的極少的功能代碼集成到所述支持模塊中。同時,第二單元102則將原KVM模塊中kvm.ko支持kvm-平臺.ko兩個模塊中集成到所述支持模塊以外的大部分功能集成到所述初始的第一運行模塊,在第一次升級時,以初始的第一運行模塊作為第一運行模塊,在初始的第一運行模塊基礎上編譯獲得第二運行模塊。

接著,在步驟S102中,在進行在線升級時,包括以下步驟:

1)將機器虛擬器先使用所述第一運行模塊;

2)根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本;其后

3)將所述機器虛擬器切換使用所述第二運行模塊。

其中,在每次在線升級過程中,循環(huán)執(zhí)行步驟S102中1)至3)步驟。

在此,QEMU(機器虛擬器)是KVM虛擬機的組成之一,QUEM作 為虛擬機上層控制和界面。

在此,所述當前即為在當前時間節(jié)點,第一運行模塊即為當前支持虛擬機運行的運行模塊,例如當前用于支持虛擬機的運行模塊,例如當前用于支持虛擬機的運行模塊的第一運行模塊為kvm-平臺-0.ko,機器虛擬器使用第一運行模塊為kvm-平臺-0.ko;在第一次升級中,支持虛擬機的運行模塊切換為第二運行模塊kvm-平臺-1.ko,機器虛擬器切換使用該第二運行模塊為kvm-平臺-1.ko;則在第二次升級開始前,支持虛擬機的第一運行模塊為kvm-平臺-1.ko,機器虛擬器使用第一運行模塊為kvm-平臺-0.ko。

當然,本領域技術人員應當能夠理解,對運行模塊的命名、數(shù)量僅為舉例,今后可能出現(xiàn)的、能夠?qū)崿F(xiàn)雙活的運行模塊方式都在本申請的思想范圍之內(nèi)。

具體地,在在線升級之前,以及在線升級過程中編譯出第二運行模塊之前,所述機器虛擬器使用所述第一運行模塊。

接著,在步驟S12中,在在線升級過程中,通過所述第一運行模塊的代碼升級版本編譯第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,此時,所述第二運行模塊和第一運行模塊都處于雙活狀態(tài),即所述第二運行模塊和第一運行模塊都可以支持虛擬機運行,且都能夠獲得所述支持模塊的支持。

圖3(a)~圖3(d)示出根據(jù)本申請一具體實施例提供的基于內(nèi)核虛擬機模塊的在線升級過程示意圖,繼續(xù)接前例,雙活的運行模塊包括kvm-平臺-0.ko和kvm-平臺-1.ko,如圖3(a),在某次升級前,第一運行模塊為kvm-平臺-0.ko,機器虛擬器使用第一運行模塊為kvm-平臺-0.ko;在第一運行模塊kvm-平臺-0.ko出現(xiàn)故障(Bug)或需要功能更新時,則進入升級階段,在升級過程中,如圖3(b),首先通過所述第一運行模塊kvm-平臺-0.ko的代碼編譯出第二運行模塊kvm-平臺-1.ko,然后,如圖3(c),機器虛擬器切換使用該第二運行模塊為kvm-平臺-1.ko。

當然,第一運行模塊和第二運行模塊并非固定的運行模塊,例如,接上例,在下一次進行升級時,kvm-平臺-1.ko則作為第一運行模塊,機器 虛擬器使用第一運行模塊為kvm-平臺-1.ko,然后,根據(jù)第一運行模塊kvm-平臺-1.ko的代碼編譯出第二運行模塊kvm-平臺-0.ko,機器虛擬器切換使用第二運行模塊為kvm-平臺-0.ko,在此后的升級過程依此循環(huán)升級。

進一步的,所述步驟S12包括:使所述支持模塊支持所述第一運行模塊和所述第二運行模塊。

進一步的,所述步驟S12還包括:在第一運行模塊根據(jù)所述第一運行模塊的代碼的升級版本編譯出所述第二運行模塊之后,將所述第二運行模塊插入內(nèi)核中。

優(yōu)選的,所述第一運行模塊和第二運行模塊采用不同導出設備,其中,所述導出設備用以導出用戶態(tài)接口。

例如,接前例,雙活的運行模塊kvm-平臺-0.ko和kvm-平臺-1.ko,分別使用不同的導出設備,例如,分別使用/dev/kvm0和/dev/kvm1。

接著,在所述步驟S12中還包括:在所述機器虛擬器中增加參數(shù),所述參數(shù)用于將所述機器虛擬器從使用所述第一運行模塊的導出設備指定切換到使用所述第二運行模塊的導出設備(misc設備)。

例如,接前例,雙活的運行模塊kvm-平臺-0.ko和kvm-平臺-1.ko,分別使用不同的導出設備,例如,分別使用/dev/kvm0和/dev/kvm1。在某次升級前,第一運行模塊為kvm-平臺-0.ko,機器虛擬器指定通過導出設備/dev/kvm0使用第一運行模塊為kvm-平臺-0.ko,當編譯獲得第二運行模塊kvm-平臺-0.ko之后,機器虛擬器通過一次機器虛擬器熱升級并通過增加的參數(shù)指定切換至通過導出設備/dev/kvm1使用第二運行模塊kvm-平臺-1.ko,以實現(xiàn)在線升級(即熱升級)。

圖7示出根據(jù)本申請一優(yōu)選的實施例提供的一種在線升級基于內(nèi)核虛擬機模塊的方法流程圖,所述方法包括步驟S11’、步驟S12’以及步驟S13’。

其中,所述步驟S11’和所述步驟S12’與圖4示出的步驟S11和步驟S12的內(nèi)容相同或基本相同,為簡明起見,不再贅述。

其中,步驟S13’在將所述機器虛擬器切換使用所述第二運行模塊之后,移除第一運行模塊。

繼續(xù)參考圖3,接前例,在某次升級過程中,第一運行模塊為kvm- 平臺-0.ko,通過所述第一運行模塊kvm-平臺-0.ko的代碼編譯出第二運行模塊kvm-平臺-1.ko,機器虛擬器切換使用該第二運行模塊為kvm-平臺-1.ko之后,如圖3(d),在步驟S13’中,移除第一運行模塊為kvm-平臺-0.ko。如后續(xù)在此進行更新時,再根據(jù)當前的第一運行模塊kvm-平臺-1.ko的代碼的升級版本編譯出第二運行模塊kvm-平臺-0.ko,第二運行模塊kvm-平臺-0.ko與之前移除的kvm-平臺-0.ko可以通過不同的版本號進行區(qū)分,其后依次循環(huán)。因為支持模塊支持雙活模式,所以在升級完成后移除原第一運行模塊能夠有效避免虛擬機誤用老版本(當前未更新版本)的運行模塊。

在優(yōu)選的實施例中,每次升級過程中,循環(huán)執(zhí)行所述步驟S12’進行在線升級時,平臺機器虛擬器先使用所述第一運行模塊,第一運行模塊根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊以及所述步驟S13’在將所述機器虛擬器切換使用所述第二運行模塊之后,移除第一運行模塊,實現(xiàn)在線升級。

進一步的,所述方法還包括:對所述機器虛擬器進行升級。

在此,所述機器虛擬器(QEMU)的升級過程可以與KVM模塊的升級過程同步或異步。接前例,將QEMU使用運行模塊kvm-平臺-0.ko切換到使用運行模塊kvm-平臺-1.ko,其升級時間在100ms~200ms之間(機械硬盤環(huán)境,SSD硬盤環(huán)境還可以更短),完全能夠做到升級過程用戶無感知。

相比于現(xiàn)有技術,本申請所述方法和設備通過對基于內(nèi)核虛擬機模塊進行重組和編譯,以獲得初始的第一運行模塊,所述初始的第一運行模塊支持雙活模式;然后在在進行在線升級時,將機器虛擬器先使用所述第一運行模塊,第一運行模塊根據(jù)所述第一運行模塊的代碼的升級版本編譯出第二運行模塊,其中,所述第二運行模塊為第一運行模塊的更新版本,其后將所述機器虛擬器切換使用所述第二運行模塊,能夠?qū)崿F(xiàn)在不關閉虛擬機的情況下升級基于內(nèi)核虛擬機模塊,使得基于內(nèi)核虛擬機模塊的快速升級和迭代變?yōu)榭赡?例如新特性引入、故障修復(BUG fix)等),并且 在升級過程中用戶不被感知,進而提高虛擬化技術核心競爭力。

需要注意的是,本發(fā)明可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設備來實現(xiàn)。在一個實施例中,本發(fā)明的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本發(fā)明的軟件程序(包括相關的數(shù)據(jù)結構)可以被存儲到計算機可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設備。另外,本發(fā)明的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。

另外,本發(fā)明的一部分可被應用為計算機程序產(chǎn)品,例如計算機程序指令,當其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本發(fā)明的方法和/或技術方案。而調(diào)用本發(fā)明的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設備的工作存儲器中。在此,根據(jù)本發(fā)明的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本發(fā)明的多個實施例的方法和/或技術方案。

對于本領域技術人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本發(fā)明內(nèi)。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復數(shù)。裝置權利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1