專利名稱:遷移虛擬機的系統(tǒng)、方法和程序的制作方法
技術領域:
本發(fā)明涉及一般涉及計算機系統(tǒng),更具體地,涉及虛擬機在同一實計算機內從一個邏輯分區(qū)到另一個邏輯分區(qū)、或從一個實計算機到另一個實計算機的遷移。
背景技術:
現(xiàn)今,虛擬機操作系統(tǒng)是廣為人知的,其包括一系統(tǒng)管理程序(hypervisor)及由系統(tǒng)管理程序形成的各單獨的虛擬機。在IBM z/VM操作系統(tǒng)中,系統(tǒng)管理程序稱作控制程序(“CP”)。每一虛擬機還稱作一“用戶部分”或“客戶”(guest)。虛擬機是諸如處理器、存儲器、存儲設備和I/O(即網卡、打印機和顯示器)的計算機資源的虛擬共享/分區(qū)。在每一虛擬機上執(zhí)行/運行著一客戶操作系統(tǒng)。在每一客戶操作系統(tǒng)上運行著一個或多個應用。
還已知通過對實計算機資源進行邏輯劃分來對該計算機進行邏輯分區(qū)。用戶定義每一邏輯分區(qū)(“LPAR”),即用于每一LPAR的處理器、存儲器和存儲設備的數量??上蛎恳籐PAR分配特定的實計算機資源或全部計算機資源的份額。然后,在某些計算機中,單獨的系統(tǒng)管理程序被加載到每一LPAR中,以在每一邏輯分區(qū)內形成多個虛擬機。每一個這樣的虛擬機是分配給它的LPAR的資源的虛擬共享。
即使每一應用和客戶操作系統(tǒng)在一虛擬機中執(zhí)行,它們象正運行于它們自己專用的、實計算機上一樣進行操作。下面是已知虛擬機怎樣使用它的處理器或處理器時間的份額來執(zhí)行工作項目的示例。每一虛擬機都有它自己的同步或鎖定功能、工作隊列分配功能、工作調度程序和分配給該虛擬機的工作項目或任務的相關隊列。在這一示例中,同步或鎖定功能、工作隊列分配功能、工作調度程序和工作隊列都是該虛擬機專用的。同步或鎖定功能管理工作隊列的鎖定,以控制哪些工作項目必須順序運行而哪些任務可并行運行。工作隊列分配功能是該虛擬機內的程序功能,其在由該虛擬機生成工作項目時將該工作項目添加到該虛擬機的工作隊列中?;诜峙渌惴▽⒃摴ぷ黜椖刻砑拥疥犃兄械囊晃恢?。分配算法可以考慮這樣的因素,如每一工作項目的相對優(yōu)先級別,以及工作項目被創(chuàng)建的順序,即先入先出。在隊列中的每一工作項目包括指示其類型、及因此該虛擬機內的哪個功能最適于處理它的信息?!肮ぷ髡{度程序”是調度它的隊列中的每一工作項目以便執(zhí)行的程序功能。工作調度程序將工作項目傳遞給該虛擬機內的適當功能以由虛擬處理器來執(zhí)行。
還已知多個虛擬機共享一工作隊列以在這些虛擬機和它們各自的實處理器份額之間分配工作項目。利用一服務器虛擬機來為其他“工作”虛擬機“容納”(host)這一共享工作隊列。該共享工作隊列駐留于服務器虛擬機專用的存儲器中。當一工作虛擬機創(chuàng)建新的工作項目,且用于這一工作虛擬機的工作隊列分配功能決定將這一新的工作項目發(fā)送到服務器虛擬機時,它使用一通信協(xié)議(例如TCP/IP)及虛擬I/O設備驅動程序將此工作項目發(fā)送到這一服務器虛擬機。然后,服務器虛擬機以該服務器虛擬機所確定的順序將該新的工作項目放置在共享工作隊列中。當一工作虛擬機內的虛擬CPU可用于執(zhí)行共享工作隊列中的工作項目時,這一工作虛擬機內的工作調度程序使用一通信協(xié)議和虛擬I/O設備驅動程序來向服務器虛擬機作出請求。作為響應,服務器虛擬機使用一通信協(xié)議向作出此請求的工作虛擬機發(fā)送工作項目。盡管這一安排提供了共享的工作隊列,但它需要很高開銷的通信協(xié)議來將工作項目發(fā)送到工作隊列和從工作隊列獲得工作項目。
Csaey等人于2003年4月29日提交的序列號10/425,470、題為“Management of Virtual Machines to Utilize Shared Resources”(管理虛擬機以利用共享資源)的美國專利申請公開了當應用受資源限制時一虛擬機包括它的操作系統(tǒng)和應用的“克隆”。這將增加分配給該(些)應用的總計算機資源的比例,因為現(xiàn)在有一附加虛擬機(帶有它的資源份額)運行該(些)應用。在此引入這一專利申請,作為本公開的一部分,以供參考。Donovan等人于2003年4月29日提交的序列號10/425,468、題為“Management of Locks in a Virtual Machine Environment”(對虛擬機環(huán)境中鎖定的管理)的美國專利申請公開了一種具有由多個虛擬機共享的工作隊列和工作隊列鎖定結構的共享存儲器。該多個虛擬機可直接訪問該共享的鎖定結構和共享的工作隊列。在此引入這一專利申請,作為本公開的一部分,以供參考。
已知計算機包括插入該計算機中的物理通信卡。當通信卡接收到來自另一計算機的消息時,該通信卡向該計算機內的CPU發(fā)送中斷。作為響應,CPU將調用該計算機內的一程序功能以取出并處理該消息??蓪⑽锢硗ㄐ趴ㄒ瞥⒉迦肓硪挥嬎銠C。任何包含在物理通信卡內的存儲器中且還未由該初始計算機讀取的消息對于該另一個人計算機將是不可用的。此外,在物理通信卡從初始計算機到另一個人計算機的移動期間發(fā)送給物理通信卡的消息將會丟失。
已知計算機包括向(盤)存儲設備寫數據和從(盤)存儲設備讀數據的物理塊I/O卡。在寫模式期間,計算機的CPU將數據塊傳遞到塊I/O,并請求將其寫入存儲設備。作為響應,塊I/O卡將數據寫入存儲設備,然后向CPU發(fā)送回中斷,指示I/O完成。當接收到中斷時,CPU得知數據塊已被成功寫入存儲設備,隨后可相應地繼續(xù)進行,例如從存儲器中擦除該數據。在讀模式期間,CPU請求塊I/O卡從存儲設備中讀取特定數據塊。作為響應,塊I/O卡從存儲設備中讀出該數據,并將其寫入可由CPU訪問的緩沖器中。然后,塊I/O卡向CPU發(fā)送回中斷,指示I/O完成。在接收到中斷之后,CPU可從緩沖器中讀出數據??梢瞥锢韷KI/O卡,并將其插入另一計算機中。然而在物理塊I/O卡從該初始計算機到該另一個人計算機的移動期間,在當前在物理塊I/O卡上進行中的任何I/O請求都會丟失。
已知將虛擬機從一個實計算機到另一個實計算機和在一個實計算機內從一個LPAR到另一個LPAR遷移。Adesse公司的單系統(tǒng)映象(SingleSytem Image)可保存虛擬機的狀態(tài)并遷移此虛擬機,但只是在不存在進行中的I/O且該虛擬機沒有通信設備時才可這樣。Brookhaven NationalLaboratory的題為“Guest Save/Restore Facility”(客戶保存/恢復工具)的研究項目可保存虛擬機的狀態(tài)并在未來的某個時間恢復此虛擬機,但只是在不存在進行中的I/O且該虛擬機沒有通信設備時才可這樣。Mirasoft公司的分布式設備可保存虛擬機的狀態(tài)并遷移此虛擬機,但只是在不存在進行中的I/O且該虛擬機沒有通信設備時才可這樣。利用這三種產品,不允許虛擬機間的通信。不具有處理“進行中的”I/O的能力,所述“進行中的”I/O即從一個虛擬機發(fā)送到另一個虛擬機、但該另一個虛擬機還未接收到或處理的通信和數據。
VMWare公司的VMMotion程序將應用,包括它的程序代碼、狀態(tài)信息、寄存器、存儲器等從一個實計算機遷移到另一個實計算機。該應用在其中執(zhí)行的計算機系統(tǒng)使用通信設備,該通信設備包括虛擬網絡接口卡。在該應用遷移之前,將進入的通信停止一段時間且將先前的通信完成,以便在遷移期間不會存在“進行中的”通信。該應用在其中執(zhí)行的計算機系統(tǒng)還使用用于存儲塊數據的盤驅動程序和盤。在應用的遷移之前,將盤I/O操作停止一段時間且將先前的盤I/O操作完成,以便在遷移期間不會存在未解決的I/O。
當前,有一針對于將一Linux映象從一個實計算機移動到另一個實計算機的稱為“Partition映象”的開放源碼項目。它將Linux映象保存到盤中,然后這一映象可被遷移到另一計算機。但是,在保存該映象之前,所有通信和盤I/O必須完成,并停止。此外,一Tivoli系統(tǒng)自動化(TivoliSystem Automation)程序將應用從一個計算機轉移到另一個計算機。該應用在其中執(zhí)行的計算機系統(tǒng)使用用于從源計算機到目標計算機的通信的物理卡。該計算機系統(tǒng)使用用于存儲數據塊的設備驅動程序和盤。在遷移之前,將通信設備停止一段時間且將先前的通信完成,以便在遷移期間不會存在進行中的通信。同樣,將盤I/O操作在遷移之前停止一段時間且將先前的I/O請求完成,以便在遷移期間不會存在未解決的I/O。
本發(fā)明的目的在于有效地將虛擬機在同一實計算機內從一個邏輯分區(qū)遷移到另一個邏輯分區(qū),或從一個實計算機遷移到另一個實計算機。
本發(fā)明的另一目的在于在對于一虛擬機的通信正在進行中時遷移該虛擬機,而不丟失通信或將隨后的通信停止一可覺察的時間量。
發(fā)明內容
本發(fā)明在于用于將第一虛擬機和通信隊列從第一實計算機遷移到第二實計算機或從同一實計算機內的第一LPAR遷移到第二LPAR的系統(tǒng)、計算機程序產品和方法。在遷移之前,第一虛擬機包括在該第一虛擬機專用的第一專用存儲器中的操作系統(tǒng)和應用。在遷移之前,通信隊列駐留于由第一計算機或第一LPAR中的第一虛擬機和第二虛擬機共享的第一共享存儲器中。將第一虛擬機在第一計算機或第一LPAR中停止。第一計算機或第一LPAR將操作系統(tǒng)和應用傳送給第二計算機或第二LPAR,而第二計算機或第二LPAR將該操作系統(tǒng)和應用寫入第二計算機或第二LPAR中第一虛擬機專用的第二專用存儲器中。第一計算機或第一LPAR將通信隊列傳送給第二計算機或第二LPAR,而第二計算機或第二LPAR將該通信隊列寫入由第二計算機或第二LPAR中的第二、第三和第四虛擬機共享的第二共享存儲器中。將第一虛擬機在第二計算機或第二LPAR中重新開始。
根據本發(fā)明的另一個特征,提供一種用于將第一虛擬機從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的系統(tǒng)、方法和程序產品。在遷移之前,第一虛擬機包括在該第一虛擬機專用的第一專用存儲器中的操作系統(tǒng)和應用。通信隊列駐留于由第一計算機或第一LPAR中的第一虛擬機和第二虛擬機共享的第一共享存儲器中。將該操作系統(tǒng)和應用從第一專用存儲器復制到由第一和第二計算機或第一和第二LPAR共享的共享存儲設備。將通信隊列從第一共享存儲器復制到該共享存儲設備。向第二實計算機或第二LPAR通知該共享存儲設備中的操作系統(tǒng)、應用和通信隊列。將操作系統(tǒng)和應用從該共享存儲設備復制到第二計算機或第二LPAR中第一虛擬機專用的第二專用存儲器。在第二計算機或第二LPAR中重新開始第一虛擬機。將通信隊列從共享存儲設備復制到由第二計算機或第二LPAR中的第一、第三和第四虛擬機共享的第二共享存儲器。
根據本發(fā)明的另一特征,提供一種用于將第一虛擬機從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的系統(tǒng)、方法和程序產品。在遷移之前,第一虛擬機包括在該第一虛擬機專用的第一專用存儲器中的操作系統(tǒng)和應用。第一虛擬機的通信隊列駐留于由第一和第二計算機或第一和第二LPAR共享的共享存儲器中。將該操作系統(tǒng)和應用從第一專用存儲器復制到該共享存儲器。將操作系統(tǒng)和應用從該共享存儲器復制到第二計算機或第二LPAR中第一虛擬機專用的第二專用存儲器。然后,將第一虛擬機在第二計算機或第二LPAR中重新開始。
圖1是具有兩個邏輯分區(qū)、每一邏輯分區(qū)中的各自的共享存儲器和多個虛擬機的實計算機的方框圖,且其示出根據本發(fā)明一個實施例用于將虛擬機從一個邏輯分區(qū)遷移到另一邏輯分區(qū)的過程。
圖2是兩個單獨的實計算機、每一實計算機中各自的共享存儲器和多個虛擬機的方框圖,且其示出根據本發(fā)明另一實施例用于將虛擬機從一個實計算機遷移到另一實計算機的過程。
圖3是具有兩個邏輯分區(qū)、每一邏輯分區(qū)中的多個虛擬機、和由這兩個邏輯分區(qū)共享的存儲器的實計算機的方框圖,且其示出根據本發(fā)明另一實施例用于將虛擬機從一個邏輯分區(qū)遷移到另一邏輯分區(qū)的過程。
圖4是兩個單獨的實計算機、每一實計算機中的多個虛擬機、及由這兩個實計算機共享的存儲器的方框圖,且其示出根據本發(fā)明另一實施例用于將虛擬機從一個實計算機遷移到另一實計算機的過程。
圖5是具有兩個邏輯分區(qū)、每一邏輯分區(qū)中的各自的共享存儲器、由這兩個邏輯分區(qū)共享的存儲設備、和多個虛擬機的實計算機的方框圖,且其示出根據本發(fā)明一個實施例用于將虛擬機從一個邏輯分區(qū)遷移到另一邏輯分區(qū)的過程。
圖6是兩個單獨的實計算機、每一實計算機中各自的共享存儲器、由這兩個計算機共享的存儲設備、和多個虛擬機的方框圖,且其示出根據本發(fā)明另一實施例用于將虛擬機從一個實計算機遷移到另一實計算機的過程。
圖7是示出圖1、2、3、4、5和6的共享存儲器中用于虛擬機的通信隊列和共享塊存儲器的方框圖。
圖8是示出圖1、2、3、4、5和6的共享存儲器中用于虛擬機的通信隊列和專用塊存儲器的方框圖。
圖9是示出圖1和2的計算機系統(tǒng)內虛擬機遷移過程的流程圖。
圖10是示出圖3和4的計算機系統(tǒng)內虛擬機遷移過程的流程圖。
圖11是示出圖5和6的計算機系統(tǒng)內虛擬機遷移過程的流程圖。
具體實施例方式
現(xiàn)在,參照附圖詳細描述本發(fā)明,在這些附圖中相同的參考標號指示相同的部件。圖1示出根據本發(fā)明的一個實施例一般地表示為110的計算機系統(tǒng)。計算機系統(tǒng)110包括含有CPU 23和、RAM 24、邏輯分區(qū)程序25、網絡端口(未示出)和操作員控制臺27的實/物理計算機20。計算機系統(tǒng)110還包括外部(盤)存儲設備26。作為舉例,實計算機20可以是IBM z系列主機,盡管本發(fā)明也可實現(xiàn)于其他服務器計算機或個人計算機中。在圖1所示的實施例中,程序25將實計算機20劃分為邏輯分區(qū)(“LPAR”)30和31,盡管如果需要的話,程序25可將計算機20劃分為更多的邏輯分區(qū)。LPAR是計算機20的實計算機資源的邏輯分區(qū)。例如,如果計算機20包括8個處理器,則可向LPAR 30分配4個處理器,向LPAR31分配其他4個處理器。程序25還在LPAR 30和LPAR 31之間劃分總的存儲器24,通常作為“虛擬”存儲器。在所示出的實施例中,LPAR 30和LPAR 31都可訪問/共享存儲設備26,用于諸如存儲較大文件的一般目的和用于一旦緊急停機迫近時的應急存儲器備份?!疤摂M”存儲器分配是虛擬存儲器地址范圍到每一LPAR的基本分配,而不管在實存儲器中的物理位置。程序25依據地址轉換表將每一LPAR所使用的虛擬地址轉換為其處存儲有實際數據的實存儲器地址。這兩個LPAR中的虛擬機按照虛擬地址訪問共享存儲設備26。
系統(tǒng)管理程序40和41分別在LPAR 30和31上執(zhí)行。系統(tǒng)管理程序40將LPAR 30劃分為多個虛擬機33、34和35。換句話說,系統(tǒng)管理程序40對LPAR 30的計算機資源(包括處理器23和存儲器24的份額)進行邏輯劃分和虛擬化,以形成用于每一虛擬機33-35的平臺。實處理器23的虛擬共享是分配給LPAR 30的處理器的時間共享。實存儲器24的虛擬共享是映射到RAM 24的虛擬地址范圍。系統(tǒng)管理程序40為LPAR 30中的每一虛擬機分配映射到RAM 24的(虛擬)一專用存儲器(“VPM”)范圍。系統(tǒng)管理程序40還為LPAR 30中的所有虛擬機33-35定義映射到RAM24的(虛擬)共享存儲器50。當一虛擬機33-35對它的(虛擬)專用存儲器或虛擬共享存儲器50進行尋址時,系統(tǒng)管理程序40將虛擬存儲器地址轉換為實存儲器24的實地址。(如果需要,系統(tǒng)管理程序40還可定義只由LPAR 30上的虛擬機33-35使用的共享存儲設備26的一部分,以及只由LPAR 31上的虛擬機使用的共享存儲設備26的另一部分。)對于LPAR 30中的每一虛擬機,客戶操作系統(tǒng)和應用執(zhí)行于分配給該虛擬機的(虛擬)處理器之上??蛻舨僮飨到y(tǒng)43-45分別執(zhí)行于虛擬機33-35之上,而應用53-55分別執(zhí)行于客戶操作系統(tǒng)43-45之上。然而,可以有多個應用執(zhí)行于每一客戶操作系統(tǒng)上。作為舉例,客戶操作系統(tǒng)可以是Linux(Linus Torvalds的商標)操作系統(tǒng)或IBM CMS操作系統(tǒng)。其他客戶操作系統(tǒng)也是可行的,例如Microsoft Windows(tm)操作系統(tǒng)、Unix(tm)操作系統(tǒng)、Sun Microsystems Solaris(tm)操作系統(tǒng)、或Hewlett Packard HPUX操作系統(tǒng)。作為舉例,應用53-55可以是IBM DB2數據庫管理應用、IBM Websphere應用、或其他應用。應用53-55的性質不構成本發(fā)明的一部分,除非它們可產生到相同或不同實計算機上的其他虛擬機的通信或作為來自這些其他虛擬機的通信的目標。此外,應用53-55可請求從“塊”存儲器中讀取數據塊或向其寫入數據塊,在某些情況下,是請求從它們自己專用的塊存儲器中讀取數據塊或向其寫入數據塊,而在另一些情況下,是請求從同一LPAR中的其他虛擬機的塊存儲器中讀取數據塊或向其寫入數據塊。
LPAR 30中每一虛擬機的客戶操作系統(tǒng)和應用存儲于分配給該虛擬機的專用存儲器中。該虛擬機的專用存儲器還包含由客戶操作系統(tǒng)、應用、用于該操作系統(tǒng)和應用的程序狀態(tài)字(也稱作“CPU狀態(tài)”)、及在該客戶操作系統(tǒng)和應用的處理期間所使用的數據寄存器所產生的數據。程序狀態(tài)字指示程序中的哪一行當前正在執(zhí)行或接下來將要執(zhí)行。程序狀態(tài)字還指示哪些中斷是允許的、哪些指令是允許的、及哪些存儲器可以訪問。
同樣,系統(tǒng)管理程序41最初將LPAR 31劃分為虛擬機36和37,隨后,在虛擬機33M、34M和35M從LPAR 30遷移來之后進一步將LPAR31劃分為附加的虛擬機33M、34M和35M。換句話說,系統(tǒng)管理程序41對LPAR 31的計算機資源(包括處理器23、存儲器24和存儲設備26的份額)進行邏輯劃分和虛擬化,以形成每一個虛擬機36、37、33M、34M和35M。系統(tǒng)管理程序41為這些虛擬機中的每一個分配映射到RAM 24的(虛擬)專用存儲器(“VPM”)。系統(tǒng)管理程序41還為LPAR 31中的所有虛擬機36、37、33M、34M和35M定義映射到RAM 24的(虛擬)共享存儲器51。當虛擬機36、37、33M、34M或35M或虛擬機36、37、33M、34M或35M中的應用對它的(虛擬)專用存儲器或虛擬共享存儲器51進行尋址時,系統(tǒng)管理程序41將虛擬存儲器地址轉換為實存儲器24的實地址。
對于LPAR 31中的每一虛擬機,客戶操作系統(tǒng)和應用執(zhí)行于分配給該虛擬機的處理器之上??蛻舨僮飨到y(tǒng)46和47分別執(zhí)行于虛擬機36和37之上,而應用56和57分別執(zhí)行于客戶操作系統(tǒng)46和47之上。然而,可以有多個應用執(zhí)行于每一客戶操作系統(tǒng)上。作為舉例,客戶操作系統(tǒng)可以是Linux(Linus Torvalds的商標)操作系統(tǒng)或IBM CMS操作系統(tǒng)。其他客戶操作系統(tǒng)也是可行的,例如Microsoft Windows(tm)操作系統(tǒng)、Unix(tm)操作系統(tǒng)、Sun Microsystems Solaris(tm)操作系統(tǒng)、或Hewlett Packard HPUX操作系統(tǒng)。作為舉例,應用56-57可以是IBM DB2數據庫管理應用、IBM Websphere應用、或其他應用。應用56-57的性質不構成本發(fā)明的一部分,除非它們可產生到相同或不同實計算機上的其他虛擬機的通信或作為來自這些其他虛擬機的通信的目標。此外,應用56-57可請求從“塊”存儲器中讀取數據塊或向其寫入數據塊,在某些情況下,是請求從它們自己專用的塊存儲器中讀取數據塊或向其寫入數據塊,而在另一些情況下,是請求從同一LPAR中的其他虛擬機的塊存儲器中讀取數據塊或向其寫入數據塊。
LPAR 31中每一虛擬機的客戶操作系統(tǒng)和應用存儲于分配給該虛擬機的專用存儲器中。該虛擬機的專用存儲器還包含由客戶操作系統(tǒng)、應用、用于該操作系統(tǒng)和應用的程序狀態(tài)字(也稱作“CPU狀態(tài)”)、及在該客戶操作系統(tǒng)和應用的處理期間所使用的數據寄存器所產生的數據。
作為舉例,系統(tǒng)管理程序40和41中的每一個可包括現(xiàn)有IBM z/VM版本4.2.0或4.3.0虛擬機操作系統(tǒng),該虛擬機操作系統(tǒng)具有從LPAR或實計算機形成每一虛擬機的當前能力。但是,系統(tǒng)管理程序40和41還包括根據本發(fā)明遷移虛擬機和相關的通信隊列和塊存儲器的新的程序手段,如下面所描述的那樣。現(xiàn)有z/VM 4.2.0操作系統(tǒng)的詳情在IBM出版物“z/VM4.2.0通用信息”(文檔號GC24-5991-03)中進行了公開,該出版物可從國際商業(yè)機器公司,信箱29570,IBM出版物,Raleigh,北卡羅萊納州27626-0570,或在萬維網上的www.IBM.com/shop/publications/order處獲得。在此引入該出版物,作為本公開的一部分,以供參考。在z/VM操作系統(tǒng)中,系統(tǒng)管理程序40和41稱作控制程序(“CP”),“虛擬機”也稱作“客戶虛擬機”。
如上面所解釋的,系統(tǒng)管理程序40定義和管理由LPAR 30上的所有虛擬機33-35所共享的共享存儲器區(qū)域50。所有虛擬機33-35可按適當地址直接訪問共享存儲器50和存儲于該共享存儲器中的數據結構,如果它們已知該地址的話。但是,LPAR 31中的虛擬機(即虛擬機36和37及已遷移時的33M、34M和35M)不能訪問共享存儲器50。對于虛擬機33-35中的每一個,在共享存儲器50中存在各自的通信隊列和各自的塊存儲器。為了簡單起見,圖1只示出用于虛擬機35的一個通信隊列52和一個塊存儲器54,盡管其他虛擬機33和34中的每一個將同樣具有它們自己各自的通信隊列和塊存儲器。
在所示出的實施例中,如下面參照圖7所解釋的,通信隊列52是虛擬機33和34可以通信形式向其提供工作項目及虛擬機35可從其獲取工作項目以進行處理的工作隊列。這樣,虛擬機33和34可與虛擬機35進行通信。同樣,用于虛擬機33的通信隊列允許虛擬機34和35通過提供工作項目與虛擬機33進行通信,且用于虛擬機34的通信隊列允許虛擬機33和35通過提供工作項目與虛擬機34進行通信。
在所示出的其中虛擬機33-35使用共享存儲器50即RAM用于存儲程序和數據的實施例中,塊存儲器54是共享存儲器50中包含文件和目錄的存儲器區(qū)域。每一目錄列出塊存儲器54的內容。在本發(fā)明的其中塊存儲器54是共享的一個實施例中,每一虛擬機33-35可將數據塊寫入塊存儲器54及從塊存儲器54中讀出數據塊。在本發(fā)明的其中塊存儲器是專用的另一實施例中,LPAR 30中的每一塊存儲器專用于虛擬機33-35中的各自的虛擬機,以便只有那一個虛擬機能夠將數據塊寫入該塊存儲器和從該塊存儲器中讀出數據塊。
同樣,系統(tǒng)管理程序41定義和管理共享存儲器區(qū)域51,該共享存儲器區(qū)域由LPAR 31上的所有虛擬機,即36和37、及遷移后的33M、34M和35M所共享。所有虛擬機36和37、及遷移后的33M、34M和35M可在它們已知地址時,按照適當的地址直接訪問共享存儲器51和存儲在該共享存儲器中的數據結構。然而,LPAR 30中的虛擬機(即虛擬機33-35)不能訪問共享存儲器51。對于每一個虛擬機36和37、及遷移后的33M、34M和35M,在共享存儲器51中存在各自的通信隊列和各自的塊存儲器。
為了簡單起見,圖1只示出用于遷移后的虛擬機35M的遷移后通信隊列52-3和遷移后塊存儲器54-3,盡管LPAR 31上其他每一個虛擬機將同樣具有它們自己各自的通信隊列和塊存儲器。
在所示出的實施例中,如下面參照圖7所解釋的,通信隊列52-1是通信隊列52的遷移后副本。在遷移之后,通信隊列52-1是虛擬機33M和34M可以通信形式向其提供工作項目及虛擬機35M可從其獲取工作項目以進行處理的工作隊列。這樣,虛擬機33M和34M可與虛擬機35M進行通信。同樣,用于虛擬機36的通信隊列允許虛擬機37與虛擬機36進行通信,且用于虛擬機37的通信隊列允許虛擬機36與虛擬機37進行通信。虛擬機36和37還可通過系統(tǒng)管理程序41發(fā)現(xiàn)遷移后的虛擬機35M和其通信隊列的位置,且此后向遷移后的虛擬機35的通信隊列提供工作項目。反過來,遷移后的虛擬機35M可通過系統(tǒng)管理程序41發(fā)現(xiàn)虛擬機36和37及它們的通信隊列的位置,且此后向虛擬機36和37的通信隊列提供工作項目。同樣,遷移后的虛擬機33M和34M可通過系統(tǒng)管理程序41發(fā)現(xiàn)虛擬機36和37及它們的通信隊列的位置,且此后向虛擬機36和37的通信隊列提供工作項目。
在所示出的其中虛擬機36、37、33M、34M和35M使用共享存儲器51即RAM來存儲數據的實施例中,塊存儲器54-1是共享存儲器51中包含文件和目錄的存儲器區(qū)域。塊存儲器54-1是決存儲器54的遷移后副本。目錄列出塊存儲器54-1的內容。在本發(fā)明的其中塊存儲器54-3是共享的一個實施例中,虛擬機36、37、33M、34M和35M中的每一個都可向塊存儲器54-3寫入數據塊及從塊存儲器54-3讀出數據塊。在本發(fā)明的其中塊存儲器54-1是專用的另一實施例中,LPAR 31中的每一個塊存儲器專用于虛擬機36、37、33M、34M和35M中各自的一個,以便只有一個虛擬機可向該塊存儲器寫入數據塊及從該塊存儲器讀出數據塊。
在圖1的實施例中,虛擬機33-35的所有通信隊列都駐留于共享存儲器50中,且可由LPAR 30中的所有虛擬機33-35直接訪問,但不能由LPAR31中的虛擬機直接訪問。這樣,為了維護初始駐留于LPAR 30中的所有虛擬機對初始駐留于LPAR 30中的其他虛擬機的通信隊列的訪問,如果需要遷移虛擬機33-35中的一個或全部,則將它們全部同時從LPAR 30遷移到LPAR 31。這確保了“進行中的”通信,即當前在LPAR 30中的工作隊列中的通信項目將由目標虛擬機所處理而不會丟失。此外,如下面所描述的,遷移過程是快速的,因而對通信進程只存在極小的延遲。(同樣,虛擬機36和37的通信隊列駐留于共享存儲器51中,并且可由LPAR 31中的其他虛擬機37和36直接訪問,但不能由LPAR 30中的虛擬機直接訪問。)這樣,為了維護初始駐留于LPAR 31中的所有虛擬機對初始駐留于LPAR 31中的其他虛擬機的通信隊列的訪問,如果需要遷移虛擬機36和37中的一個或全部,則將它們一起遷移到LPAR 30。
可以不同方式來啟動虛擬機33-35的遷移。例如,如果系統(tǒng)管理程序40知道將要發(fā)生崩潰,則系統(tǒng)管理程序40可將它的虛擬機33-35中每一個的專用存儲器內容復制到存儲設備26中。然后,系統(tǒng)管理程序40可啟動虛擬機33-35到LPAR 31和系統(tǒng)管理程序41的遷移,如下面所述的那樣,以使虛擬機33-35在系統(tǒng)管理程序40的崩潰之后將保持激活。作為另一個例子,用戶可能希望更新或維護系統(tǒng)管理程序40,并且在這種情況下,通知虛擬機33-35的客戶操作系統(tǒng)43-45。作為響應,客戶操作系統(tǒng)43-45將請求系統(tǒng)管理程序40啟動虛擬機33-35到LPAR 31和系統(tǒng)管理程序41的遷移,如下面所述的,以使虛擬機33-35在系統(tǒng)管理程序40的更新或維護期間將保持激活。虛擬機33-35可在系統(tǒng)管理程序40的更新或維護之后遷移回LPAR 30和系統(tǒng)管理程序40。作為另一例子,系統(tǒng)管理員可能通知LPAR 30受限于資源而LPAR 31具有多余的資源,因此系統(tǒng)管理員可通知LPAR 30中的虛擬機33-35中的客戶操作系統(tǒng)43-45遷移到LPAR 31。作為響應,虛擬機33-35的客戶操作系統(tǒng)43-45請求系統(tǒng)管理程序40為了負載平衡的目的,啟動虛擬機33-35到LPAR 31和系統(tǒng)管理程序41的遷移,如下面所述的那樣。(雖然未示出,但在這上一個例子中,可能會存在不共享虛擬機33-35的通信隊列或塊存儲器的運行于LPAR 30之上的其他應用或在LPAR 30之上的其他虛擬機,這些其他應用和其他虛擬機不必與虛擬機33-35一起遷移。)下面是參照圖1到9,對系統(tǒng)110中的虛擬機35從LPAR 30到LPAR31的遷移的說明。這一說明也適用于與虛擬機35(及通信隊列52和塊存儲器54)同時遷移的其他虛擬機33和34(及它們的通信隊列和塊存儲器)(因為虛擬機33-35互相訪問對方的通信隊列)。虛擬機35的遷移包括虛擬機35的專用存儲器(“VPM”)內容的遷移以及虛擬機35的通信隊列52和塊存儲器54從LPAR 30到LPAR 31的遷移。
LPAR 30中的虛擬機35(虛擬)專用存儲器存儲客戶操作系統(tǒng)45、應用55、由應用生成的數據、用于操作系統(tǒng)和應用的程序狀態(tài)字(也稱作“CPU狀態(tài)”)、在客戶操作系統(tǒng)和應用的處理期間所使用的數據寄存器。虛擬機35還包括它的來自LPAR 30的所分配的計算機資源的份額,但在本發(fā)明的這一實施例中,來自LPAR 30的計算機資源的份額不與虛擬機35一起從LPAR 30遷移到LPAR 31;而是,遷移后的虛擬機35M將從LPAR 31接收它的計算機資源的份額。
如上面所解釋的,虛擬機35的通信隊列52初始駐留于共享存儲器50中,且LPAR 30中可訪問這一通信隊列的所有虛擬機同時遷移。因此,緊接在通信隊列52的遷移(及用于虛擬機33和34的通信隊列的遷移)之前,系統(tǒng)管理程序40停止LPAR 30上互相訪問對方的通信隊列的所有虛擬機,以使它們在它們的遷移期間不會試圖向這些隊列中的任何一個添加通信項目或從這些隊列中的任何一個移除通信項目(步驟902)。在所示出的例子中,虛擬機33-35互相訪問對方的通信隊列,因此在步驟902,系統(tǒng)管理程序40停止所有的虛擬機33-35。如下面所解釋的,停止的持續(xù)時間很短,例如為5毫秒,因為物理卡未移動,因此遷移所需的時間是短的。
也可能有其他的虛擬機也需要同時遷移。在本發(fā)明的一個實施例中,每一個塊存儲器專用于它各自的虛擬機,即甚至是在同一LPAR中,也沒有其他的虛擬機能夠對另一虛擬機的塊存儲器進行寫和讀。在這一實施例中,不需要由于塊存儲器而將同一LPAR上的虛擬機作為一組來遷移。但是,仍然需要由于同一LPAR上的虛擬機互相對對方的通信隊列的訪問,而將其作為一組來遷移。但是,在本發(fā)明的另一實施例中,同一LPAR中的每一虛擬機可訪問同一LPAR中每一其他虛擬機的塊存儲器。在這另一實施例中,同一LPAR上可互相訪問對方的塊存儲器的所有虛擬機需要同時遷移。這一組虛擬機通常將與能夠互相訪問對方的通信隊列的虛擬機組一致,因而由于對相互的通信隊列的訪問,無論如何它們都需要同時遷移。
在LPAR 30中所有必需的虛擬機在步驟902停止之后,系統(tǒng)管理程序40將LPAR 30中虛擬機35的專用存儲器(“VPM”)的內容傳送給LPAR31的工作存儲器81(步驟903)。在步驟903,系統(tǒng)管理程序40還將LPAR30中通信隊列52和塊存儲器54的虛擬地址與虛擬機35的專用存儲器內容一起傳送給LPAR 31的工作存儲器81。這些是虛擬機35用于從共享存儲器50中對通信隊列52和塊存儲器54進行尋址的虛擬地址。如下面詳細描述的,遷移后的虛擬機35M將使用這些相同的虛擬地址從共享存儲器51中對通信隊列52-1和塊存儲器54-1進行尋址;系統(tǒng)管理程序41將把這些虛擬地址映射到共享存儲器51。接著,系統(tǒng)管理程序40將虛擬機35的通信隊列52從LPAR 30中的共享存儲器50傳送給LPAR 31的工作存儲器81(步驟904)。然后,系統(tǒng)管理程序40將虛擬機35的塊存儲器54從LPAR 30中的共享存儲器50傳送給LPAR 31的工作存儲器81(步驟908)。如果在遷移之前由于預知停機而將上述數據結構中的任一種(即VPM內容、通信隊列的虛擬地址、塊存儲器的虛擬地址、通信隊列或塊存儲器)復制到存儲設備26中,且遷移發(fā)生在LPAR 30重新啟動之后但在虛擬機35在LPAR 30的存儲器中重建之前,則LPAR 30可從存儲設備26中取出這些數據結構,以便將它們傳送給LPAR 31來進行遷移。但是,一般地,系統(tǒng)管理程序40從虛擬機35的專用存儲器55中取出VPM內容、通信隊列的虛擬地址和塊存儲器的虛擬地址,并從共享存儲器50中取出通信隊列和塊存儲器。在步驟903和904中從LPAR 30到LPAR 31的通信可使用任何可用的通信工具,例如已知的IBM z系列IUCV、SNA或TCP/IP通信工具?!癐UCV”代表Inter-User Communications Vehicle(用戶間通信工具),且其是能夠使運行于一個虛擬機中的程序通過系統(tǒng)管理程序與其他虛擬機中的其他程序通信的點到點通信工具。IUCV通信通過預定的稱作“路徑”的連接發(fā)生在源虛擬機和目標虛擬機之間。“路徑”是一由系統(tǒng)管理程序定義的結構。例如,當一個虛擬機希望與另一個虛擬機IUCV通信時,這一個虛擬機請求系統(tǒng)管理程序指定用于這一通信的路徑ID。該系統(tǒng)管理程序還將這一個虛擬機將使用的路徑ID通知給另一個虛擬機。當這一個虛擬機希望進行通信時,這一個虛擬機向系統(tǒng)管理程序提供通信信息,且還指定路徑ID。然后,系統(tǒng)管理程序接收該信息,將其存儲在緩沖器中,并通過IUCV中斷通知另一個虛擬機有通信正在指定路徑ID處等待。然后,此另一個虛擬機向系統(tǒng)管理程序請求指定路徑ID處的通信信息。每一進行通信的虛擬機可具有多個路徑,并且可通過同一路徑同時接收和發(fā)送多個消息。“IBM z/VM V4R4.0CP ProgrammingServices”手冊對IUCV通信工具進行了進一步描述。此手冊可從國際商業(yè)機器公司,信箱29570,Raleigh,北卡羅萊納州27626-0570處獲得。
接著,虛擬機35請求系統(tǒng)管理程序40從LPAR 30中“刪除”虛擬機35,即從LPAR 30中刪除對虛擬機35的資源分配。作為響應,系統(tǒng)管理程序40刪除虛擬機35的資源分配(步驟912)。然而,系統(tǒng)管理程序40將在LPAR 30中保留對虛擬機35的描述,以防用戶隨后想要在LPAR 30中重新激活虛擬機35。
接著,系統(tǒng)管理程序41從LPAR 31中為將要遷移的虛擬機分配計算機資源(虛擬處理器、虛擬專用存儲器、虛擬共享存儲器、虛擬專用存儲設備和虛擬共享存儲設備)(步驟928)。系統(tǒng)管理程序41根據上述數據結構的通信知道該虛擬機正等待在LPAR 31中重新開始(且需要虛擬資源)。然后,系統(tǒng)管理程序41將該虛擬機專用存儲器內容(包括通信隊列52和塊存儲器54的虛擬地址)從工作存儲器81復制到LPAR 31中最近分配的、遷移后的虛擬機35M的(虛擬)專用存儲器中(步驟930)。這在LPAR 31中形成了遷移后的虛擬機35M,盡管虛擬機35還未重新開始/激活。遷移后的虛擬機35M與初始虛擬機35相同,盡管根據LPAR 31中虛擬機的總數和分配給LPAR 31的資源總量而在資源分配上可能會存在某些變化。然后,系統(tǒng)管理程序41或者虛擬機36或37中的客戶操作系統(tǒng)(負責重新開始從LPAR 30遷移來的虛擬機)發(fā)出“重新開始”虛擬機35M的命令(步驟934)。作為響應,虛擬機35M中的客戶操作系統(tǒng)45M和應用將在由遷移后的程序狀態(tài)(指針)所指示處重新開始執(zhí)行。
然后,虛擬機36或37中負責虛擬機從LPAR 30的遷移的系統(tǒng)管理程序41或客戶操作系統(tǒng)將虛擬機35的通信隊列從LPAR 31的工作存儲器81復制到共享存儲器51(步驟940)(此處為了說明的目的在圖1中將其重新標為52-1)。然后,虛擬機36或37中負責塊存儲器從LPAR 30到LPAR 31的遷移的的系統(tǒng)管理程序41或客戶操作系統(tǒng)將塊存儲器54從LPAR 31的工作存儲器81復制到共享存儲器51中(步驟944)(此處為了說明的目的將其標為54-1)。
然后,遷移后的虛擬機35M中的客戶操作系統(tǒng)45M請求系統(tǒng)管理程序41將通信隊列52-1“附加”到LPAR 31中的虛擬機35M(步驟950)。通過這一附加,虛擬機35M中的客戶操作系統(tǒng)45M向系統(tǒng)管理程序41通知虛擬機35M將使用什么地址來引用它的通信隊列52-1。(這些是虛擬機35在駐留于LPAR 30中時所使用的地址,這些地址隨虛擬機35的專用存儲器內容一起被復制到虛擬機35M的虛擬專用存儲器。)作為響應,系統(tǒng)管理程序41將這些地址與通信隊列52-1現(xiàn)在所駐留的共享存儲器51中的位置相關聯(lián)。(同樣,其他遷移后的虛擬機34M和35M將請求系統(tǒng)管理程序41將它們各自的通信隊列附加到共享存儲器51。)因為所有虛擬機33-35(以上面所描述的方式)同時遷移,一旦重新開始,它們將使用與它們在遷移之前在LPAR 30中所使用的相同的虛擬地址互相訪問對方的通信隊列。系統(tǒng)管理程序41將把這些地址附加到共享存儲器51(代替共享存儲器50)中的位置。
然后,遷移后的虛擬機35M中的客戶操作系統(tǒng)請求系統(tǒng)管理程序41將塊存儲器54-1“附加”到LPAR 31中的虛擬機35M(步驟954)。通過這一附加,虛擬機35M中的客戶操作系統(tǒng)向系統(tǒng)管理程序41通知虛擬機35M將對于塊存儲器54-1使用什么地址。(這些是虛擬機35當駐留于LPAR 30中時所使用的地址,這些地址隨虛擬機35的專用存儲器內容一起被復制到虛擬機35M的專用存儲器中。)作為響應,系統(tǒng)管理程序41通過將這一塊存儲器分配給遷移后的虛擬機35M的虛擬共享存儲器,而使得塊存儲器54-3對遷移后的虛擬機35M可用。如果其他虛擬機33-34也被遷移,并且能夠訪問LPAR 30中虛擬機35的塊存儲器,則它們將使用與它們用于訪問LPAR 30中的塊存儲器54相同的虛擬地址來訪問LPAR31中虛擬機35M的塊存儲器。系統(tǒng)管理程序41將把這些虛擬地址轉換到LPAR 31中的塊存儲器54-3。
接著,遷移后的虛擬機35M繼續(xù)執(zhí)行當虛擬機35在LPAR 30中被停止以便進行遷移時正在進行中的一個或多個工作項目,如果存在這樣的工作項目的話。這些工作項目,如果存在的話,在由程序狀態(tài)字所指示的在遷移期間它們被停止的位置處繼續(xù)。如果虛擬機35M可用于執(zhí)行來自通信隊列52-1的另一工作項目(判斷990,“是”分支),則虛擬機35M從通信隊列52-1中獲取下一工作項目并對其進行處理,如下面所描述的那樣(步驟994)。如果通信隊列52-1(或虛擬機35M的任何其他遷移后的工作隊列)中不再有工作項目,則虛擬機只是等待指示有工作要做的中斷。
如上面所指出的,虛擬機36和37隨后可能通過35M所啟動的任何可用的通信協(xié)議(例如IUCV),獲知虛擬機35M(及虛擬機33M和34M)。然后,如果虛擬機36和37希望通過共享存儲器51中的通信隊列52-1與虛擬機35M進行通信,虛擬機36和37可向系統(tǒng)管理程序41查詢以獲知虛擬機35M的通信隊列52-1的地址。同樣,如果虛擬機35M(及虛擬機33M和34M)獲知虛擬機36和37并希望與之進行通信,則虛擬機35M(及虛擬機33M和34M)可向系統(tǒng)管理程序41查詢以獲知共享存儲器51中虛擬機36和37的各自通信隊列的地址。此外,如果虛擬機36和37希望訪問共享存儲器51中的塊存儲器54-1(如果允許的話),或者寫數據或者讀數據,則虛擬機36和37可向系統(tǒng)管理程序41查詢以獲知塊存儲器54-1中虛擬機35M的地址。同樣,如果虛擬機35M獲知并希望訪問共享存儲器51中虛擬機36和37的塊存儲器(如果允許的話),則虛擬機35M可向系統(tǒng)管理程序41查詢,以獲知共享存儲器51中虛擬機36和37各自的塊存儲器的地址。
圖2示出根據本發(fā)明另一實施例的計算機系統(tǒng)210,其包括兩個單獨的物理計算機120和121。計算機120包括系統(tǒng)管理程序40,該系統(tǒng)管理程序定義虛擬機33-35。與系統(tǒng)110不同,計算機120未被劃分為LPAR或者說是單個LPAR。計算機121包括系統(tǒng)管理程序41,該系統(tǒng)管理程序最初定義虛擬機36和37,而隨后添加遷移后的虛擬機33M、34M和35M。與系統(tǒng)110不同,計算機121未被劃分為LPAR或者說是單個LPAR。計算機120包括用于虛擬機33-35的共享存儲器50。計算機121包括用于虛擬機36和37、以及隨后遷移后的虛擬機33M、34M和35M的共享存儲器51。計算機120和121均共享存儲設備26,用于一般使用和它們各自存儲器的緊急備份。每一個計算機120和121中的每一虛擬機包括在各自共享存儲器中的各自通信隊列和塊存儲器。系統(tǒng)210中虛擬機的遷移與系統(tǒng)110中虛擬機的遷移相同,這里不需要重復。
圖3示出根據本發(fā)明另一實施例的另一計算機系統(tǒng)310。如系統(tǒng)110中那樣,系統(tǒng)310包括單個物理計算機20、LPAR 30和31及各自的系統(tǒng)管理程序40和41。系統(tǒng)管理程序40定義虛擬機33-35。系統(tǒng)管理程序41定義虛擬機36、37,以及隨后單獨的遷移的虛擬機35M。系統(tǒng)310包括用于LPAR 30的共享存儲器50和共享存儲設備60,及用于LPAR 31的共享存儲器51和共享存儲設備61。但是,與系統(tǒng)110不同,在系統(tǒng)310中,在虛擬機35從LPAR 30遷移到LPAR 31的過程中不使用的共享存儲設備60和61。而是,系統(tǒng)310(與系統(tǒng)110不同)包括由LPAR 30和31及系統(tǒng)管理程序40和41所共享的存儲器90(即RAM 24的一虛擬區(qū)域)。共享存儲器90由LPAR 30和31兩者上的所有虛擬機33-37和35M所共享。這樣,在這兩個LPAR上的所有虛擬機都可訪問共享存儲器90內的所有數據結構,倘若這些虛擬機知道地址的話。如系統(tǒng)110中一樣,系統(tǒng)310中的每一虛擬機包括各自的具有與系統(tǒng)110中相同的內容的專用存儲器。系統(tǒng)310在虛擬機35從LPAR 30遷移到LPAR 31的過程中使用共享存儲器90,來遷移被遷移虛擬機35的虛擬專用存儲器內容。但是,用于系統(tǒng)310中兩個LPAR 30和31上的每一虛擬機的通信隊列和塊存儲器初始存儲于共享存儲器90(而不是共享存儲器50或60)中。因此,在系統(tǒng)310中的虛擬機33-35的遷移期間,不必遷移各自的通信隊列和塊存儲器。例如,LPAR 31中遷移后的虛擬機35M直接從共享存儲器90訪問通信隊列52和塊存儲器54,就象在遷移之前LPAR 30中的虛擬機35(在遷移前)直接從共享存儲器90訪問通信隊列52和塊存儲器54一樣。甚至不需要為了虛擬機35遷移的目的,將通信隊列52和塊存儲器54從共享存儲器90中的一個位置移動到共享存儲器90中的另一個位置。此外,在只需要遷移互相訪問對方的通信隊列或塊存儲器的一組虛擬機中的一個的時候,不必停止或遷移這一組虛擬機。這是因為所遷移的虛擬機的通信隊列和塊存儲器不移動,且在該遷移的虛擬機的遷移期間,其他遷移的虛擬機可繼續(xù)對該遷移的虛擬機的通信隊列(和塊存儲器,如果允許的話)進行寫和讀。
下面是參照圖3和9,對虛擬機35從系統(tǒng)310中的LPAR 30到LAPR31的遷移的解釋。虛擬機35的遷移包括虛擬機35的專用存儲器(“VPM”)內容從LPAR 30中的專用存儲器到LPAR 31中的專用存儲器的遷移。不存在通信隊列52或塊存儲器54的移動;該遷移只需要將這兩者重新附加到LPAR 31中遷移后的虛擬機35。
LPAR 30中虛擬機35的(虛擬)專用存儲器存儲客戶操作系統(tǒng)45、應用55、這些應用所生成的數據、用于操作系統(tǒng)和應用的程序狀態(tài)字(也稱作“CPU狀態(tài)”)、及在客戶操作系統(tǒng)和應用的處理期間所使用的數據寄存器。虛擬機35還包括它的從LPAR 30分配的計算機資源的份額,但來自LPAR 30的計算機資源的份額不與虛擬機35一起從LPAR 30遷移到LPAR 31;而是,遷移后的虛擬機35M將從LPAR 31接收到它的計算機資源的份額。為了開始虛擬機35的遷移,系統(tǒng)管理程序40將虛擬機35的專用存儲器(“VPM”)的內容復制到共享存儲器90(步驟1000)(此處為了說明的目的在圖3中將該內容重新標為虛擬機專用存儲器內容35-A)。在步驟1000,系統(tǒng)管理程序40還將通信隊列52和塊存儲器54的虛擬地址與虛擬機35的專用存儲器內容一起復制到共享存儲器90中。這些是由虛擬機35從共享存儲器90中對通信隊列52和塊存儲器54進行尋址所使用的虛擬地址。如下面更詳細描述的,遷移后的虛擬機35M將使用這些相同的虛擬地址從共享存儲器90對通信隊列52和塊存儲器54進行尋址;系統(tǒng)管理程序41將把這些虛擬地址映射到共享存儲器90。在由步驟1000所指示的遷移時刻,虛擬機35仍然在LPAR 30和系統(tǒng)管理程序40中執(zhí)行。然后,系統(tǒng)管理程序41停止虛擬機35在LPAR 30中的執(zhí)行(步驟1002),然后從LPAR 30中刪除虛擬機35(步驟1028)。
虛擬機35的通信隊列52在虛擬機35的遷移之前和之后駐留于共享存儲器90中,且不存在由于遷移而導致的通信隊列52在共享存儲器90內的移動。(因為通信隊列52不移動,所以不需要停止LPAR 30中訪問通信隊列52的其他虛擬機。)同樣,虛擬機35的塊存儲器54在虛擬機35的遷移之前和之后駐留于共享存儲器90中,且不存在由于遷移而導致的塊存儲器54在共享存儲器90內的移動。(因為塊存儲器54不移動,所以不需要停止LPAR 30中訪問塊存儲器54的其他虛擬機,如果存在這樣的虛擬機的話。)接著,系統(tǒng)管理程序41從LPAR 31中為要遷移的虛擬機分配計算機資源(虛擬處理器、虛擬專用和共享存儲器、及虛擬專用和共享存儲設備)(步驟1028)。系統(tǒng)管理程序41根據在作出遷移請求時的用戶輸入或來自虛擬機35中的系統(tǒng)管理程序40或客戶操作系統(tǒng)45的先前通知(該通知可通過TCP/IP或任何其他通信協(xié)議發(fā)送),知道虛擬機35正等待在LPAR31中重新開始(并需要虛擬資源)。然后,系統(tǒng)管理程序41將虛擬機專用存儲器內容35-A(包括通信隊列52和塊存儲器54的虛擬地址)從共享存儲器90復制到最近分配的LPAR 31(虛擬)專用存儲器(步驟1030)中。這在LPAR 31中形成了遷移后的虛擬機35M,盡管虛擬機35M還未重新開始/激活。遷移后的虛擬機35M與初始虛擬機35相同,盡管可能根據LPAR 31中虛擬機的總數和分配給LPAR 31的資源總量而在資源分配上存在某些變化。然后,虛擬機36或37中的系統(tǒng)管理程序41或客戶操作系統(tǒng)(其負責重新開始從LPAR 30遷移來的虛擬機)發(fā)出“重新開始”虛擬機35M的命令(步驟1034)。作為響應,虛擬機35M中的客戶操作系統(tǒng)和應用35M將在遷移后的程序狀態(tài)字(指針)所指示的位置重新開始執(zhí)行。
然后,遷移后的虛擬機35M中的客戶操作系統(tǒng)請求系統(tǒng)管理程序41將通信隊列52“附加”到LPAR 31中的虛擬機35M(步驟1050)。通過這一附加,虛擬機35M中的客戶操作系統(tǒng)向系統(tǒng)管理程序41通知虛擬機35M將使用什么地址來引用通信隊列52。(這些是當虛擬機35駐留于LPAR 30中時虛擬機35引用通信隊列52所使用的地址,這些地址隨虛擬機35的專用存儲器內容一起被復制到共享存儲器90。)作為響應,系統(tǒng)管理程序41將這些地址與共享存儲器90中通信隊列52所駐留的位置相關聯(lián)。因為通信隊列52未移動,所以虛擬機33、34和35M可在虛擬機35M的遷移之后訪問通信隊列52,對虛擬機33或34沒有改變。此外,虛擬機36和37可在虛擬機35遷移之后與在虛擬機35遷移之前一樣地訪問通信隊列52(即提供工作項目)。
然后,遷移后的虛擬機35M中的客戶操作系統(tǒng)請求系統(tǒng)管理程序31將塊存儲器54“附加”到LPAR 31中的虛擬機35M(步驟1054)。通過這一附加,虛擬機35M中的客戶操作系統(tǒng)45M向系統(tǒng)管理程序41通知虛擬機35M將為塊存儲器使用什么地址。(這些是當虛擬機35駐留于LPAR30中時所使用的地址,這些地址隨虛擬機35的專用存儲器內容一起被復制到共享存儲器90。)作為響應,系統(tǒng)管理程序41通過將這一塊存儲器分配給遷移后的虛擬機35M的虛擬共享存儲器,使得塊存儲器54對遷移后的虛擬機35M可用。系統(tǒng)管理程序41將把這些虛擬地址轉換到共享存儲器90中的塊存儲器54。
接著,遷移后的虛擬機35M繼續(xù)執(zhí)行當虛擬機35在LPAR 30中被停止以便進行遷移時正在進行中的一個或多個工作項目,如果存在這樣的工作項目的話。這些工作項目,如果存在的話,根據程序狀態(tài)字,在遷移期間它們被停止的位置處繼續(xù)。如果虛擬機35M可用于執(zhí)行來自通信隊列52的另一工作項目(判斷1090,“是”分支),則虛擬機35M從通信隊列52中獲取下一工作項目并對其進行處理,如下面所描述的那樣(步驟1094)。如果通信隊列52,或任何其他遷移后的工作隊列中不再有工作項目,則虛擬機只是等待指示有更多工作要做的中斷(步驟1098)。
如果虛擬機36和37不知道LPAR 30中的虛擬機35,則它們隨后可通過35M使用例如IUCV的任何通信協(xié)議所啟動的通信獲知LPAR 31中的虛擬機35M。然后,如果虛擬機36和37希望通過共享存儲器90中的通信隊列52與虛擬機35M通信,則虛擬機36和37可向系統(tǒng)管理程序41進行查詢,以獲知虛擬機35M的通信隊列52的地址。同樣,如果虛擬機35M先前不知道虛擬機36和37,而獲知并希望與虛擬機36和37進行通信,則虛擬機35M可向系統(tǒng)管理程序41進行查詢以獲知共享存儲器90中虛擬機36和37的各自通信隊列的地址。此外,如果虛擬機36和37希望訪問共享存儲器51中的塊存儲器54(如果允許的話),或者寫數據或讀數據,則虛擬機36和37可向系統(tǒng)管理程序41進行查詢以獲知塊存儲器54中虛擬機35M的地址,如果虛擬機36和37先前不知道虛擬機35M的地址的話。同樣,如果虛擬機35M先前不知道,但獲知并希望訪問共享存儲器90中虛擬機36和37的塊存儲器(如果允許的話),則虛擬機35M可向系統(tǒng)管理程序41進行查詢,以獲知共享存儲器90中虛擬機36和37的各自塊存儲器的地址。
圖4示出根據本發(fā)明另一實施例的計算機系統(tǒng)410,其包括兩個單獨的物理計算機120和121。計算機120包括系統(tǒng)管理程序40,該系統(tǒng)管理程序定義虛擬機33-35。與系統(tǒng)310不同,系統(tǒng)410中的計算機120未被劃分為LPAR或者說是單個LPAR。與系統(tǒng)310不同,系統(tǒng)410中的計算機121未被劃分為LPAR或者說是單個LPAR。計算機系統(tǒng)410除了共享存儲器90的性質之外在其他方面與計算機系統(tǒng)310類似。在計算機系統(tǒng)410中,因為存在單獨的實計算機120和121,所以共享存儲器90可實現(xiàn)為“非一致存儲器訪問”設備,其中由于一個實計算機鄰近于該存儲器設備,該實計算機能夠比另一計算機更快速地訪問該存儲器。在這一實施例中,存儲器90可以位于插入到這一個實計算機中的卡之上,并可由另一實計算機通過電纜訪問。計算機121包括系統(tǒng)管理程序41,該系統(tǒng)管理程序最初定義虛擬機36和37,而隨后添加遷移后的虛擬機35M。每一個計算機120和121中的每一虛擬機包括在共享存儲器90中的各自通信隊列和塊存儲器。系統(tǒng)410中虛擬機的遷移與系統(tǒng)310中虛擬機的遷移相同,這里不需要重復。
圖5示出根據本發(fā)明另一實施例的另一計算機系統(tǒng)510。如系統(tǒng)110中那樣,系統(tǒng)510包括單個物理計算機20、LPAR 30和31及各自的系統(tǒng)管理程序40和41。系統(tǒng)管理程序40定義虛擬機33-35。系統(tǒng)管理程序41定義虛擬機36、37,以及隨后所遷移的虛擬機33M、34M和35M。系統(tǒng)510包括用于LPAR 30的共享存儲器50和用于LPAR 31的共享存儲器51。在系統(tǒng)110和510兩者中,每一虛擬機包括相同的專用存儲器內容。在系統(tǒng)110和510兩者中,每一虛擬機的通信隊列和塊存儲器駐留于該虛擬機所駐留的LPAR的共享存儲器中。在系統(tǒng)110和510兩者中的虛擬機的遷移期間,專用存儲器內容從初始專用存儲器被復制到共享存儲設備,且通信隊列和塊存儲器從共享存儲器被復制到共享存儲設備。但是,與系統(tǒng)110不同,在系統(tǒng)510中,共享存儲設備對于LPAR 30和31兩者是通用的。因此,在系統(tǒng)510中的虛擬機33-35及它們各自的通信隊列和塊存儲器的遷移期間,不需要將專用存儲器內容、通信隊列和塊存儲器從一個存儲設備復制到另一個存儲設備或從存儲設備中一個位置復制到另一個位置。在系統(tǒng)110和510兩者中,需要將專用存儲器內容從存儲設備復制到LPAR 31的專用存儲器,且需要將通信隊列和塊存儲器從存儲設備復制到LPAR 31的共享存儲器。
下面是對系統(tǒng)510中的虛擬機35從LPAR 30遷移到LPAR 31的過程的更詳細說明,此說明同樣適用于其他虛擬機33和34。所有這三個虛擬機33-35及它們各自的通信隊列和塊存儲器同時遷移,因為這三個虛擬機33-35互相訪問對方的通信隊列。
LPAR 30中的虛擬機35(虛擬)專用存儲器存儲客戶操作系統(tǒng)45、應用55、由應用生成的數據、用于操作系統(tǒng)和應用的程序狀態(tài)字(也稱作“CPU狀態(tài)”)、和在客戶操作系統(tǒng)和應用的處理期間所使用的數據寄存器。虛擬機35還包括它的已從LPAR 30分配的計算機資源的份額,但在本發(fā)明的這一實施例中,來自LPAR 30的計算機資源的份額不與虛擬機35一起從LPAR 30遷移到LPAR 31;而是,遷移后的虛擬機35M將從LPAR 31接收到它的計算機資源的份額。為了開始虛擬機35的遷移,系統(tǒng)管理程序40將虛擬機35的專用存儲器(“VPM”)的內容復制到共享存儲設備560(步驟1100)(此處為了說明的目的在圖5中將該內容重新標為虛擬機專用存儲器內容35-2)。在步驟1100,系統(tǒng)管理程序40還將通信隊列52和塊存儲器54的虛擬地址與虛擬機35的專用存儲器內容一起復制到共享存儲設備560中。這些是由虛擬機35從共享存儲器50中對通信隊列52和塊存儲器54進行尋址所使用的虛擬地址。如下面更詳細描述的,遷移后的虛擬機35M將使用這些相同的虛擬地址從共享存儲器51對通信隊列52-3和塊存儲器54-3進行尋址;系統(tǒng)管理程序41將把這些虛擬地址映射到共享存儲器51。在由步驟1100所指示的遷移時刻,虛擬機35仍然在LPAR 30和系統(tǒng)管理程序40中執(zhí)行。
下面解釋虛擬機35的通信隊列52的遷移的開始。這一解釋同樣適用于與通信隊列52同時遷移的、虛擬機33和34的通信隊列的遷移。虛擬機35的通信隊列52初始駐留于共享存儲器50中。緊接在通信隊列52的遷移(及虛擬機33和34的通信隊列的遷移)之前,系統(tǒng)管理程序40停止LPAR 30上互相訪問對方的通信隊列的所有虛擬機,以便它們在遷移期間不會試圖向這些隊列中的任何一個添加通信項目或從其移除通信項目(步驟1102)。在所示出的例子中,虛擬機33-35互相訪問對方的通信隊列,因此在步驟1102,系統(tǒng)管理程序40停止所有虛擬機33-35。但是,該停止的持續(xù)時間很短,例如有5毫秒,因為不存在物理卡移動。然后,系統(tǒng)管理程序40將虛擬機35的通信隊列52從共享存儲器50復制到共享存儲設備560(步驟1104)(此處為了說明的目的在圖5中將其重新標為通信隊列52-2)。
下面解釋虛擬機35的塊存儲器54的遷移的開始。在本發(fā)明的一個實施例中,每一個塊存儲器專用于它各自的虛擬機,即甚至是在同一LPAR中也沒有其他虛擬機能夠對另一虛擬機的塊存儲器進行寫和讀。在這一實施例中,不需要由于決存儲器而將同一LPAR上的虛擬機作為一組來遷移。但是,仍然需要由于同一LPAR上的虛擬機互相對對方的通信隊列的訪問,而將它們作為一組來遷移。但是,在本發(fā)明的另一實施例中,同一LPAR中的每一虛擬機可訪問同一LPAR中每一其他虛擬機的塊存儲器。在這另一實施例中,同一LPAR上可互相訪問對方的塊存儲器的所有虛擬機需要同時遷移。這一組虛擬機將通常與能夠互相訪問對方的通信隊列的虛擬機組一致,因此無論如何需要由于相互對對方通信隊列的訪問,而同時遷移。下面是對虛擬機35的塊存儲器54的遷移所作的解釋。該解釋同樣適用于虛擬機33和34的塊存儲器的遷移。虛擬機35的塊存儲器54初始駐留于共享存儲器50中。然后,系統(tǒng)管理程序40將虛擬機35的塊存儲器54從共享存儲器50復制到共享存儲設備560(步驟1108)(此處為了說明的目的在圖5中將其重新標為塊存儲器54-2)。
接著,虛擬機35通過向系統(tǒng)管理程序40通知其希望被刪除而將它自己從LPAR 30中刪除(步驟1112)。作為響應,系統(tǒng)管理程序40在LPAR30中刪除虛擬機35。(同樣,被遷移的其他虛擬機33和34也從LPAR 30中刪除它們自己。)接著,系統(tǒng)管理程序41從LPAR 31中為要被遷移的虛擬機分配計算機資源(虛擬處理器、虛擬專用和共享存儲器及虛擬專用和共享存儲設備)(步驟1128)。系統(tǒng)管理程序41根據在作出遷移請求時的用戶輸入、或來自虛擬機35中的系統(tǒng)管理程序40或客戶操作系統(tǒng)45的先前通知(該通知可通過TCP/IP、或任何其他的通信協(xié)議作出),知道虛擬機35正等待在LPAR 31中重新開始(并需要虛擬資源)。然后,系統(tǒng)管理程序41將虛擬機專用存儲器內容35-2(包括通信隊列52和塊存儲器54的虛擬地址)從共享存儲設備560復制到最近分配的LPAR 31(虛擬)專用存儲器(步驟1130)。這在LPAR 31中形成遷移后的虛擬機35M,盡管虛擬機35M還未重新開始/激活。遷移后的虛擬機35M與初始虛擬機35相同,盡管可能根據LPAR 31中虛擬機的總數和分配給LPAR 31的資源總量而在資源分配上存在某些變化。然后,虛擬機36或37中(其負責重新開始從LPAR30遷移來的虛擬機)的系統(tǒng)管理程序41或客戶操作系統(tǒng)發(fā)出“重新開始”虛擬機35的命令(步驟1134)。作為響應,虛擬機35M中的客戶操作系統(tǒng)45M和應用將在由遷移后的程序狀態(tài)字(指針)所指示的位置重新開始執(zhí)行。
然后,虛擬機36或37中負責虛擬機從LPAR 30的遷移的系統(tǒng)管理程序41或客戶操作系統(tǒng)將虛擬機35的通信隊列52-2從共享存儲設備560復制到共享存儲器51(步驟1140)(此處為了說明的目的在圖5中將其重新標為52-3)。然后,虛擬機36或37中負責塊存儲器從LPAR 30到LPAR31的遷移的系統(tǒng)管理程序41或客戶操作系統(tǒng)將塊存儲器54-2從共享存儲設備560復制到共享存儲器51(步驟1144)(此處為了說明的目的將其重新標為54-3)。
然后,遷移后的虛擬機35M中的客戶操作系統(tǒng)45M請求系統(tǒng)管理程序41將通信隊列52-3“附加”到LPAR 31中的虛擬機35M(步驟1150)。通過這一附加,虛擬機35M中的客戶操作系統(tǒng)45M向系統(tǒng)管理程序41通知虛擬機35M將使用什么地址來引用它的通信隊列52-3。(這些是當虛擬機35駐留于LPAR 30中時所使用的地址,這些地址隨虛擬機35的專用存儲器內容一起被復制到共享存儲設備60。)。作為響應,系統(tǒng)管理程序41將這些地址與共享存儲器51中通信隊列52-3現(xiàn)在所存在的位置相關聯(lián)。(同樣,其他遷移后的虛擬機33M和34M也將請求系統(tǒng)管理程序41將它們各自的通信隊列附加到共享存儲器51。)因為所有的虛擬機33-35同時遷移,所以一旦重新開始,它們將使用與它們在遷移之前在LPAR 30中所使用的相同的虛擬地址來互相訪問對方的通信隊列。系統(tǒng)管理程序41將把這些地址附加到共享存儲器51中的位置(而替代共享存儲器50)。
然后,遷移后的虛擬機35M中的客戶操作系統(tǒng)請求系統(tǒng)管理程序31將塊存儲器54-3“附加”到LPAR 31中的虛擬機35M(步驟1154)。通過這一附加,虛擬機35M中的客戶操作系統(tǒng)向系統(tǒng)管理程序41通知虛擬機35M將為塊存儲器54-3使用什么地址。(這些是當虛擬機35駐留于LPAR 30中時所使用的地址,這些地址隨虛擬機35的專用存儲器內容一起被復制到共享存儲設備60。)作為響應,系統(tǒng)管理程序41通過將這一塊存儲器分配給遷移后的虛擬機35M的虛擬共享存儲器,而使得塊存儲器54-3對遷移后的虛擬機35M可用。如果其他虛擬機能夠訪問LPAR 30中虛擬機35的塊存儲器,則它們將使用與它們用于訪問LPAR 30中的塊存儲器54的相同的虛擬地址來訪問LPAR 31中虛擬機35M的塊存儲器。系統(tǒng)管理程序41將把這些虛擬地址轉換到LPAR 31中的塊存儲器54-3。
接著,遷移后的虛擬機35M繼續(xù)執(zhí)行當虛擬機35在LPAR 30中被停止以便進行遷移時正在進行中的一個或多個工作項目,如果存在這樣的工作項目的話。這些工作項目,如果存在的話,在由程序狀態(tài)字所指示的在遷移期間它們被停止的位置處繼續(xù)。如果虛擬機35M可用于執(zhí)行來自通信隊列52-3的另一工作項目(判斷1190,“是”分支),則虛擬機35M從通信隊列52-3中獲取下一工作項目并對其進行處理,如下面所描述的那樣(步驟1194)。如果通信隊列52-3(或虛擬機35M的任何其他遷移后的工作隊列)中不再有工作項目,則虛擬機只是等待指示有更多工作要做的中斷(步驟1198)。
如上面所指出的,虛擬機36和37可隨后通過35M經由例如IUCV的任何通信協(xié)議所啟動的通信,獲知虛擬機35M(及虛擬機33M和34M)。然后,如果虛擬機36和37希望通過共享存儲器51中的通信隊列52-3與虛擬機35M進行通信,則虛擬機36和37可向系統(tǒng)管理程序41查詢以獲知虛擬機35M的通信隊列52-3的地址。同樣,如果虛擬機35M(及虛擬機33M和34M)獲知并希望與虛擬機36和37進行通信,則虛擬機35M(及虛擬機33M和34M)可向系統(tǒng)管理程序41查詢以獲知共享存儲器51中虛擬機36和37的各自通信隊列的地址。此外,如果虛擬機36和37希望訪問共享存儲器51中的塊存儲器54-3(如果允許的話),或者寫數據或者讀數據,則虛擬機36和37可向系統(tǒng)管理程序41查詢以獲知塊存儲器54-3中虛擬機35M的地址。同樣,如果虛擬機35M獲知并希望訪問共享存儲器51中虛擬機36和37的塊存儲器(如果允許的話),則虛擬機35M可向系統(tǒng)管理程序41查詢,以獲知共享存儲器51中虛擬機36和37各自的塊存儲器的地址。
圖6示出根據本發(fā)明另一實施例的計算機系統(tǒng)610,其包括兩個單獨的物理計算機120和121。計算機120包括系統(tǒng)管理程序40,該系統(tǒng)管理程序定義虛擬機33-35。與系統(tǒng)510不同,系統(tǒng)610中的計算機120未被劃分為LPAR或者說是單個LPAR。與系統(tǒng)510不同,系統(tǒng)610中的計算機121未被劃分為LPAR或者說是單個LPAR。計算機121包括系統(tǒng)管理程序41,該系統(tǒng)管理程序定義虛擬機36和37,并且隨后還定義遷移的虛擬機33M、34M和35M。計算機120包括用于虛擬機33-35的共享存儲器50。計算機121包括用于虛擬機36和37、以及隨后所遷移的虛擬機33M、34M和35M的共享存儲器51。計算機120和121均共享存儲設備560,如系統(tǒng)510中那樣。每一個計算機120和121中的每一虛擬機包括在它們各自共享存儲器中的各自通信隊列和塊存儲器。系統(tǒng)610中虛擬機的遷移與系統(tǒng)510中虛擬機的遷移相同,這里不需要重復。
圖7示出共享存儲器50或90中的通信隊列52和塊存儲器54,及在遷移之前它們在所有計算機系統(tǒng)110、210、310、410、510和610中的使用。(該通信隊列和塊存儲器在遷移之后當它們駐留于共享存儲器51或90中時被同樣地使用。)在所示出的情形下,通信隊列52具有三個工作項目70、71和73。“通信”隊列上的“工作”項目可以是如所示出的來自其他虛擬機的通信,或是由虛擬機35自身放置的以由虛擬機35執(zhí)行的工作項目。(同樣,其他虛擬機的“通信”隊列可以是來自另外的虛擬機的通信或由將對其進行處理的該同一虛擬機所放置的工作項目。)在所示出的例子中,虛擬機33內的功能143(例如數據庫功能)創(chuàng)建工作項目70,且然后將其提供給虛擬機33內的工作隊列分配功能(“WQAF”)153。然后,WQAF 153根據該工作/通信項目的目標(即虛擬機35),確定該項目應被放置在隊列52中并將其傳送給隊列52。同樣,在所示出的例子中,虛擬機34內的功能144(諸如中斷應用功能)創(chuàng)建工作項目71,然后將其傳遞給虛擬機34內的工作隊列分配功能(“WQAF”)154。然后,WQAF 154根據該工作/通信項目的目標(即虛擬機35),確定該項目應被放置在隊列52中,并將其傳送給隊列52。(虛擬機33-35中的任何一個創(chuàng)建工作項目72。)虛擬機35內的調度程序165判定虛擬機35什么時候可用于執(zhí)行另一工作項目。那時,調度程序165將從隊列52獲取由隊列指針所指示的工作項目,例如工作項目72。然后,調度程序165將對該工作項目進行分析,以確定虛擬機35內的適當功能來處理該工作項目。然后,調度程序165將把該工作項目傳遞給此功能以進行處理。因為隊列52駐留于共享存儲器內,且調度程序165在完成前一工作項目后或者由于其他原因當它有能力執(zhí)行另一工作項目時檢查隊列52中新的工作項目,所以不需要一中斷以在一個工作項目正在隊列52上等待以便執(zhí)行時通告調度程序165。但是,在本發(fā)明的一個實施例中,當虛擬機35沒有工作項目要執(zhí)行時其進入空閑狀態(tài)。在這樣的情況下,當新的工作項目到達虛擬機35的隊列52中時,將該工作項目放置在隊列52中的虛擬機向虛擬機35發(fā)送喚醒虛擬機35的中斷。作為響應,虛擬機35然后將自動檢查隊列52中的新工作項目。
在所示出的系統(tǒng)110、210、310、410、510和610的實施例中,每個塊存儲器是共享存儲器中的一個區(qū)域,該區(qū)域存儲文件和列出該存儲器區(qū)域中的文件的各自目錄。虛擬機33、34和35的塊存儲器包括各自在共享存儲器50或90中的區(qū)域,虛擬機36、37、33M、34M和35M的塊存儲器包括各自在共享存儲器51或90中的區(qū)域。在圖7中所示出的實施例中,不同的虛擬機可向另一虛擬機的塊存儲器寫入塊或從其讀取塊。這樣,虛擬機33-35具有各自的設備驅動程序(未示出),以向虛擬機33-35的任何一個的塊存儲器寫入數據塊或從其讀取數據。虛擬機33-35中的任何一個都可向任何一個其他虛擬機33-35中傳輸數據塊,或使用它們的共享存儲器來存儲它自己的數據塊。同樣,虛擬機36、37、33M、34M、和35M具有各自的設備驅動程序(未示出),以向虛擬機36、37、33M、34M、和35M中任何一個的塊存儲器寫入數據塊或從其讀取數據。這樣,虛擬機36、37、33M、34M、和35M中的任何一個都可向任何一個其他虛擬機36、37、33M、34M、和35M中傳輸數據塊,或使用共享存儲器存儲它自己的數據塊。
圖8示出塊存儲器的另一實施例,其中每一虛擬機具有專用的塊存儲器,而不能向任何其他虛擬機的塊存儲器寫入或從其讀取。這樣,每一虛擬機可向它自己的塊存儲器寫入數據塊,以釋放它的專用存儲器,然后當在專用存儲器中需要時再讀回該數據塊。
根據上面的描述,公開了體現(xiàn)本發(fā)明的計算機系統(tǒng)。但是,可作出大量的更改和替換,而不背離本發(fā)明的范圍。例如,每一虛擬機可具有其他與上面描述的通信隊列一起遷移的工作隊列。因此,本發(fā)明是作為說明而非限制而進行公開的,應當參考下面的權利要求來確定本發(fā)明的范圍。
權利要求
1.一種用于將第一虛擬機和通信隊列從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的方法,在遷移之前,所述第一虛擬機包括在專用于所述第一虛擬機的第一專用存儲器中的操作系統(tǒng)和應用,在遷移之前,所述通信隊列駐留于由所述第一計算機或所述第一LPAR中的所述第一虛擬機和第二虛擬機共享的第一共享存儲器中,所述方法包括以下步驟在所述第一計算機或所述第一LPAR中停止所述第一虛擬機;所述第一計算機或所述第一LPAR將所述操作系統(tǒng)和應用傳送給所述第二計算機或所述第二LPAR,而所述第二計算機或所述第二LPAR將所述操作系統(tǒng)和應用寫入所述第二計算機或所述第二LPAR中所述第一虛擬機專用的第二專用存儲器中;所述第一計算機或所述第一LPAR將所述通信隊列傳送給所述第二計算機或第二LPAR,而所述第二計算機或所述第二LPAR將所述通信隊列寫入由所述第二計算機或所述第二LPAR中的所述第二、第三和第四虛擬機共享的第二共享存儲器中;以及在所述第二計算機或第二LPAR中重新開始所述第一虛擬機。
2.如權利要求1所述的方法,進一步包括將所述通信隊列從所述第二共享存儲器附加到所述第二計算機或第二LPAR中的所述第一虛擬機的步驟。
3.如權利要求1所述的方法,進一步包括以下步驟所述第一計算機或所述第一LPAR將所述第一計算機或第一LPAR中的所述第一虛擬機所使用的所述通信隊列的地址傳送給所述第二計算機或所述第二LPAR,且所述第二計算機或所述第二LPAR將所述地址寫入所述第二專用存儲器中,以使所述第一虛擬機當在所述第二計算機或第二LPAR中重新開始時將使用所述地址來訪問所述第二共享存儲器中的所述通信隊列。
4.如權利要求1所述的方法,進一步包括以下步驟所述第一計算機或所述第一LPAR將所述應用或所述操作系統(tǒng)的程序狀態(tài)字傳送給所述第二計算機或所述第二LPAR,以使所述第二計算機或第二LPAR中的所述第一虛擬機在重新開始時將使用所述程序狀態(tài)字來從其停止所述應用或所述操作系統(tǒng)在所述第一計算機或所述第一LPAR中的執(zhí)行的位置處重新開始所述應用或所述操作系統(tǒng)的執(zhí)行。
5.如權利要求1所述的方法,進一步包括以下步驟在所述第一計算機或所述第一LPAR將所述通信隊列傳送給所述第二計算機或所述第二LPAR的步驟之前,所述第二虛擬機向所述通信隊列提供工作項目;在所述第一計算機或所述第一LPAR中停止所述第二虛擬機;所述第一計算機或所述第一LPAR將所述第二虛擬機的操作系統(tǒng)和應用傳送給所述第二計算機或所述第二LPAR,然后,將所述第二虛擬機的所述操作系統(tǒng)和應用寫入所述第二計算機或所述第二LPAR中的所述第二虛擬機專用的第三專用存儲器中;所述第一計算機或所述第一LPAR將所述第二虛擬機的通信隊列傳送給所述第二計算機或所述第二LPAR,然后,將所述第二虛擬機的所述通信隊列寫入所述第二共享存儲器中;以及在所述第二計算機或第二LPAR中重新開始所述第二虛擬機,且所述第二計算機或所述第二LPAR中的所述第二虛擬機使用與所述第二虛擬機在向所述第一計算機或所述第一LPAR中的所述第一虛擬機的所述通信隊列提供第一個所述工作項目時所使用的相同地址向所述第二計算機或所述第二LPAR中的所述第一虛擬機的所述通信隊列提供另一工作項目。
6.一種用于將第一虛擬機和通信隊列從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的計算機程序產品,在遷移之前,所述第一虛擬機包括在專用于所述第一虛擬機的第一專用存儲器中的操作系統(tǒng)和應用,在遷移之前,所述通信隊列駐留于由所述第一計算機或所述第一LPAR中的所述第一虛擬機和第二虛擬機共享的第一共享存儲器中,所述計算機程序產品包括計算機可讀介質;在所述第一計算機或所述第一LPAR中停止所述第一虛擬機的第一程序指令;所述第一計算機或所述第一LPAR中將所述操作系統(tǒng)和應用傳送給所述第二計算機或所述第二LPAR的第二程序指令,及所述第二計算機或所述第二LPAR中將所述操作系統(tǒng)和應用寫入所述第二計算機或所述第二LPAR中所述第一虛擬機專用的第二專用存儲器中的第三程序指令;所述第一計算機或所述第一LPAR中將所述通信隊列傳送給所述第二計算機或第二LPAR的第四程序指令,及所述第二計算機或所述第二LPAR中將所述通信隊列寫入由所述第二計算機或所述第二LPAR中的所述第二、第三和第四虛擬機共享的第二共享存儲器中的第五程序指令;以及在所述第二計算機或第二LPAR中重新開始所述第一虛擬機的第六程序指令;并且其中所述第一、第二、第三、第四、第五和第六程序指令記錄于所述介質上。
7.如權利要求6所述的計算機程序產品,進一步包括將所述通信隊列從所述第二共享存儲器附加到所述第二計算機或第二LPAR中的所述第一虛擬機的第七程序指令;并且其中所述第七程序指令記錄于所述介質上。
8.如權利要求6所述的計算機程序產品,進一步包括所述第一計算機或所述第一LPAR中將所述第一計算機或第一LPAR中的所述第一虛擬機所使用的所述通信隊列的地址傳送給所述第二計算機或所述第二LPAR的第七程序指令,以及所述第二計算機或所述第二LPAR中將所述地址寫入所述第二專用存儲器中,以使所述第一虛擬機當在所述第二計算機或第二LPAR中重新開始時將使用所述地址訪問所述第二共享存儲器中的所述通信隊列的第八程序指令;并且其中所述第七和第八程序指令記錄于所述介質上。
9.如權利要求6所述的計算機程序產品,進一步包括所述第一計算機或所述第一LPAR中將所述應用或所述操作系統(tǒng)的程序狀態(tài)字傳送給所述第二計算機或所述第二LPAR,以使所述第二計算機或第二LPAR中的所述第一虛擬機在重新開始時將使用所述程序狀態(tài)字來從其停止所述應用或所述操作系統(tǒng)在所述第一計算機或所述第一LPAR中的執(zhí)行的位置處重新開始所述應用或所述操作系統(tǒng)的執(zhí)行的第七程序指令;并且其中所述第七程序指令記錄于所述介質上。
10.如權利要求6所述的計算機程序產品,其中在所述第四程序指令將所述通信隊列傳送給所述第二計算機或所述第二LPAR之前,所述第二虛擬機向所述通信隊列提供工作項目;并且進一步包括在所述第一計算機或所述第一LPAR中停止所述第二虛擬機的第七程序指令;所述第一計算機或所述第一LPAR中將所述第二虛擬機的操作系統(tǒng)和應用傳送給所述第二計算機或所述第二LPAR的第八程序指令,以及將所述第二虛擬機的所述操作系統(tǒng)和應用寫入所述第二計算機或所述第二LPAR中的所述第二虛擬機專用的第三專用存儲器中的第九程序指令;所述第一計算機或所述第一LPAR中將所述第二虛擬機的通信隊列傳送給所述第二計算機或所述第二LPAR的第十程序指令,以及將所述第二虛擬機的所述通信隊列寫入所述第二共享存儲器中的第十一程序指令;以及在所述第二計算機或第二LPAR中重新開始所述第二虛擬機的第十二程序指令,并且其中所述第二計算機或所述第二LPAR中的所述第二虛擬機使用與所述第二虛擬機在向所述第一計算機或所述第一LPAR中的所述第一虛擬機的所述通信隊列提供第一個所述工作項目時所使用的相同地址向所述第二計算機或所述第二LPAR中的所述第一虛擬機的所述通信隊列提供另一工作項目;并且所述第七、第八、第九、第十、第十一、第十二和第十三程序指令記錄于所述介質上。
11.一種用于將第一虛擬機和通信隊列從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的方法,在遷移之前,所述第一虛擬機包括在專用于所述第一虛擬機的第一專用存儲器中的操作系統(tǒng)和應用,在遷移之前,所述通信隊列駐留于由所述第一計算機或所述第一LPAR中的所述第一虛擬機和第二虛擬機共享的第一共享存儲器中,所述方法包括以下步驟將所述操作系統(tǒng)和應用從所述第一專用存儲器復制到由所述第一和第二計算機或所述第一和第二LPAR共享的共享存儲設備;將所述通信隊列從所述第一共享存儲器復制到所述共享存儲設備;將所述操作系統(tǒng)和應用從所述共享存儲設備復制到所述第二計算機或第二LPAR中所述第一虛擬機專用的第二專用存儲器,并在所述第二計算機或第二LPAR中重新開始所述第一虛擬機;以及將所述通信隊列從所述共享存儲設備復制到由所述第二計算機或第二LPAR中的所述第一、第三和第四虛擬機共享的第二共享存儲器。
12.如權利要求11所述的方法,進一步包括將所述通信隊列從所述第二共享存儲器附加到所述第二計算機或第二LPAR中的所述第一虛擬機的步驟。
13.如權利要求11所述的方法,進一步包括以下步驟將所述第一計算機或第一LPAR中的所述第一虛擬機所使用的所述通信隊列的地址從所述第一專用存儲器復制到所述共享存儲設備,且然后復制到所述第二專用存儲器,以使所述第一虛擬機在所述第二計算機或第二LPAR中將使用所述地址訪問所述第二共享存儲器中的所述通信隊列。
14.如權利要求11所述的方法,進一步包括以下步驟在將所述應用和所述操作系統(tǒng)復制到所述共享存儲設備的步驟之后,停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行;將所述應用或所述操作系統(tǒng)的程序狀態(tài)字從所述第一專用存儲器復制到所述共享存儲設備,且然后復制到所述第二專用存儲器,以使所述第二計算機或第二LPAR中的所述第一虛擬機在重新開始時將使用所述程序狀態(tài)字來從其停止所述應用或所述操作系統(tǒng)在所述第一計算機或所述第一LPAR中的執(zhí)行的位置處重新開始所述應用或所述操作系統(tǒng)的執(zhí)行。
15.如權利要求11所述的方法,進一步包括以下步驟在將所述通信隊列從所述第一共享存儲器復制到所述共享存儲設備的步驟之前,所述第二虛擬機向所述通信隊列提供工作項目;將所述第二虛擬機的操作系統(tǒng)和應用從所述第一專用存儲器復制到所述共享存儲設備;將所述第二虛擬機的通信隊列從所述第一共享存儲器復制到所述共享存儲設備;將所述第二虛擬機的所述操作系統(tǒng)和應用從所述共享存儲設備復制到所述第二計算機或所述第二LPAR中所述第二虛擬機專用的第三專用存儲器,并在所述第二計算機或第二LPAR中重新開始所述第二虛擬機;以及將所述第二虛擬機的所述通信隊列從所述共享存儲設備復制到所述第二共享存儲器,以使所述第二計算機或所述第二LPAR中的所述第一虛擬機可獲取由所述第二虛擬機在所述第一實計算機或所述第一LPAR中時所提供的所述工作項目,且所述第二虛擬機當在所述第二計算機或所述第二LPAR中時可使用與所述第二虛擬機當在所述第一計算機或所述第一LPAR中向所述通信隊列提供第一個所述工作項目時所使用的相同地址向所述通信隊列提供另一工作項目。
16.如權利要求11所述的方法,進一步包括向所述第二實計算機或所述第二LPAR通知所述共享存儲設備中的所述操作系統(tǒng)、應用和通信隊列的步驟。
17.一種用于將第一虛擬機和通信隊列從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的計算機程序產品,在遷移之前,所述第一虛擬機包括在專用于所述第一虛擬機的第一專用存儲器中的操作系統(tǒng)和應用,在遷移之前,所述通信隊列駐留于由所述第一計算機或所述第一LPAR中的所述第一虛擬機和第二虛擬機共享的第一共享存儲器中,所述計算機程序產品包括計算機可讀介質;將所述操作系統(tǒng)和應用從所述第一專用存儲器復制到由所述第一和第二計算機或所述第一和第二LPAR共享的共享存儲設備的第一程序指令;將所述通信隊列從所述第一共享存儲器復制到所述共享存儲設備的第二程序指令;將所述操作系統(tǒng)和應用從所述共享存儲設備復制到所述第二計算機或第二LPAR中所述第一虛擬機專用的第二專用存儲器,并在所述第二計算機或第二LPAR中重新開始所述第一虛擬機的第三程序指令;以及將所述通信隊列從所述共享存儲設備復制到由所述第二計算機或第二LPAR中的所述第一虛擬機以及第三和第四虛擬機共享的第二共享存儲器的第四程序指令;并且其中所述第一、第二、第三和第四程序指令記錄于所述介質上。
18.如權利要求17所述的計算機程序產品,進一步包括將所述通信隊列從所述第二共享存儲器附加到所述第二計算機或第二LPAR中的所述第一虛擬機的第五程序指令;并且其中所述第五程序指令記錄于所述介質上。
19.如權利要求17所述的計算機程序產品,進一步包括將所述第一計算機或第一LPAR中的所述第一虛擬機所使用的所述通信隊列的地址從所述第一專用存儲器復制到所述共享存儲設備,且然后復制到所述第二專用存儲器,以使所述第一虛擬機在所述第二計算機或第二LPAR中將使用所述地址訪問所述第二共享存儲器中的所述通信隊列的第五指令程序;并且其中所述第五程序指令記錄于所述介質上。
20.如權利要求17所述的計算機程序產品,進一步包括在所述第一程序指令將所述應用和所述操作系統(tǒng)復制到所述共享存儲設備之后,停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行的第五程序指令;以及將所述應用或所述操作系統(tǒng)的程序狀態(tài)字從所述第一專用存儲器復制到所述共享存儲設備,且然后復制到所述第二專用存儲器,以使所述第二計算機或第二LPAR中的所述第一虛擬機在重新開始時將使用所述程序狀態(tài)字從其停止所述應用或所述操作系統(tǒng)在所述第一計算機或所述第一LPAR中的執(zhí)行的位置處重新開始所述應用或所述操作系統(tǒng)的執(zhí)行的第六指令程序;并且其中所述第五和第六程序指令記錄于所述介質上。
21.如權利要求17所述的計算機程序產品,其中在將所述通信隊列從所述第一共享存儲器復制到所述共享存儲設備的步驟之前,所述第二虛擬機向所述通信隊列提供工作項目;并且進一步包括將所述第二虛擬機的操作系統(tǒng)和應用從所述第一專用存儲器復制到所述共享存儲設備的第五程序指令;將所述第二虛擬機的通信隊列從所述第一共享存儲器復制到所述共享存儲設備的第六程序指令;將所述第二虛擬機的所述操作系統(tǒng)和應用從所述共享存儲設備復制到所述第二計算機或第二LPAR中所述第二虛擬機專用的第三專用存儲器,并在所述第二計算機或第二LPAR中重新開始所述第二虛擬機的第七程序指令;以及將所述第二虛擬機的所述通信隊列從所述共享存儲設備復制到所述第二共享存儲器,以使所述第二計算機或所述第二LPAR中的所述第一虛擬機可獲取由所述第二虛擬機在所述第一實計算機或所述第一LPAR中時所提供的所述工作項目的第八程序指令,且所述第二虛擬機當在所述第二計算機或所述第二LPAR中時可使用與所述第二虛擬機當在所述第一計算機或所述第一LPAR中向所述通信隊列提供第一個所述工作項目時所使用的相同地址向所述通信隊列提供另一工作項目;并且其中所述第五、第六、第七和第八程序指令記錄于所述介質上。
22.如權利要求17所述的計算機程序產品,進一步包括向所述第二實計算機或所述第二LPAR通知所述共享存儲設備中的所述操作系統(tǒng)、應用和通信隊列的第五程序指令;并且其中所述第五程序指令記錄于所述介質上。
23.一種用于將第一虛擬機從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的方法,在遷移之前,所述第一虛擬機包括在專用于所述第一虛擬機的第一專用存儲器中的操作系統(tǒng)和應用,所述方法包括以下步驟將所述第一虛擬機的通信隊列存儲于由所述第一和第二計算機或所述第一和第二LPAR所共享的共享存儲器中;將所述操作系統(tǒng)和應用從所述第一專用存儲器復制到所述共享存儲器;以及將所述操作系統(tǒng)和應用從所述共享存儲器復制到所述第二計算機或第二LPAR中所述第一虛擬機專用的第二專用存儲器,并在所述第二計算機或第二LPAR中重新開始所述第一虛擬機。
24.如權利要求23所述的方法,進一步包括將所述通信隊列從所述共享存儲器附加到所述第二計算機或第二LPAR中的所述第一虛擬機的步驟。
25.如權利要求23所述的方法,進一步包括以下步驟將所述第一計算機或第一LPAR中的所述第一虛擬機所使用的所述通信隊列的地址從所述第一專用存儲器復制到所述共享存儲器,且然后復制到所述第二專用存儲器,以使所述第一虛擬機在所述第二計算機或第二LPAR中將使用所述地址訪問所述共享存儲器中的所述通信隊列。
26.如權利要求23所述的方法,進一步包括以下步驟在將所述應用和所述操作系統(tǒng)復制到所述共享存儲器的步驟之后,停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行;以及將所述應用或所述操作系統(tǒng)的程序狀態(tài)字從所述第一專用存儲器復制到所述共享存儲器,且然后復制到所述第二專用存儲器,以使所述第二計算機或第二LPAR中的所述第一虛擬機在重新開始時將使用所述程序狀態(tài)字從其停止所述應用或所述操作系統(tǒng)在所述第一計算機或所述第一LPAR中的執(zhí)行的位置處重新開始所述應用或所述操作系統(tǒng)的執(zhí)行。
27.如權利要求23所述的方法,進一步包括以下步驟在將所述應用和所述操作系統(tǒng)復制到所述共享存儲器的步驟之后,停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行;以及在停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行的步驟之前,所述第一計算機或所述第一LPAR中的所述第二虛擬機向所述通信隊列提供第一工作項目;以及在所述第二計算機或所述第二LPAR中重新開始所述應用的執(zhí)行的步驟之后,所述第一計算機或所述第一LPAR中的所述第二虛擬機向所述通信隊列提供第二工作項目;并且其中所述第二虛擬機使用用于所述通信隊列的相同地址向所述通信隊列提供所述第一和第二工作項目。
28.一種用于將第一虛擬機從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的計算機程序產品,在遷移之前,所述第一虛擬機包括在專用于所述第一虛擬機的第一專用存儲器中的操作系統(tǒng)和應用,所述計算機程序產品包括計算機可讀介質;將所述第一虛擬機的通信隊列存儲于由所述第一和第二計算機或所述第一和第二LPAR所共享的共享存儲器中的第一程序指令;將所述操作系統(tǒng)和應用從所述第一專用存儲器復制到所述共享存儲器的第二程序指令;以及將所述操作系統(tǒng)和應用從所述共享存儲器復制到所述第二計算機或第二LPAR中所述第一虛擬機專用的第二專用存儲器,并在所述第二計算機或第二LPAR中重新開始所述第一虛擬機的第三程序指令;并且其中所述第一、第二和第三程序指令記錄于所述介質上。
29.如權利要求28所述的計算機程序產品,進一步包括將所述通信隊列從所述共享存儲器附加到所述第二計算機或第二LPAR中的所述第一虛擬機的第四程序指令;并且其中所述第四程序指令記錄在所述介質上。
30.如權利要求28所述的計算機程序產品,進一步包括將所述第一計算機或第一LPAR中的所述第一虛擬機所使用的所述通信隊列的地址從所述第一專用存儲器復制到所述共享存儲器,且然后復制到所述第二專用存儲器,以使所述第一虛擬機在所述第二計算機或第二LPAR中將使用所述地址來訪問所述共享存儲器中的所述通信隊列的第四程序指令;并且其中所述第四程序指令記錄于所述介質上。
31.如權利要求28所述的計算機程序產品,進一步包括在所述第一程序指令將所述應用和所述操作系統(tǒng)復制到所述共享存儲器之后,停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行的第四程序指令;以及將所述應用或所述操作系統(tǒng)的程序狀態(tài)字從所述第一專用存儲器復制到所述共享存儲器,且然后復制到所述第二專用存儲器,以使所述第二計算機或第二LPAR中的所述第一虛擬機在重新開始時將使用所述程序狀態(tài)字從其停止所述應用或所述操作系統(tǒng)在所述第一計算機或所述第一LPAR中的執(zhí)行的位置處重新開始所述應用或所述操作系統(tǒng)的執(zhí)行的第五程序指令,并且其中所述第四和第五程序指令記錄在所述介質上。
32.如權利要求28所述的計算機程序產品,進一步包括在所述第一程序指令將所述應用和所述操作系統(tǒng)復制到所述共享存儲器之后,停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行的第四程序指令;并且其中在所述第四程序指令停止所述應用在所述第一計算機或所述第一LPAR中的執(zhí)行之前,所述第一計算機或所述第一LPAR中的所述第二虛擬機向所述通信隊列提供第一工作項目;以及在所述第三程序指令在所述第二計算機或所述第二LPAR中重新開始所述應用的執(zhí)行之后,所述第一計算機或所述第一LPAR中的所述第二虛擬機向所述通信隊列提供第二工作項目;以及所述第二虛擬機使用用于所述通信隊列的相同地址向所述通信隊列提供所述第一和第二工作項目;以及所述第四程序指令記錄于所述介質上。
全文摘要
本發(fā)明提供了一種用于將第一虛擬機從第一實計算機遷移到第二實計算機或從同一實計算機中的第一LPAR遷移到第二LPAR的系統(tǒng)、方法和程序產品。在遷移之前,第一虛擬機包括在該第一虛擬機專用的第一專用存儲器中的操作系統(tǒng)和應用。第一虛擬機的通信隊列駐留于由第一和第二計算機或第一和第二LPAR共享的共享存儲器中。將該操作系統(tǒng)和應用從第一專用存儲器復制到該共享存儲器。將操作系統(tǒng)和應用從該共享存儲器復制到第二計算機或第二LPAR中第一虛擬機專用的第二專用存儲器。然后,第一虛擬機在第二計算機或第二LPAR中重新開始。
文檔編號G06F9/46GK1696902SQ20051005545
公開日2005年11月16日 申請日期2005年3月17日 優(yōu)先權日2004年5月11日
發(fā)明者J·A·亨特, S·舒爾茨 申請人:國際商業(yè)機器公司