專利名稱:一種虛擬機(jī)死鎖后的恢復(fù)方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)死鎖后的恢復(fù)方法、裝置及系統(tǒng)。
背景技術(shù):
在云計(jì)算系統(tǒng)中,計(jì)算節(jié)點(diǎn)大量采用虛擬化方案,在虛擬化環(huán)境下,所有的虛擬機(jī)當(dāng)中一般只有一個(gè)特殊的虛擬機(jī)(亦可稱為特權(quán)虛擬機(jī))承擔(dān)管理功能并控制真實(shí)物理資源的訪問(wèn)。當(dāng)特權(quán)虛擬機(jī)發(fā)生死鎖,其中的網(wǎng)卡或磁盤(pán)設(shè)備驅(qū)動(dòng)等無(wú)法正常工作,無(wú)法滿足客戶操作系統(tǒng)的IO請(qǐng)求,造成整個(gè)計(jì)算節(jié)點(diǎn)上所有虛擬機(jī)業(yè)務(wù)無(wú)法正常開(kāi)展。為了解決這一問(wèn)題,現(xiàn)有技術(shù)中通過(guò)重啟整個(gè)計(jì)算節(jié)點(diǎn)如服務(wù)器來(lái)恢復(fù)特權(quán)虛擬機(jī)的正常運(yùn)行,例如,在特權(quán)虛擬機(jī)中運(yùn)行定時(shí)器程序(通常稱為軟件狗),該軟件狗通過(guò)IPMI (Intelligent Platform Management Interface,智能型平臺(tái)管理接口)對(duì)整個(gè)服務(wù)器進(jìn)行健康監(jiān)控,并以固定頻率向該服務(wù)器的BMC (Baseboard Management Controller,基板管理控制器)的看門(mén)狗定時(shí)器(通常稱為硬件狗)發(fā)送心跳,當(dāng)特權(quán)虛擬機(jī)發(fā)生死鎖,軟件狗無(wú)法繼續(xù)運(yùn)行, 不能向BMC的硬件狗發(fā)送心跳,在硬件狗接收不到心跳一定時(shí)間后,BMC對(duì)整個(gè)服務(wù)器重新上電以使其重新啟動(dòng)。但是,在現(xiàn)有技術(shù)中采用重啟整個(gè)服務(wù)器的方法,造成了存儲(chǔ)數(shù)據(jù)不同步等現(xiàn)象, 而且重啟過(guò)程花費(fèi)時(shí)間較長(zhǎng),導(dǎo)致業(yè)務(wù)長(zhǎng)時(shí)間中斷。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法、裝置及系統(tǒng),用以在一定程度上,避免重啟整個(gè)服務(wù)器所帶來(lái)的問(wèn)題。本發(fā)明的實(shí)施例采用如下技術(shù)方案一方面,提供一種虛擬機(jī)死鎖后的恢復(fù)方法,包括在虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源;當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程;所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息。另一方面,提供一種虛擬機(jī)死鎖后的恢復(fù)方法,包括響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷;收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;
在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。相應(yīng)的,一方面,提供一種虛擬機(jī)監(jiān)控器,包括中斷模擬器,用于在虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷;配置單元,用于配置所述虛擬機(jī)的虛擬處理器資源;調(diào)度加載單元,用于當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。另一方面,提供一種虛擬機(jī),包括中斷處理單元,用于響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷;收集單元,用于收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;業(yè)務(wù)恢復(fù)單元,用于在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。本發(fā)明實(shí)施例還提供一種宿主機(jī),包括虛擬機(jī)監(jiān)控器和特權(quán)虛擬機(jī),所述虛擬機(jī)監(jiān)控器為上述的虛擬機(jī)監(jiān)控器,所述特權(quán)虛擬機(jī)為上述的虛擬機(jī)。本發(fā)明實(shí)施例還提供一種計(jì)算節(jié)點(diǎn),所述計(jì)算節(jié)點(diǎn)包括硬件層、運(yùn)行在所述硬件層之上的虛擬機(jī)監(jiān)控器VMM、以及運(yùn)行在所述VMM之上的虛擬機(jī);所述虛擬機(jī)包括特權(quán)虛擬機(jī)和至少一個(gè)業(yè)務(wù)虛擬機(jī);其中所述VMM用于在特權(quán)虛擬機(jī)發(fā)生死鎖的情況下,向所述特權(quán)虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述特權(quán)虛擬機(jī)的虛擬處理器資源;當(dāng)所述特權(quán)虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述特權(quán)虛擬機(jī)對(duì)應(yīng)的內(nèi)核引導(dǎo)程序;所述特權(quán)虛擬機(jī)用于響應(yīng)VMM發(fā)送的不可屏蔽中斷;收集所述特權(quán)虛擬機(jī)的臨終遺言,所述臨終遺言包括死鎖時(shí)所述特權(quán)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;在所述特權(quán)虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述特權(quán)虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)系統(tǒng),包括至少一個(gè)上述的計(jì)算節(jié)點(diǎn)??梢?jiàn),本發(fā)明實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法、裝置及系統(tǒng),通過(guò)在虛擬機(jī)發(fā)生死鎖的情況下,向虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源; 當(dāng)虛擬機(jī)響應(yīng)不可屏蔽中斷并收集完成臨終遺言之后,虛擬機(jī)監(jiān)控器從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,使得虛擬機(jī)能夠根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程;相對(duì)于現(xiàn)有技術(shù)中使整個(gè)計(jì)算節(jié)點(diǎn),如服務(wù)器下電重啟的方法,本發(fā)明能夠避免重啟整個(gè)服務(wù)器,及時(shí)恢復(fù)虛擬機(jī)的運(yùn)行,從而能一定程度上避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例提供的一種計(jì)算節(jié)點(diǎn);圖2為本發(fā)明實(shí)施例提供的虛擬機(jī)結(jié)構(gòu)框圖;圖3 (a)為本發(fā)明實(shí)施例提供的一種虛擬機(jī)死鎖后的恢復(fù)方法流程圖;圖3 (b)為本發(fā)明實(shí)施例提供的一種虛擬機(jī)死鎖后的恢復(fù)方法流程圖;圖4(a)為本發(fā)明實(shí)施例提供的另一種虛擬機(jī)死鎖后的恢復(fù)方法流程圖;圖4(b)為本發(fā)明實(shí)施例提供的虛擬機(jī)的數(shù)據(jù)結(jié)構(gòu)與虛擬處理器的數(shù)據(jù)結(jié)構(gòu)相互引用的不意圖;圖5為本發(fā)明實(shí)施例提供的一種虛擬機(jī)監(jiān)控器的框圖;圖6為本發(fā)明實(shí)施例提供的一種虛擬機(jī)監(jiān)控器的框圖;圖7為本發(fā)明實(shí)施例提供的一種虛擬機(jī)的框圖;圖8為本發(fā)明實(shí)施例提供的一種虛擬機(jī)的框圖;圖9為本發(fā)明實(shí)施例提供的一種宿主機(jī)的框圖;圖10為本發(fā)明實(shí)施例提供的一種計(jì)算機(jī)系統(tǒng)框圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為了方便理解本發(fā)明實(shí)施例,首先在此介紹本發(fā)明實(shí)施例描述中會(huì)引入的幾個(gè)要素。死鎖操作系統(tǒng)或軟件運(yùn)行的一種狀態(tài)在多任務(wù)系統(tǒng)下,當(dāng)一個(gè)或多個(gè)進(jìn)程等待系統(tǒng)資源,而資源又被進(jìn)程本身或其它進(jìn)程占用時(shí),就形成了死鎖。虛擬機(jī)監(jiān)控器(VirtualMachine Monitor,簡(jiǎn)稱 VMM):例如是 Xen Hypervisor。宿主機(jī)(Host)作為管理層,用以完成硬件資源的管理、分配;為虛擬機(jī)呈現(xiàn)虛擬硬件平臺(tái);實(shí)現(xiàn)虛擬機(jī)的調(diào)度和隔離。其中,Host可能是虛擬機(jī)監(jiān)控器(VMM);此外,有時(shí)VMM和I個(gè)特權(quán)虛擬機(jī)配合,兩者結(jié)合組成Host。其中,虛擬硬件平臺(tái)對(duì)其上運(yùn)行的各個(gè)虛擬機(jī)提供各種硬件資源,如提供虛擬處理器(如VCPU)、虛擬內(nèi)存、虛擬磁盤(pán)、虛擬網(wǎng)卡等等。其中,該虛擬磁盤(pán)可對(duì)應(yīng)Host的一個(gè)文件或者一個(gè)邏輯塊設(shè)備。虛擬機(jī)運(yùn)行在Host為其準(zhǔn)備的虛擬硬件平臺(tái)上,Host上運(yùn)行一個(gè)或多個(gè)虛擬機(jī)。虛擬機(jī)(VirtualMachine,簡(jiǎn)稱 VM)通過(guò)虛擬機(jī)軟件可以在一臺(tái)物理計(jì)算機(jī)上模擬出一臺(tái)或者多臺(tái)虛擬的計(jì)算機(jī),而這些虛擬機(jī)就像真正的計(jì)算機(jī)那樣進(jìn)行工作,虛擬機(jī)上可以安裝操作系統(tǒng)和應(yīng)用程序,虛擬機(jī)還可訪問(wèn)網(wǎng)絡(luò)資源。對(duì)于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,虛擬機(jī)就像是在真正的計(jì)算機(jī)中進(jìn)行工作。硬件層虛擬化環(huán)境運(yùn)行的硬件平臺(tái)。其中,硬件層可包括多種硬件,例如某計(jì)算節(jié)點(diǎn)的硬件層可包括處理器(如CPU)和內(nèi)存,還可以包括網(wǎng)卡、存儲(chǔ)器等等高速/低速輸入/輸出 (I/O, Input/Output)設(shè)備。GuestOS :客戶機(jī)操作系統(tǒng)。特權(quán)虛擬機(jī)一種特殊的GeustOS虛擬機(jī),亦可稱為驅(qū)動(dòng)域,例如這種特殊的虛擬機(jī)在Xen Hypervisor平臺(tái)上被稱作DomO,在該虛擬機(jī)中安裝了例如網(wǎng)卡、SCSI磁盤(pán)等真實(shí)物理設(shè)備的驅(qū)動(dòng)程序,能檢測(cè)和直接訪問(wèn)這些真實(shí)物理設(shè)備。其他虛擬機(jī)利用Hypervisor 提供的相應(yīng)機(jī)制通過(guò)特權(quán)虛擬機(jī)訪問(wèn)真實(shí)物理設(shè)備。NMI (Nonmaskable Interrupt):不可屏蔽中斷(即CPU不能屏蔽)。無(wú)論狀態(tài)寄存器中IF位的狀態(tài)如何,CPU收到有效的匪I必須進(jìn)行響應(yīng),它在被響應(yīng)時(shí)無(wú)中斷響應(yīng)周期。不可屏蔽中斷通常用于故障處理(例如協(xié)處理器運(yùn)算出錯(cuò),存儲(chǔ)器校驗(yàn)出錯(cuò),I/O通道校驗(yàn)出錯(cuò)等)。BMC Baseboard Management Controller,基板管理控制器。IPMI :智能型平臺(tái)管理接口(Intelligent Platform Management Interface)的縮寫(xiě),是管理基于Intel結(jié)構(gòu)的企業(yè)系統(tǒng)中所使用的外圍設(shè)備采用的一種工業(yè)標(biāo)準(zhǔn),該標(biāo)準(zhǔn)由英特爾、惠普、NEC、美國(guó)戴爾電腦和SuperMicro等公司制定。用戶可以利用IPMI監(jiān)視服務(wù)器的物理健康特征,如溫度、電壓、風(fēng)扇工作狀態(tài)、電源狀態(tài)等。實(shí)施例一如圖I所示,本發(fā)明實(shí)施例提供一種計(jì)算節(jié)點(diǎn)100,包括硬件層110、運(yùn)行在硬件層110之上的虛擬機(jī)監(jiān)控器VMM50、以及運(yùn)行所述VMM之上的虛擬機(jī)VM,所述虛擬機(jī)VM包括特權(quán)虛擬機(jī)701和至少一個(gè)業(yè)務(wù)虛擬機(jī)702。所述硬件層110包括處理器、硬盤(pán)、網(wǎng)卡、內(nèi)存等。其中,處理器可以是中央處理器 (CPU, Central Processing Unit)、數(shù)字信號(hào)處理器(DSP, Digital Signal Processing)、 現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA, Field Programmable Gate Array)等等。如圖2所示,虛擬機(jī)主要包括虛擬硬件21、運(yùn)行在虛擬硬件21之上的客戶機(jī)操作系統(tǒng)22 ;所述虛擬硬件21包括至少一個(gè)虛擬處理器23 ;虛擬內(nèi)存(VMEM) 24 ;虛擬硬盤(pán) (VDISK) 25以及至少一個(gè)虛擬設(shè)備(VDEVICE) 26 ;需要說(shuō)明的是,圖2中的虛擬處理器可以隨著不同時(shí)刻或不同業(yè)務(wù)需求而改變,而且同一虛擬處理器可以同時(shí)被多個(gè)虛擬機(jī)共享, 所以圖2中虛擬處理器本質(zhì)上為某一時(shí)刻虛擬機(jī)所對(duì)應(yīng)的虛擬處理器。另外,在特權(quán)虛擬機(jī)701中還包括運(yùn)行在客戶機(jī)操作系統(tǒng)(圖中未示意出)之上的物理設(shè)備的驅(qū)動(dòng)程序,在業(yè)務(wù)虛擬機(jī)702還包括運(yùn)行在客戶機(jī)操作系統(tǒng)之上的業(yè)務(wù)應(yīng)用程序,需要說(shuō)明的是,業(yè)務(wù)應(yīng)用程序運(yùn)行在業(yè)務(wù)虛擬機(jī)中,業(yè)務(wù)虛擬機(jī)需要通過(guò)特權(quán)虛擬機(jī)作為中介,間接訪問(wèn)網(wǎng)絡(luò)與存儲(chǔ)等10資源。本發(fā)明實(shí)施例中,虛擬機(jī)監(jiān)控器可以指Xen Hypervisor,特權(quán)虛擬機(jī)指在Xen Hypervisor平臺(tái)上的特殊虛擬機(jī)。這種特殊的虛擬機(jī)在Xen Hypervisor平臺(tái)上也被稱作DomO,在其他虛擬化平臺(tái)上也被稱作為驅(qū)動(dòng)域,為了方便描述,本發(fā)明實(shí)施例使用特權(quán)虛擬機(jī)的說(shuō)法,但本發(fā)明對(duì)此不作限定。其中,在特權(quán)虛擬機(jī)發(fā)生死鎖的情況下,所述VMM50用于在特權(quán)虛擬機(jī)發(fā)生死鎖的情況下,向所述特權(quán)虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述特權(quán)虛擬機(jī)的虛擬處理器資源;當(dāng)所述特權(quán)虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述特權(quán)虛擬機(jī)對(duì)應(yīng)的內(nèi)核引導(dǎo)程序;在本實(shí)施例中,第一虛擬處理器可以為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出的第一個(gè)虛擬處理器,或者,為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出的信用值和/或權(quán)重值最高的虛擬處理器。第一虛擬處理器也就是先配置完成的虛擬處理器,依據(jù)配置的先后順序而來(lái)。另外,通過(guò)在預(yù)定個(gè)數(shù)的虛擬處理器中選擇信用值和權(quán)重值最高的虛擬處理器,或者信用值最高,或者權(quán)重值最高的虛擬處理器有利于內(nèi)核引導(dǎo)程序快速進(jìn)行加載。所述特權(quán)虛擬機(jī)701用于響應(yīng)VMM50發(fā)送的不可屏蔽中斷;收集所述特權(quán)虛擬機(jī)的臨終遺言,所述臨終遺言包括死鎖時(shí)所述特權(quán)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;在所述特權(quán)虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述特權(quán)虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。在業(yè)務(wù)虛擬機(jī)702發(fā)生死鎖的情況下,所述VMM50還用于在業(yè)務(wù)虛擬機(jī)702發(fā)生死鎖的情況下,向所述業(yè)務(wù)虛擬機(jī)702發(fā)送不可屏蔽中斷并配置所述業(yè)務(wù)虛擬機(jī)的虛擬處理器資源;當(dāng)所述業(yè)務(wù)虛擬機(jī)702響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第二虛擬處理器并在所述第二虛擬處理器上加載所述業(yè)務(wù)虛擬機(jī)對(duì)應(yīng)的內(nèi)核引導(dǎo)程序;在本實(shí)施例中,第二虛擬處理器可以為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出的第一個(gè)虛擬處理器,或者,為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出的信用值和/或權(quán)重值最高的虛擬處理器。第二虛擬處理器也就是先配置完成的虛擬處理器,依據(jù)配置的先后順序而來(lái)。另外,通過(guò)在預(yù)定個(gè)數(shù)的虛擬處理器中選擇信用值和權(quán)重值最高的虛擬處理器,或者信用值最高,或者權(quán)重值最高的虛擬處理器有利于內(nèi)核引導(dǎo)程序快速進(jìn)行加載。需要說(shuō)明的是,本實(shí)施例描述中所采用的第一、第二的說(shuō)法,沒(méi)有限定順序的意思,僅為方便區(qū)分而已。這里的第一虛擬處理器用來(lái)表示VMM為特權(quán)虛擬機(jī)所調(diào)度的虛擬處理器,這里的第二虛擬處理器用來(lái)表示VMM為業(yè)務(wù)虛擬機(jī)所調(diào)度的虛擬處理器。所述業(yè)務(wù)虛擬機(jī)702用于響應(yīng)VMM發(fā)送的不可屏蔽中斷;收集所述業(yè)務(wù)虛擬機(jī)的臨終遺言,所述臨終遺言包括死鎖時(shí)所述業(yè)務(wù)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;在所述業(yè)務(wù)虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述業(yè)務(wù)虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。在本發(fā)明實(shí)施例中,虛擬機(jī)收集臨終遺言通過(guò)VMM從硬件層收集臨終遺言,具體而言,虛擬機(jī)通過(guò)VMM從硬件層的內(nèi)存中收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息,并且從硬件層的處理器的寄存器收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的寄存器信息。需要指出的,特殊虛擬機(jī)和業(yè)務(wù)虛擬機(jī)都可以通過(guò)VMM從硬件層收集臨終遺言,例如,若在本發(fā)明實(shí)施例中虛擬處理器為VCPU、硬件層的處理器為CPU,則虛擬機(jī)通過(guò)VMM從硬件層的內(nèi)存中收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)VCPU的堆棧信息,并且從CPU的寄存器收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)VCPU的寄存器信息??梢?jiàn),本發(fā)明實(shí)施例提供一種計(jì)算節(jié)點(diǎn),虛擬機(jī)監(jiān)控器通過(guò)向虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源,虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言,再通過(guò)虛擬機(jī)監(jiān)控器從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度某個(gè)虛擬處理器(如前述的第一虛擬處理器或第二虛擬處理器)并在所述某個(gè)虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,使得虛擬機(jī)能夠根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程;一方面,當(dāng)特權(quán)虛擬機(jī)發(fā)生死鎖時(shí),相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電的方法,本發(fā)明檢測(cè)到特權(quán)虛擬機(jī)死鎖之后通過(guò)VMM在線恢復(fù)特權(quán)虛擬機(jī),能夠及時(shí)恢復(fù)特權(quán)虛擬機(jī)的運(yùn)行,保持整個(gè)計(jì)算節(jié)點(diǎn)運(yùn)行狀態(tài),從而避免了將整個(gè)計(jì)算節(jié)點(diǎn)如整個(gè)服務(wù)器重啟,進(jìn)而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象;此外,由于特權(quán)虛擬機(jī)的快速恢復(fù), 從而自動(dòng)恢復(fù)其他業(yè)務(wù)虛擬機(jī)的訪問(wèn)網(wǎng)絡(luò)與存儲(chǔ)等IO資源的IO功能,進(jìn)而對(duì)其他業(yè)務(wù)虛擬機(jī)不造成影響;另一方面,當(dāng)業(yè)務(wù)虛擬機(jī)發(fā)生死鎖時(shí),本發(fā)明能夠檢測(cè)到業(yè)務(wù)虛擬機(jī)死鎖之后通過(guò)VMM在線恢復(fù)業(yè)務(wù)虛擬機(jī),避免將整個(gè)服務(wù)器重啟,及時(shí)恢復(fù)業(yè)務(wù)虛擬機(jī)的運(yùn)行, 實(shí)現(xiàn)虛擬機(jī)內(nèi)業(yè)務(wù)的快速恢復(fù),避免了業(yè)務(wù)虛擬機(jī)的業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。實(shí)施例二如圖3(a)所示,本發(fā)明實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法,該方法的執(zhí)行主體可以為虛擬機(jī)監(jiān)控器,具體的,可以是Xen Hypervisor,包括301、在虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源。302、當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程;所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄
存器信息。其中,所述第一虛擬處理器可以為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出的第一個(gè)虛擬處理器,或者,可以為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出的信用值和/或權(quán)重值最高的虛擬處理器,本發(fā)明實(shí)施例對(duì)此不作限定,可以根據(jù)實(shí)際應(yīng)用情況采用不同的調(diào)度算法進(jìn)行實(shí)現(xiàn),比如公平調(diào)度算法。在一種實(shí)現(xiàn)方式下,步驟301中的所述配置所述虛擬機(jī)的虛擬處理器資源,包括獲取預(yù)定個(gè)數(shù)的虛擬處理器,其中所述預(yù)定個(gè)數(shù)為死鎖時(shí)所述虛擬機(jī)所對(duì)應(yīng)的虛擬處理器的個(gè)數(shù);根據(jù)記錄的所述虛擬機(jī)所對(duì)應(yīng)的一個(gè)或多個(gè)虛擬處理器的第一資源信息,設(shè)置所述預(yù)定個(gè)數(shù)的虛擬處理器的第二資源信息,所述第一資源信息與所述第二資源信息用于表示分布情況相同的虛擬處理器資源,所述第一資源信息和所述第二資源信息都包括信用值和權(quán)重值。需要說(shuō)明的是,在本發(fā)明實(shí)施例中“第一虛擬處理器”中的“第一”沒(méi)有限定順序的意思,僅為方便區(qū)分而已。可見(jiàn),本發(fā)明實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法,從虛擬機(jī)監(jiān)控器一側(cè)來(lái)說(shuō),向所述虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源,再?gòu)呐渲猛瓿傻乃鎏摂M處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,使得虛擬機(jī)能夠根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程,相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電重啟的方法,本發(fā)明能夠不用重啟整個(gè)服務(wù)器而能夠及時(shí)恢復(fù)虛擬機(jī)的運(yùn)行,從而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。如圖3(b)所示,本發(fā)明實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法,該方法的執(zhí)行主體為虛擬機(jī),具體的,可以是特權(quán)虛擬機(jī),亦可以是業(yè)務(wù)虛擬機(jī),該方法可以包括311、響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷。具體的,響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷,結(jié)束所述虛擬機(jī)上運(yùn)行的業(yè)務(wù)312、收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息。313、在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。在一種實(shí)現(xiàn)方式下,步驟312可以為通過(guò)所述VMM從硬件層收集虛擬機(jī)的臨終遺在一種實(shí)現(xiàn)方式下,步驟313可以包括在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息,識(shí)別所述虛擬機(jī)死鎖前的運(yùn)行指令和地址,以便所述虛擬機(jī)恢復(fù)后繼續(xù)執(zhí)行所述運(yùn)行指令的下一條指令;需要說(shuō)明的是,這里的所述虛擬機(jī)死鎖前的運(yùn)行指令和地址,指的是所述虛擬機(jī)死鎖前的最后時(shí)刻所處理的運(yùn)行指令和地址。更為具體的,在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息初始化所述虛擬處理器的鏈表,并根據(jù)所述鏈表中的所述堆棧信息和所述寄存器信息識(shí)別所述虛擬機(jī)死鎖前的運(yùn)行指令和地址,以便所述虛擬機(jī)恢復(fù)后繼續(xù)執(zhí)行所述運(yùn)行指令的下一條指令??梢?jiàn),本發(fā)明實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法,從虛擬機(jī)一側(cè)來(lái)說(shuō),虛擬機(jī)響應(yīng)虛擬機(jī)監(jiān)控器發(fā)送的不可屏蔽中斷并且收集虛擬機(jī)的臨終遺言,在虛擬機(jī)監(jiān)控器完成引導(dǎo)程序的加載之后,虛擬機(jī)根據(jù)該臨終遺言來(lái)實(shí)現(xiàn)業(yè)務(wù)進(jìn)程的恢復(fù),相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電重啟的方法,本發(fā)明能夠不用重啟整個(gè)服務(wù)器而能夠及時(shí)恢復(fù)虛擬機(jī)的運(yùn)行,從而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。實(shí)施例三如圖4(a)所示,本發(fā)明實(shí)施例提供另一種虛擬機(jī)死鎖后的恢復(fù)方法,包括401、虛擬機(jī)監(jiān)控器VMM初始化監(jiān)測(cè)定時(shí)器。402、虛擬機(jī)VM按照預(yù)定的第一時(shí)間間隔產(chǎn)生心跳信息。這里的虛擬機(jī)VM可以是特權(quán)虛擬機(jī),也可以是業(yè)務(wù)虛擬機(jī)。403、VM在所述VMM提供的調(diào)用模式下,按照預(yù)定的第二時(shí)間間隔發(fā)送所述心跳信息至VMM。優(yōu)選的,該調(diào)用模式為超級(jí)調(diào)用。404、VMM接收VM按照預(yù)定的第二時(shí)間間隔所發(fā)送的心跳信息;VMM根據(jù)所述心跳信息,更新監(jiān)測(cè)定時(shí)器。需要說(shuō)明的是,步驟402,403和404中涉及的第一時(shí)間間隔和第二時(shí)間間隔可以是相同的時(shí)間間隔,也可以是不同的時(shí)間間隔。應(yīng)當(dāng)理解的是,本發(fā)明實(shí)施例中的時(shí)間間隔是可以根據(jù)實(shí)際應(yīng)用或經(jīng)驗(yàn)值靈活設(shè)置,本發(fā)明對(duì)此不做限定。405.VMM根據(jù)所述監(jiān)測(cè)定時(shí)器的更新頻率,判斷所述VM是否發(fā)生死鎖;在VM未發(fā)生死鎖的情況下,循環(huán)執(zhí)行步驟401-405,在VM發(fā)生死鎖的情況下,執(zhí)行以下步驟406-412。406、VMM向發(fā)生死鎖的所述VM發(fā)送不可屏蔽中斷。 407、VM響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷。其中,在本發(fā)明實(shí)施例中VM響應(yīng)所述不可屏蔽中斷,以結(jié)束所述VM上運(yùn)行的業(yè)務(wù),具體的,以結(jié)束所述VM上當(dāng)前運(yùn)行所有進(jìn)程。408,VM收集VM的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述VM對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息。具體的,VM通過(guò)VMM從硬件層收集臨終遺言,更具體而言,虛擬機(jī)通過(guò)VMM從硬件層的內(nèi)存中收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息,并且從硬件層的處理器的寄存器收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的寄存器信息。本實(shí)施例中,以處理器為CPU,虛擬處理器為VCPU舉例說(shuō)明,則虛擬機(jī)通過(guò)VMM從硬件層的內(nèi)存中收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)VCPU的堆棧信息,并且從CPU寄存器收集死鎖時(shí)虛擬機(jī)對(duì)應(yīng)的各個(gè)VCPU的寄存器信息。需要指出的,特殊虛擬機(jī)和業(yè)務(wù)虛擬機(jī)都可以通過(guò)VMM從硬件層收集臨終遺言, 本發(fā)明實(shí)施例適用于特殊虛擬機(jī)死鎖后的恢復(fù),同樣也適用于業(yè)務(wù)虛擬機(jī)死鎖后的恢復(fù)。在406之后,VMM配置VM的虛擬處理器資源,具體通過(guò)以下步驟409和410。409、VMM獲取預(yù)定個(gè)數(shù)的虛擬處理器;所述預(yù)定個(gè)數(shù)為死鎖時(shí)所述VM所對(duì)應(yīng)的虛擬處理器的個(gè)數(shù);需要說(shuō)明的是,本發(fā)明并不限定預(yù)定個(gè)數(shù)的虛擬處理器是否是死鎖前對(duì)應(yīng)的虛擬處理器,所述預(yù)定個(gè)數(shù)的虛擬處理器可以是VM發(fā)生死鎖時(shí)使用的預(yù)定個(gè)數(shù)的虛擬處理器, 也可以是重新獲取到的預(yù)定個(gè)數(shù)的虛擬處理器,例如,在虛擬處理器為VCPU的情況下,在 VM發(fā)生死鎖之前使用VCPU1、VCPU2和VCPU3,在409步驟中可以獲取到VCPU1、VCPU2和 VCPU3,也可以在409步驟中獲取到VCPU4、VCPU5和VCPU6。410.VMM根據(jù)記錄的VM所對(duì)應(yīng)的一個(gè)或多個(gè)虛擬處理器的第一資源信息,設(shè)置所述預(yù)定個(gè)數(shù)的虛擬處理器的第二資源信息,所述第一資源信息與所述第二資源信息用于表示分布情況相同的虛擬處理器資源,所述第一資源信息和所述第二資源信息都包括信用值和權(quán)重值。需要說(shuō)明的是,在本發(fā)明所有實(shí)施例中使用“第一” “第二”的說(shuō)法沒(méi)有限定順序的意思,僅為方便區(qū)分而已。在本發(fā)明實(shí)施例中,所述第一資源信息與所述第二資源信息分布情況相同,依照記錄的第一資源信息對(duì)重新獲取到的虛擬處理器的第二資源信息進(jìn)行設(shè)置。但是,在本發(fā)明實(shí)施例中并不限定重新獲取到的各個(gè)虛擬處理器與記錄的各個(gè)虛擬處理器的對(duì)應(yīng)關(guān)系,例如,若獲取預(yù)定個(gè)數(shù)的虛擬處理器為VCPU4、VCPU5和VCPU6,則在 410步驟中,需要將VCPU4、VCPU5和VCPU6的資源信息依次設(shè)置為記錄的死鎖時(shí)VCPU1、 VCPU2和VCPU3的資源信息,也可以將VCPU4、VCPU5和VCPU6的資源信息依次設(shè)置為記錄的死鎖時(shí)VCPU3、VCPU2和VCPUl的資源信息。更具體而言,在記錄的死鎖時(shí)VCPUl、VCPU2和VCPU3的信用值分別為20、30、50, 權(quán)重值分別25、35、40的情況下,當(dāng)獲取的預(yù)定個(gè)數(shù)的虛擬處理器為VCPU4、VCPU5和VCPU6 時(shí),可以將VCPU4、VCPU5和VCPU6的信用值分別設(shè)置為20、30、50,權(quán)重值分別設(shè)置為25、 35,40,也可以將VCPU4、VCPU5和VCPU6的信用值分別設(shè)置為50、20、30,權(quán)重值分別設(shè)置為 40、25、35。在本發(fā)明實(shí)施例中每一虛擬處理器的信用值和權(quán)重值可以相同也可不同,根據(jù)實(shí)際應(yīng)用所采用的算法而定,本發(fā)明對(duì)此不做限定。根據(jù)記錄的死鎖時(shí)虛擬機(jī)所對(duì)應(yīng)的各個(gè)虛擬處理器的資源信息來(lái)設(shè)置重新獲取到的虛擬處理器的資源信息,保證了重新獲取到的預(yù)定個(gè)數(shù)的虛擬處理器具有VM死鎖前的原始信息。如圖4(b)所示,在VMM(例如Xen Hypervisor)中,所有虛擬機(jī)相關(guān)信息都有特定的數(shù)據(jù)結(jié)構(gòu),每個(gè)虛擬機(jī)的數(shù)據(jù)結(jié)構(gòu)與vcpu的數(shù)據(jù)結(jié)構(gòu)相互引用。VMM(例如Xen Hypervisor)管理所有的數(shù)據(jù)結(jié)構(gòu),在虛擬機(jī)發(fā)生死鎖之后,直接回收虛擬機(jī)對(duì)應(yīng)的vcpu 鏈表,并根據(jù)虛擬機(jī)的數(shù)據(jù)結(jié)構(gòu)中記錄的VCPU配置個(gè)數(shù),重新初始化相應(yīng)個(gè)數(shù)的VCPU,設(shè)置與之前相當(dāng)?shù)男庞弥?、?quán)重等,重新進(jìn)行調(diào)度。例如,VMM(如Xen Hypervisor)回收特權(quán)虛擬機(jī)的VCPU資源,并重新初始化相應(yīng)個(gè)數(shù)的VCPU,初始化之后,將該特權(quán)虛擬機(jī)的內(nèi)核引導(dǎo)程序調(diào)度到第一個(gè)VCPU對(duì)象(簡(jiǎn)稱 SVCPUO)上加載運(yùn)行,VCPUO得到時(shí)間片并執(zhí)行該特權(quán)虛擬機(jī)的內(nèi)核引導(dǎo)程序。相應(yīng)的, 特權(quán)虛擬機(jī)的內(nèi)核啟動(dòng)成功后,加載原生驅(qū)動(dòng),根據(jù)臨終遺言信息恢復(fù)業(yè)務(wù)進(jìn)程,恢復(fù)前后端IO通道。當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,執(zhí)行以下411步驟進(jìn)行。411、VMM從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,其中,所述第一虛擬處理器可以為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出的第一個(gè)虛擬處理器,或者,為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出的信用值和/或權(quán)重值最高的虛擬處理器。第一個(gè)虛擬處理器也就是先配置完成的虛擬處理器,依據(jù)配置的先后順序而來(lái)。 另外,通過(guò)在預(yù)定個(gè)數(shù)的虛擬處理器中選擇信用值和權(quán)重值最高的虛擬處理器,或者信用值最高,或者權(quán)重值最高的虛擬處理器有利于內(nèi)核引導(dǎo)程序快速進(jìn)行加載。412、VM根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。具體的,在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息初始化所述虛擬處理器的鏈表,并根據(jù)所述鏈表中的所述堆棧信息和所述寄存器信息識(shí)別所述虛擬機(jī)死鎖前的運(yùn)行指令和地址,以便所述虛擬機(jī)恢復(fù)后繼續(xù)執(zhí)行所述運(yùn)行指令的下一條指令??梢?jiàn),本發(fā)明實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法,通過(guò)虛擬機(jī)發(fā)送的心跳信息來(lái)更新監(jiān)測(cè)定時(shí)器,這樣虛擬機(jī)監(jiān)控器能夠根據(jù)監(jiān)測(cè)定時(shí)器的更新頻率來(lái)判斷死鎖是否發(fā)生,為進(jìn)行死鎖恢復(fù)過(guò)程提供了基礎(chǔ);進(jìn)一步的,通過(guò)虛擬機(jī)監(jiān)控器向虛擬機(jī)發(fā)送不可屏蔽中斷配置所述虛擬機(jī)的虛擬處理器資源,并且從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,使得虛擬機(jī)能夠根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程,相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電重啟的方法,本發(fā)明能夠避免重啟整個(gè)服務(wù)器,及時(shí)恢復(fù)虛擬機(jī)的運(yùn)行,從而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。實(shí)施例四如圖5所示,本發(fā)明是實(shí)施例提供一種虛擬機(jī)監(jiān)控器50,包括中斷模擬器51、配置單元52和調(diào)度加載單元53。所述中斷模擬器51,用于在虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷。所述配置單元52,用于配置所述虛擬機(jī)的虛擬處理器資源。所述調(diào)度加載單元53,用于當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程;所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息。其中,所述第一虛擬處理器為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出的第一個(gè)虛擬處理器,或者,為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出的信用值和/或權(quán)重值最高的虛擬處理器。所述第一虛擬處理器的資源信息包括第一信用值和第一權(quán)重值。進(jìn)一步的,所述配置單元52具體用于,獲取預(yù)定個(gè)數(shù)的虛擬處理器,其中所述預(yù)定個(gè)數(shù)為死鎖時(shí)所述虛擬機(jī)所對(duì)應(yīng)的虛擬處理器的個(gè)數(shù);根據(jù)記錄的所述虛擬機(jī)所對(duì)應(yīng)的一個(gè)或多個(gè)虛擬處理器的第一資源信息,設(shè)置所述預(yù)定個(gè)數(shù)的虛擬處理器的第二資源信息,所述第一資源信息與所述第二資源信息用于表示分布情況相同的虛擬處理器資源,所述第一資源信息和所述第二資源信息都包括信用值和權(quán)重值。進(jìn)一步的,調(diào)度加載單元53具體用于當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出第一個(gè)虛擬處理器,或者,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出信用值和/或權(quán)重值最高的虛擬處理器并在所述虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。進(jìn)一步的,如圖6所示,所述虛擬機(jī)監(jiān)控器50還包括監(jiān)測(cè)定時(shí)器54,更新單元55 和判斷單元56。所述監(jiān)測(cè)定時(shí)器54,用于接收虛擬機(jī)70按照預(yù)定的第二時(shí)間間隔所發(fā)送的心跳信息。所述更新單元55,用于根據(jù)所述心跳信息,更新所述監(jiān)測(cè)定時(shí)器54。
14
所述判斷單元56,用于根據(jù)所述監(jiān)測(cè)定時(shí)器的更新頻率,判斷所述虛擬機(jī)70是否發(fā)生死鎖。所述中斷模擬器51,具體用于在所述判斷單元56確定所述虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)70發(fā)送不可屏蔽中斷。可見(jiàn),本發(fā)明實(shí)施例提供一種虛擬機(jī)監(jiān)控器,該虛擬機(jī)監(jiān)控器能夠根據(jù)虛擬機(jī)發(fā)送的心跳信息更新監(jiān)測(cè)定時(shí)器,并且根據(jù)監(jiān)測(cè)定時(shí)器的更新頻率判斷虛擬機(jī)是否發(fā)生死鎖,為死鎖恢復(fù)過(guò)程提供了基礎(chǔ),進(jìn)一步的,該虛擬機(jī)監(jiān)控器向虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源,并且從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,從而有助于虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程,相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電重啟的方法,本發(fā)明能夠避免重啟整個(gè)服務(wù)器,及時(shí)恢復(fù)虛擬機(jī)的運(yùn)行,從而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。如圖7所示,本發(fā)明是實(shí)施例提供一種虛擬機(jī)70,所述虛擬機(jī)70可以為特權(quán)虛擬機(jī)701,也可以為業(yè)務(wù)虛擬機(jī)702。所述虛擬機(jī)70包括中斷處理單元71、收集單元72和業(yè)務(wù)恢復(fù)單元73。所述中斷處理單元71,用于響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷;所述收集單元72,用于收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;所述業(yè)務(wù)恢復(fù)單元73,用于在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。進(jìn)一步的,所述收集單元72,具體用于通過(guò)所述VMM從硬件層收集虛擬機(jī)的臨終
、pfci 、.
JSH。所述業(yè)務(wù)恢復(fù)單元73,具體用于在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后, 根據(jù)死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息初始化虛擬處理器的鏈表,并根據(jù)所述鏈表中的所述堆棧信息和所述寄存器信息識(shí)別所述虛擬機(jī)死鎖前的運(yùn)行指令和地址,以便所述虛擬機(jī)恢復(fù)后繼續(xù)執(zhí)行所述運(yùn)行指令的下一條指令。進(jìn)一步的,如圖8所示,所述虛擬機(jī)70還包括心跳產(chǎn)生發(fā)送單元74。所述心跳產(chǎn)生發(fā)送單元74,用于按照預(yù)定的第一時(shí)間間隔產(chǎn)生心跳信息;在所述 VMM提供的調(diào)用模式下,按照預(yù)定的第二時(shí)間間隔向所述VMM發(fā)送所述心跳信息,以便所述 VMM判斷所述虛擬機(jī)是否發(fā)生死鎖。具體的,所述調(diào)用模式為超級(jí)調(diào)用??梢?jiàn),本發(fā)明實(shí)施例提供一種虛擬機(jī),該虛擬機(jī)按照預(yù)定的第一時(shí)間間隔產(chǎn)生心跳信息,以便虛擬機(jī)監(jiān)控器做出是否發(fā)生死鎖的判斷,為死鎖恢復(fù)提供了基礎(chǔ),進(jìn)一步的, 虛擬機(jī)響應(yīng)虛擬機(jī)監(jiān)控器發(fā)送的不可屏蔽中斷并且收集虛擬機(jī)的臨終遺言,在虛擬機(jī)監(jiān)控器完成引導(dǎo)程序的加載之后,從而能夠?qū)崿F(xiàn)業(yè)務(wù)進(jìn)程的恢復(fù),相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電重啟的方法,本發(fā)明能夠避免重啟整個(gè)服務(wù)器,及時(shí)恢復(fù)虛擬機(jī)的運(yùn)行,從而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。本發(fā)明實(shí)施例還提供一種宿主機(jī)90,包括虛擬機(jī)監(jiān)控器VMM50和特權(quán)虛擬機(jī) VM701,其中,所述VMM用于在特權(quán)虛擬機(jī)發(fā)生死鎖的情況下,向所述特權(quán)虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述特權(quán)虛擬機(jī)的虛擬處理器資源;當(dāng)所述特權(quán)虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述特權(quán)虛擬機(jī)對(duì)應(yīng)的內(nèi)核引導(dǎo)程序。所述特權(quán)虛擬機(jī)用于響應(yīng)VMM發(fā)送的不可屏蔽中斷;收集所述特權(quán)虛擬機(jī)的臨終遺言,所述臨終遺言包括死鎖時(shí)所述特權(quán)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;在所述特權(quán)虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述特權(quán)虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。另外,需要說(shuō)明的是在本發(fā)明實(shí)施例中,虛擬機(jī)監(jiān)控器和特權(quán)虛擬機(jī)配合而組成宿主機(jī),此外,宿主機(jī)也可以包括虛擬機(jī)監(jiān)控器,而不包括特權(quán)虛擬機(jī)??梢?jiàn),本發(fā)明實(shí)施例提供一種宿主機(jī),通過(guò)虛擬機(jī)監(jiān)控器向虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源,并且從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,使得虛擬機(jī)能夠根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程,在特權(quán)虛擬機(jī)發(fā)生死鎖的情況下,相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電重啟的方法,本發(fā)明能夠及時(shí)恢復(fù)特權(quán)虛擬機(jī)的運(yùn)行,從而避免了將整個(gè)服務(wù)器重啟,進(jìn)而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。如圖10所示,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)系統(tǒng),包括至少一個(gè)如前述實(shí)施例描述的計(jì)算節(jié)點(diǎn)100??梢?jiàn),本發(fā)明實(shí)施例提供的計(jì)算機(jī)系統(tǒng)中,具體是每個(gè)計(jì)算機(jī)節(jié)點(diǎn)中,虛擬機(jī)監(jiān)控器通過(guò)向虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源,虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言,再通過(guò)虛擬機(jī)監(jiān)控器從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度某個(gè)虛擬處理器(如前述的第一虛擬處理器或第二虛擬處理器)并在所述某個(gè)虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,使得虛擬機(jī)能夠根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程;一方面,當(dāng)特權(quán)虛擬機(jī)發(fā)生死鎖時(shí),相對(duì)于現(xiàn)有技術(shù)中使整個(gè)服務(wù)器下電的方法,本發(fā)明檢測(cè)到特權(quán)虛擬機(jī)死鎖之后通過(guò)VMM在線恢復(fù)特權(quán)虛擬機(jī),能夠及時(shí)恢復(fù)特權(quán)虛擬機(jī)的運(yùn)行,保持整個(gè)計(jì)算節(jié)點(diǎn)運(yùn)行狀態(tài),從而避免了將整個(gè)計(jì)算節(jié)點(diǎn)如整個(gè)服務(wù)器重啟,進(jìn)而避免了業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象;此外,由于特權(quán)虛擬機(jī)的快速恢復(fù),從而自動(dòng)恢復(fù)其他業(yè)務(wù)虛擬機(jī)的訪問(wèn)網(wǎng)絡(luò)與存儲(chǔ)等IO資源的 IO功能,進(jìn)而對(duì)其他業(yè)務(wù)虛擬機(jī)不造成影響;另一方面,當(dāng)業(yè)務(wù)虛擬機(jī)發(fā)生死鎖時(shí),本發(fā)明能夠檢測(cè)到業(yè)務(wù)虛擬機(jī)死鎖之后通過(guò)VMM在線恢復(fù)業(yè)務(wù)虛擬機(jī),避免將整個(gè)服務(wù)器重啟, 及時(shí)恢復(fù)業(yè)務(wù)虛擬機(jī)的運(yùn)行,實(shí)現(xiàn)虛擬機(jī)內(nèi)業(yè)務(wù)的快速恢復(fù),避免了業(yè)務(wù)虛擬機(jī)的業(yè)務(wù)災(zāi)難時(shí)間過(guò)長(zhǎng)、數(shù)據(jù)不同步等現(xiàn)象。需要說(shuō)明的是,前述實(shí)施例描述中所采用的第一、第二的說(shuō)法,沒(méi)有限定順序的意思,僅為方便區(qū)分而已。需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種虛擬機(jī)死鎖后的恢復(fù)方法,其特征在于,包括在虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源;當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述配置所述虛擬機(jī)的虛擬處理器資源,包括獲取預(yù)定個(gè)數(shù)的虛擬處理器,其中所述預(yù)定個(gè)數(shù)為死鎖時(shí)所述虛擬機(jī)所對(duì)應(yīng)的虛擬處理器的個(gè)數(shù);根據(jù)記錄的所述虛擬機(jī)所對(duì)應(yīng)的一個(gè)或多個(gè)虛擬處理器的第一資源信息,設(shè)置所述預(yù)定個(gè)數(shù)的虛擬處理器的第二資源信息,所述第一資源信息與所述第二資源信息用于表示分布情況相同的虛擬處理器資源,所述第一資源信息和所述第二資源信息都包括信用值和權(quán)重值。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述第一虛擬處理器為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出的第一個(gè)虛擬處理器,或者,為從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出的信用值和/或權(quán)重值最高的虛擬處理器。
4.根據(jù)權(quán)利要求I 3任一項(xiàng)所述的方法,其特征在于,所述方法還包括接收所述虛擬機(jī)按照預(yù)定的第二時(shí)間間隔所發(fā)送的心跳信息;根據(jù)所述心跳信息,更新監(jiān)測(cè)定時(shí)器;根據(jù)所述監(jiān)測(cè)定時(shí)器的更新頻率,判斷所述虛擬機(jī)是否發(fā)生死鎖,如果所述虛擬機(jī)發(fā)生死鎖,則執(zhí)行所述向所述虛擬機(jī)發(fā)送不可屏蔽中斷。
5.一種虛擬機(jī)死鎖后的恢復(fù)方法,其特征在于,包括響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷;收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述收集虛擬機(jī)的臨終遺言,包括通過(guò)所述VMM從硬件層收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程,包括在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息初始化所述虛擬處理器的鏈表,并根據(jù)所述鏈表中的所述堆棧信息和所述寄存器信息識(shí)別所述虛擬機(jī)死鎖前的運(yùn)行指令和地址,以便所述虛擬機(jī)恢復(fù)后繼續(xù)執(zhí)行所述運(yùn)行指令的下一條指令。
8.根據(jù)權(quán)利要求5至7任一項(xiàng)所述的方法,其特征在于,還包括按照預(yù)定的第一時(shí)間間隔產(chǎn)生心跳信息;在所述VMM提供的調(diào)用模式下,按照預(yù)定的第二時(shí)間間隔向所述VMM發(fā)送所述心跳信息,以便所述VMM判斷所述虛擬機(jī)是否發(fā)生死鎖。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述調(diào)用模式為超級(jí)調(diào)用。
10.一種虛擬機(jī)監(jiān)控器,其特征在于,包括中斷模擬器,用于在虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷;配置單元,用于配置所述虛擬機(jī)的虛擬處理器資源;調(diào)度加載單元,用于當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后, 從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。
11.根據(jù)權(quán)利要求10所述的虛擬機(jī)監(jiān)控器,其特征在于,所述配置單元具體用于,獲取預(yù)定個(gè)數(shù)的虛擬處理器,其中所述預(yù)定個(gè)數(shù)為死鎖時(shí)所述虛擬機(jī)所對(duì)應(yīng)的虛擬處理器的個(gè)數(shù);根據(jù)記錄的所述虛擬機(jī)所對(duì)應(yīng)的一個(gè)或多個(gè)虛擬處理器的第一資源信息,設(shè)置所述預(yù)定個(gè)數(shù)的虛擬處理器的第二資源信息,所述第一資源信息與所述第二資源信息用于表示分布情況相同的虛擬處理器資源,所述第一資源信息和所述第二資源信息都包括信用值和權(quán)重值。
12.根據(jù)權(quán)利要求10所述的虛擬機(jī)監(jiān)控器,其特征在于,所述調(diào)度加載單元具體用于當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中隨機(jī)調(diào)度出第一個(gè)虛擬處理器,或者,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度出信用值和/或權(quán)重值最高的虛擬處理器并在所述虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。
13.根據(jù)權(quán)利要求10 12任一項(xiàng)所述的虛擬機(jī)監(jiān)控器,其特征在于,所述虛擬機(jī)監(jiān)控器還包括監(jiān)測(cè)定時(shí)器,用于接收所述虛擬機(jī)按照預(yù)定的第二時(shí)間間隔所發(fā)送的心跳信息;更新單元,用于根據(jù)所述心跳信息,更新所述監(jiān)測(cè)定時(shí)器;判斷單元,用于根據(jù)所述監(jiān)測(cè)定時(shí)器的更新頻率,判斷所述虛擬機(jī)是否發(fā)生死鎖; 所述中斷模擬器具體用于在所述判斷單元確定所述虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷。
14.一種虛擬機(jī),其特征在于,包括中斷處理單元,用于響應(yīng)虛擬機(jī)監(jiān)控器VMM發(fā)送的不可屏蔽中斷;收集單元,用于收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;業(yè)務(wù)恢復(fù)單元,用于在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。
15.根據(jù)權(quán)利要求14所述的虛擬機(jī),其特征在于,所述收集單元具體用于通過(guò)所述VMM 從硬件層收集虛擬機(jī)的臨終遺言,其中所述臨終遺言包括死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息。
16.根據(jù)權(quán)利要求14所述的虛擬機(jī),其特征在于,所述業(yè)務(wù)恢復(fù)單元具體用于在所述虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)死鎖時(shí)所述虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息初始化所述虛擬處理器的鏈表,并根據(jù)所述鏈表中的所述堆棧信息和所述寄存器信息識(shí)別所述虛擬機(jī)死鎖前的運(yùn)行指令和地址,以便所述虛擬機(jī)恢復(fù)后繼續(xù)執(zhí)行所述運(yùn)行指令的下一條指令。
17.根據(jù)權(quán)利要求14至16任一項(xiàng)所述的虛擬機(jī),其特征在于,還包括心跳產(chǎn)生發(fā)送單元,用于按照預(yù)定的第一時(shí)間間隔產(chǎn)生心跳信息;在所述VMM提供的調(diào)用模式下,按照預(yù)定的第二時(shí)間間隔向所述VMM發(fā)送所述心跳信息,以便所述VMM判斷所述虛擬機(jī)是否發(fā)生死鎖。
18.一種宿主機(jī),其特征在于,包括虛擬機(jī)監(jiān)控器和特權(quán)虛擬機(jī),其中,所述虛擬機(jī)監(jiān)控器為權(quán)利要求10 13中任一項(xiàng)權(quán)利要求所述的虛擬機(jī)監(jiān)控器,所述特權(quán)虛擬機(jī)為權(quán)利要求14 17中任一項(xiàng)權(quán)利要求所述的虛擬機(jī)。
19.一種計(jì)算節(jié)點(diǎn),其特征在于,所述計(jì)算節(jié)點(diǎn)包括硬件層、運(yùn)行在所述硬件層之上的虛擬機(jī)監(jiān)控器VMM、以及運(yùn)行在所述VMM之上的虛擬機(jī);所述虛擬機(jī)包括特權(quán)虛擬機(jī)和至少一個(gè)業(yè)務(wù)虛擬機(jī),其中所述VMM用于在所述特權(quán)虛擬機(jī)發(fā)生死鎖的情況下,向所述特權(quán)虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述特權(quán)虛擬機(jī)的虛擬處理器資源;當(dāng)所述特權(quán)虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述特權(quán)虛擬機(jī)對(duì)應(yīng)的內(nèi)核引導(dǎo)程序;所述特權(quán)虛擬機(jī)用于響應(yīng)所述VMM發(fā)送的不可屏蔽中斷;收集所述特權(quán)虛擬機(jī)的臨終遺言,所述臨終遺言包括死鎖時(shí)所述特權(quán)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;在所述特權(quán)虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述特權(quán)虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述VMM還用于在所述業(yè)務(wù)虛擬機(jī)發(fā)生死鎖的情況下,向所述業(yè)務(wù)虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述業(yè)務(wù)虛擬機(jī)的虛擬處理器資源;當(dāng)所述業(yè)務(wù)虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第二虛擬處理器并在所述第二虛擬處理器上加載所述業(yè)務(wù)虛擬機(jī)對(duì)應(yīng)的內(nèi)核引導(dǎo)程序;所述業(yè)務(wù)虛擬機(jī)用于響應(yīng)所述VMM發(fā)送的不可屏蔽中斷;收集所述業(yè)務(wù)虛擬機(jī)的臨終遺言,所述臨終遺言包括死鎖時(shí)所述業(yè)務(wù)虛擬機(jī)對(duì)應(yīng)的各個(gè)虛擬處理器的堆棧信息和寄存器信息;在所述業(yè)務(wù)虛擬機(jī)的內(nèi)核引導(dǎo)程序被加載完成之后,根據(jù)所述業(yè)務(wù)虛擬機(jī)的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。
21.一種計(jì)算機(jī)系統(tǒng),其特征在于,包括至少一個(gè)如權(quán)利要求19 20任一項(xiàng)所述的計(jì)算節(jié)點(diǎn)。
全文摘要
本發(fā)明實(shí)施例提供一種虛擬機(jī)死鎖后的恢復(fù)方法、裝置及系統(tǒng),用以在一定程度上,避免重啟整個(gè)服務(wù)器所帶來(lái)的問(wèn)題。該方法包括在虛擬機(jī)發(fā)生死鎖的情況下,向所述虛擬機(jī)發(fā)送不可屏蔽中斷并配置所述虛擬機(jī)的虛擬處理器資源;當(dāng)所述虛擬機(jī)響應(yīng)所述不可屏蔽中斷并收集完成臨終遺言之后,從配置完成的所述虛擬處理器資源包括的一個(gè)或多個(gè)虛擬處理器中調(diào)度第一虛擬處理器并在所述第一虛擬處理器上加載所述虛擬機(jī)的內(nèi)核引導(dǎo)程序,以便所述虛擬機(jī)根據(jù)收集的臨終遺言恢復(fù)業(yè)務(wù)進(jìn)程。本發(fā)明實(shí)施例適用于虛擬機(jī)發(fā)生死鎖的情景。
文檔編號(hào)G06F11/07GK102609324SQ201210004749
公開(kāi)日2012年7月25日 申請(qǐng)日期2012年1月9日 優(yōu)先權(quán)日2012年1月9日
發(fā)明者范良 申請(qǐng)人:華為技術(shù)有限公司