迁移虚拟机的系统、方法和程序的利记博彩app

文档序号:6539441阅读:153来源:国知局
专利名称:迁移虚拟机的系统、方法和程序的利记博彩app
技术领域
本发明涉及一般涉及计算机系统,更具体地,涉及虚拟机在同一实计算机内从一个逻辑分区到另一个逻辑分区、或从一个实计算机到另一个实计算机的迁移。
背景技术
现今,虚拟机操作系统是广为人知的,其包括一系统管理程序(hypervisor)及由系统管理程序形成的各单独的虚拟机。在IBM z/VM操作系统中,系统管理程序称作控制程序(“CP”)。每一虚拟机还称作一“用户部分”或“客户”(guest)。虚拟机是诸如处理器、存储器、存储设备和I/O(即网卡、打印机和显示器)的计算机资源的虚拟共享/分区。在每一虚拟机上执行/运行着一客户操作系统。在每一客户操作系统上运行着一个或多个应用。
还已知通过对实计算机资源进行逻辑划分来对该计算机进行逻辑分区。用户定义每一逻辑分区(“LPAR”),即用于每一LPAR的处理器、存储器和存储设备的数量。可向每一LPAR分配特定的实计算机资源或全部计算机资源的份额。然后,在某些计算机中,单独的系统管理程序被加载到每一LPAR中,以在每一逻辑分区内形成多个虚拟机。每一个这样的虚拟机是分配给它的LPAR的资源的虚拟共享。
即使每一应用和客户操作系统在一虚拟机中执行,它们象正运行于它们自己专用的、实计算机上一样进行操作。下面是已知虚拟机怎样使用它的处理器或处理器时间的份额来执行工作项目的示例。每一虚拟机都有它自己的同步或锁定功能、工作队列分配功能、工作调度程序和分配给该虚拟机的工作项目或任务的相关队列。在这一示例中,同步或锁定功能、工作队列分配功能、工作调度程序和工作队列都是该虚拟机专用的。同步或锁定功能管理工作队列的锁定,以控制哪些工作项目必须顺序运行而哪些任务可并行运行。工作队列分配功能是该虚拟机内的程序功能,其在由该虚拟机生成工作项目时将该工作项目添加到该虚拟机的工作队列中。基于分配算法将该工作项目添加到队列中的一位置。分配算法可以考虑这样的因素,如每一工作项目的相对优先级别,以及工作项目被创建的顺序,即先入先出。在队列中的每一工作项目包括指示其类型、及因此该虚拟机内的哪个功能最适于处理它的信息。“工作调度程序”是调度它的队列中的每一工作项目以便执行的程序功能。工作调度程序将工作项目传递给该虚拟机内的适当功能以由虚拟处理器来执行。
还已知多个虚拟机共享一工作队列以在这些虚拟机和它们各自的实处理器份额之间分配工作项目。利用一服务器虚拟机来为其他“工作”虚拟机“容纳”(host)这一共享工作队列。该共享工作队列驻留于服务器虚拟机专用的存储器中。当一工作虚拟机创建新的工作项目,且用于这一工作虚拟机的工作队列分配功能决定将这一新的工作项目发送到服务器虚拟机时,它使用一通信协议(例如TCP/IP)及虚拟I/O设备驱动程序将此工作项目发送到这一服务器虚拟机。然后,服务器虚拟机以该服务器虚拟机所确定的顺序将该新的工作项目放置在共享工作队列中。当一工作虚拟机内的虚拟CPU可用于执行共享工作队列中的工作项目时,这一工作虚拟机内的工作调度程序使用一通信协议和虚拟I/O设备驱动程序来向服务器虚拟机作出请求。作为响应,服务器虚拟机使用一通信协议向作出此请求的工作虚拟机发送工作项目。尽管这一安排提供了共享的工作队列,但它需要很高开销的通信协议来将工作项目发送到工作队列和从工作队列获得工作项目。
Csaey等人于2003年4月29日提交的序列号10/425,470、题为“Management of Virtual Machines to Utilize Shared Resources”(管理虚拟机以利用共享资源)的美国专利申请公开了当应用受资源限制时一虚拟机包括它的操作系统和应用的“克隆”。这将增加分配给该(些)应用的总计算机资源的比例,因为现在有一附加虚拟机(带有它的资源份额)运行该(些)应用。在此引入这一专利申请,作为本公开的一部分,以供参考。Donovan等人于2003年4月29日提交的序列号10/425,468、题为“Management of Locks in a Virtual Machine Environment”(对虚拟机环境中锁定的管理)的美国专利申请公开了一种具有由多个虚拟机共享的工作队列和工作队列锁定结构的共享存储器。该多个虚拟机可直接访问该共享的锁定结构和共享的工作队列。在此引入这一专利申请,作为本公开的一部分,以供参考。
已知计算机包括插入该计算机中的物理通信卡。当通信卡接收到来自另一计算机的消息时,该通信卡向该计算机内的CPU发送中断。作为响应,CPU将调用该计算机内的一程序功能以取出并处理该消息。可将物理通信卡移除并插入另一计算机。任何包含在物理通信卡内的存储器中且还未由该初始计算机读取的消息对于该另一个人计算机将是不可用的。此外,在物理通信卡从初始计算机到另一个人计算机的移动期间发送给物理通信卡的消息将会丢失。
已知计算机包括向(盘)存储设备写数据和从(盘)存储设备读数据的物理块I/O卡。在写模式期间,计算机的CPU将数据块传递到块I/O,并请求将其写入存储设备。作为响应,块I/O卡将数据写入存储设备,然后向CPU发送回中断,指示I/O完成。当接收到中断时,CPU得知数据块已被成功写入存储设备,随后可相应地继续进行,例如从存储器中擦除该数据。在读模式期间,CPU请求块I/O卡从存储设备中读取特定数据块。作为响应,块I/O卡从存储设备中读出该数据,并将其写入可由CPU访问的缓冲器中。然后,块I/O卡向CPU发送回中断,指示I/O完成。在接收到中断之后,CPU可从缓冲器中读出数据。可移除物理块I/O卡,并将其插入另一计算机中。然而在物理块I/O卡从该初始计算机到该另一个人计算机的移动期间,在当前在物理块I/O卡上进行中的任何I/O请求都会丢失。
已知将虚拟机从一个实计算机到另一个实计算机和在一个实计算机内从一个LPAR到另一个LPAR迁移。Adesse公司的单系统映象(SingleSytem Image)可保存虚拟机的状态并迁移此虚拟机,但只是在不存在进行中的I/O且该虚拟机没有通信设备时才可这样。Brookhaven NationalLaboratory的题为“Guest Save/Restore Facility”(客户保存/恢复工具)的研究项目可保存虚拟机的状态并在未来的某个时间恢复此虚拟机,但只是在不存在进行中的I/O且该虚拟机没有通信设备时才可这样。Mirasoft公司的分布式设备可保存虚拟机的状态并迁移此虚拟机,但只是在不存在进行中的I/O且该虚拟机没有通信设备时才可这样。利用这三种产品,不允许虚拟机间的通信。不具有处理“进行中的”I/O的能力,所述“进行中的”I/O即从一个虚拟机发送到另一个虚拟机、但该另一个虚拟机还未接收到或处理的通信和数据。
VMWare公司的VMMotion程序将应用,包括它的程序代码、状态信息、寄存器、存储器等从一个实计算机迁移到另一个实计算机。该应用在其中执行的计算机系统使用通信设备,该通信设备包括虚拟网络接口卡。在该应用迁移之前,将进入的通信停止一段时间且将先前的通信完成,以便在迁移期间不会存在“进行中的”通信。该应用在其中执行的计算机系统还使用用于存储块数据的盘驱动程序和盘。在应用的迁移之前,将盘I/O操作停止一段时间且将先前的盘I/O操作完成,以便在迁移期间不会存在未解决的I/O。
当前,有一针对于将一Linux映象从一个实计算机移动到另一个实计算机的称为“Partition映象”的开放源码项目。它将Linux映象保存到盘中,然后这一映象可被迁移到另一计算机。但是,在保存该映象之前,所有通信和盘I/O必须完成,并停止。此外,一Tivoli系统自动化(TivoliSystem Automation)程序将应用从一个计算机转移到另一个计算机。该应用在其中执行的计算机系统使用用于从源计算机到目标计算机的通信的物理卡。该计算机系统使用用于存储数据块的设备驱动程序和盘。在迁移之前,将通信设备停止一段时间且将先前的通信完成,以便在迁移期间不会存在进行中的通信。同样,将盘I/O操作在迁移之前停止一段时间且将先前的I/O请求完成,以便在迁移期间不会存在未解决的I/O。
本发明的目的在于有效地将虚拟机在同一实计算机内从一个逻辑分区迁移到另一个逻辑分区,或从一个实计算机迁移到另一个实计算机。
本发明的另一目的在于在对于一虚拟机的通信正在进行中时迁移该虚拟机,而不丢失通信或将随后的通信停止一可觉察的时间量。

发明内容
本发明在于用于将第一虚拟机和通信队列从第一实计算机迁移到第二实计算机或从同一实计算机内的第一LPAR迁移到第二LPAR的系统、计算机程序产品和方法。在迁移之前,第一虚拟机包括在该第一虚拟机专用的第一专用存储器中的操作系统和应用。在迁移之前,通信队列驻留于由第一计算机或第一LPAR中的第一虚拟机和第二虚拟机共享的第一共享存储器中。将第一虚拟机在第一计算机或第一LPAR中停止。第一计算机或第一LPAR将操作系统和应用传送给第二计算机或第二LPAR,而第二计算机或第二LPAR将该操作系统和应用写入第二计算机或第二LPAR中第一虚拟机专用的第二专用存储器中。第一计算机或第一LPAR将通信队列传送给第二计算机或第二LPAR,而第二计算机或第二LPAR将该通信队列写入由第二计算机或第二LPAR中的第二、第三和第四虚拟机共享的第二共享存储器中。将第一虚拟机在第二计算机或第二LPAR中重新开始。
根据本发明的另一个特征,提供一种用于将第一虚拟机从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的系统、方法和程序产品。在迁移之前,第一虚拟机包括在该第一虚拟机专用的第一专用存储器中的操作系统和应用。通信队列驻留于由第一计算机或第一LPAR中的第一虚拟机和第二虚拟机共享的第一共享存储器中。将该操作系统和应用从第一专用存储器复制到由第一和第二计算机或第一和第二LPAR共享的共享存储设备。将通信队列从第一共享存储器复制到该共享存储设备。向第二实计算机或第二LPAR通知该共享存储设备中的操作系统、应用和通信队列。将操作系统和应用从该共享存储设备复制到第二计算机或第二LPAR中第一虚拟机专用的第二专用存储器。在第二计算机或第二LPAR中重新开始第一虚拟机。将通信队列从共享存储设备复制到由第二计算机或第二LPAR中的第一、第三和第四虚拟机共享的第二共享存储器。
根据本发明的另一特征,提供一种用于将第一虚拟机从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的系统、方法和程序产品。在迁移之前,第一虚拟机包括在该第一虚拟机专用的第一专用存储器中的操作系统和应用。第一虚拟机的通信队列驻留于由第一和第二计算机或第一和第二LPAR共享的共享存储器中。将该操作系统和应用从第一专用存储器复制到该共享存储器。将操作系统和应用从该共享存储器复制到第二计算机或第二LPAR中第一虚拟机专用的第二专用存储器。然后,将第一虚拟机在第二计算机或第二LPAR中重新开始。


图1是具有两个逻辑分区、每一逻辑分区中的各自的共享存储器和多个虚拟机的实计算机的方框图,且其示出根据本发明一个实施例用于将虚拟机从一个逻辑分区迁移到另一逻辑分区的过程。
图2是两个单独的实计算机、每一实计算机中各自的共享存储器和多个虚拟机的方框图,且其示出根据本发明另一实施例用于将虚拟机从一个实计算机迁移到另一实计算机的过程。
图3是具有两个逻辑分区、每一逻辑分区中的多个虚拟机、和由这两个逻辑分区共享的存储器的实计算机的方框图,且其示出根据本发明另一实施例用于将虚拟机从一个逻辑分区迁移到另一逻辑分区的过程。
图4是两个单独的实计算机、每一实计算机中的多个虚拟机、及由这两个实计算机共享的存储器的方框图,且其示出根据本发明另一实施例用于将虚拟机从一个实计算机迁移到另一实计算机的过程。
图5是具有两个逻辑分区、每一逻辑分区中的各自的共享存储器、由这两个逻辑分区共享的存储设备、和多个虚拟机的实计算机的方框图,且其示出根据本发明一个实施例用于将虚拟机从一个逻辑分区迁移到另一逻辑分区的过程。
图6是两个单独的实计算机、每一实计算机中各自的共享存储器、由这两个计算机共享的存储设备、和多个虚拟机的方框图,且其示出根据本发明另一实施例用于将虚拟机从一个实计算机迁移到另一实计算机的过程。
图7是示出图1、2、3、4、5和6的共享存储器中用于虚拟机的通信队列和共享块存储器的方框图。
图8是示出图1、2、3、4、5和6的共享存储器中用于虚拟机的通信队列和专用块存储器的方框图。
图9是示出图1和2的计算机系统内虚拟机迁移过程的流程图。
图10是示出图3和4的计算机系统内虚拟机迁移过程的流程图。
图11是示出图5和6的计算机系统内虚拟机迁移过程的流程图。
具体实施例方式
现在,参照附图详细描述本发明,在这些附图中相同的参考标号指示相同的部件。图1示出根据本发明的一个实施例一般地表示为110的计算机系统。计算机系统110包括含有CPU 23和、RAM 24、逻辑分区程序25、网络端口(未示出)和操作员控制台27的实/物理计算机20。计算机系统110还包括外部(盘)存储设备26。作为举例,实计算机20可以是IBM z系列主机,尽管本发明也可实现于其他服务器计算机或个人计算机中。在图1所示的实施例中,程序25将实计算机20划分为逻辑分区(“LPAR”)30和31,尽管如果需要的话,程序25可将计算机20划分为更多的逻辑分区。LPAR是计算机20的实计算机资源的逻辑分区。例如,如果计算机20包括8个处理器,则可向LPAR 30分配4个处理器,向LPAR31分配其他4个处理器。程序25还在LPAR 30和LPAR 31之间划分总的存储器24,通常作为“虚拟”存储器。在所示出的实施例中,LPAR 30和LPAR 31都可访问/共享存储设备26,用于诸如存储较大文件的一般目的和用于一旦紧急停机迫近时的应急存储器备份。“虚拟”存储器分配是虚拟存储器地址范围到每一LPAR的基本分配,而不管在实存储器中的物理位置。程序25依据地址转换表将每一LPAR所使用的虚拟地址转换为其处存储有实际数据的实存储器地址。这两个LPAR中的虚拟机按照虚拟地址访问共享存储设备26。
系统管理程序40和41分别在LPAR 30和31上执行。系统管理程序40将LPAR 30划分为多个虚拟机33、34和35。换句话说,系统管理程序40对LPAR 30的计算机资源(包括处理器23和存储器24的份额)进行逻辑划分和虚拟化,以形成用于每一虚拟机33-35的平台。实处理器23的虚拟共享是分配给LPAR 30的处理器的时间共享。实存储器24的虚拟共享是映射到RAM 24的虚拟地址范围。系统管理程序40为LPAR 30中的每一虚拟机分配映射到RAM 24的(虚拟)一专用存储器(“VPM”)范围。系统管理程序40还为LPAR 30中的所有虚拟机33-35定义映射到RAM24的(虚拟)共享存储器50。当一虚拟机33-35对它的(虚拟)专用存储器或虚拟共享存储器50进行寻址时,系统管理程序40将虚拟存储器地址转换为实存储器24的实地址。(如果需要,系统管理程序40还可定义只由LPAR 30上的虚拟机33-35使用的共享存储设备26的一部分,以及只由LPAR 31上的虚拟机使用的共享存储设备26的另一部分。)对于LPAR 30中的每一虚拟机,客户操作系统和应用执行于分配给该虚拟机的(虚拟)处理器之上。客户操作系统43-45分别执行于虚拟机33-35之上,而应用53-55分别执行于客户操作系统43-45之上。然而,可以有多个应用执行于每一客户操作系统上。作为举例,客户操作系统可以是Linux(Linus Torvalds的商标)操作系统或IBM CMS操作系统。其他客户操作系统也是可行的,例如Microsoft Windows(tm)操作系统、Unix(tm)操作系统、Sun Microsystems Solaris(tm)操作系统、或Hewlett Packard HPUX操作系统。作为举例,应用53-55可以是IBM DB2数据库管理应用、IBM Websphere应用、或其他应用。应用53-55的性质不构成本发明的一部分,除非它们可产生到相同或不同实计算机上的其他虚拟机的通信或作为来自这些其他虚拟机的通信的目标。此外,应用53-55可请求从“块”存储器中读取数据块或向其写入数据块,在某些情况下,是请求从它们自己专用的块存储器中读取数据块或向其写入数据块,而在另一些情况下,是请求从同一LPAR中的其他虚拟机的块存储器中读取数据块或向其写入数据块。
LPAR 30中每一虚拟机的客户操作系统和应用存储于分配给该虚拟机的专用存储器中。该虚拟机的专用存储器还包含由客户操作系统、应用、用于该操作系统和应用的程序状态字(也称作“CPU状态”)、及在该客户操作系统和应用的处理期间所使用的数据寄存器所产生的数据。程序状态字指示程序中的哪一行当前正在执行或接下来将要执行。程序状态字还指示哪些中断是允许的、哪些指令是允许的、及哪些存储器可以访问。
同样,系统管理程序41最初将LPAR 31划分为虚拟机36和37,随后,在虚拟机33M、34M和35M从LPAR 30迁移来之后进一步将LPAR31划分为附加的虚拟机33M、34M和35M。换句话说,系统管理程序41对LPAR 31的计算机资源(包括处理器23、存储器24和存储设备26的份额)进行逻辑划分和虚拟化,以形成每一个虚拟机36、37、33M、34M和35M。系统管理程序41为这些虚拟机中的每一个分配映射到RAM 24的(虚拟)专用存储器(“VPM”)。系统管理程序41还为LPAR 31中的所有虚拟机36、37、33M、34M和35M定义映射到RAM 24的(虚拟)共享存储器51。当虚拟机36、37、33M、34M或35M或虚拟机36、37、33M、34M或35M中的应用对它的(虚拟)专用存储器或虚拟共享存储器51进行寻址时,系统管理程序41将虚拟存储器地址转换为实存储器24的实地址。
对于LPAR 31中的每一虚拟机,客户操作系统和应用执行于分配给该虚拟机的处理器之上。客户操作系统46和47分别执行于虚拟机36和37之上,而应用56和57分别执行于客户操作系统46和47之上。然而,可以有多个应用执行于每一客户操作系统上。作为举例,客户操作系统可以是Linux(Linus Torvalds的商标)操作系统或IBM CMS操作系统。其他客户操作系统也是可行的,例如Microsoft Windows(tm)操作系统、Unix(tm)操作系统、Sun Microsystems Solaris(tm)操作系统、或Hewlett Packard HPUX操作系统。作为举例,应用56-57可以是IBM DB2数据库管理应用、IBM Websphere应用、或其他应用。应用56-57的性质不构成本发明的一部分,除非它们可产生到相同或不同实计算机上的其他虚拟机的通信或作为来自这些其他虚拟机的通信的目标。此外,应用56-57可请求从“块”存储器中读取数据块或向其写入数据块,在某些情况下,是请求从它们自己专用的块存储器中读取数据块或向其写入数据块,而在另一些情况下,是请求从同一LPAR中的其他虚拟机的块存储器中读取数据块或向其写入数据块。
LPAR 31中每一虚拟机的客户操作系统和应用存储于分配给该虚拟机的专用存储器中。该虚拟机的专用存储器还包含由客户操作系统、应用、用于该操作系统和应用的程序状态字(也称作“CPU状态”)、及在该客户操作系统和应用的处理期间所使用的数据寄存器所产生的数据。
作为举例,系统管理程序40和41中的每一个可包括现有IBM z/VM版本4.2.0或4.3.0虚拟机操作系统,该虚拟机操作系统具有从LPAR或实计算机形成每一虚拟机的当前能力。但是,系统管理程序40和41还包括根据本发明迁移虚拟机和相关的通信队列和块存储器的新的程序手段,如下面所描述的那样。现有z/VM 4.2.0操作系统的详情在IBM出版物“z/VM4.2.0通用信息”(文档号GC24-5991-03)中进行了公开,该出版物可从国际商业机器公司,信箱29570,IBM出版物,Raleigh,北卡罗莱纳州27626-0570,或在万维网上的www.IBM.com/shop/publications/order处获得。在此引入该出版物,作为本公开的一部分,以供参考。在z/VM操作系统中,系统管理程序40和41称作控制程序(“CP”),“虚拟机”也称作“客户虚拟机”。
如上面所解释的,系统管理程序40定义和管理由LPAR 30上的所有虚拟机33-35所共享的共享存储器区域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中包含文件和目录的存储器区域。每一目录列出块存储器54的内容。在本发明的其中块存储器54是共享的一个实施例中,每一虚拟机33-35可将数据块写入块存储器54及从块存储器54中读出数据块。在本发明的其中块存储器是专用的另一实施例中,LPAR 30中的每一块存储器专用于虚拟机33-35中的各自的虚拟机,以便只有那一个虚拟机能够将数据块写入该块存储器和从该块存储器中读出数据块。
同样,系统管理程序41定义和管理共享存储器区域51,该共享存储器区域由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还可通过系统管理程序41发现迁移后的虚拟机35M和其通信队列的位置,且此后向迁移后的虚拟机35的通信队列提供工作项目。反过来,迁移后的虚拟机35M可通过系统管理程序41发现虚拟机36和37及它们的通信队列的位置,且此后向虚拟机36和37的通信队列提供工作项目。同样,迁移后的虚拟机33M和34M可通过系统管理程序41发现虚拟机36和37及它们的通信队列的位置,且此后向虚拟机36和37的通信队列提供工作项目。
在所示出的其中虚拟机36、37、33M、34M和35M使用共享存储器51即RAM来存储数据的实施例中,块存储器54-1是共享存储器51中包含文件和目录的存储器区域。块存储器54-1是决存储器54的迁移后副本。目录列出块存储器54-1的内容。在本发明的其中块存储器54-3是共享的一个实施例中,虚拟机36、37、33M、34M和35M中的每一个都可向块存储器54-3写入数据块及从块存储器54-3读出数据块。在本发明的其中块存储器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的迁移。例如,如果系统管理程序40知道将要发生崩溃,则系统管理程序40可将它的虚拟机33-35中每一个的专用存储器内容复制到存储设备26中。然后,系统管理程序40可启动虚拟机33-35到LPAR 31和系统管理程序41的迁移,如下面所述的那样,以使虚拟机33-35在系统管理程序40的崩溃之后将保持激活。作为另一个例子,用户可能希望更新或维护系统管理程序40,并且在这种情况下,通知虚拟机33-35的客户操作系统43-45。作为响应,客户操作系统43-45将请求系统管理程序40启动虚拟机33-35到LPAR 31和系统管理程序41的迁移,如下面所述的,以使虚拟机33-35在系统管理程序40的更新或维护期间将保持激活。虚拟机33-35可在系统管理程序40的更新或维护之后迁移回LPAR 30和系统管理程序40。作为另一例子,系统管理员可能通知LPAR 30受限于资源而LPAR 31具有多余的资源,因此系统管理员可通知LPAR 30中的虚拟机33-35中的客户操作系统43-45迁移到LPAR 31。作为响应,虚拟机33-35的客户操作系统43-45请求系统管理程序40为了负载平衡的目的,启动虚拟机33-35到LPAR 31和系统管理程序41的迁移,如下面所述的那样。(虽然未示出,但在这上一个例子中,可能会存在不共享虚拟机33-35的通信队列或块存储器的运行于LPAR 30之上的其他应用或在LPAR 30之上的其他虚拟机,这些其他应用和其他虚拟机不必与虚拟机33-35一起迁移。)下面是参照图1到9,对系统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(虚拟)专用存储器存储客户操作系统45、应用55、由应用生成的数据、用于操作系统和应用的程序状态字(也称作“CPU状态”)、在客户操作系统和应用的处理期间所使用的数据寄存器。虚拟机35还包括它的来自LPAR 30的所分配的计算机资源的份额,但在本发明的这一实施例中,来自LPAR 30的计算机资源的份额不与虚拟机35一起从LPAR 30迁移到LPAR 31;而是,迁移后的虚拟机35M将从LPAR 31接收它的计算机资源的份额。
如上面所解释的,虚拟机35的通信队列52初始驻留于共享存储器50中,且LPAR 30中可访问这一通信队列的所有虚拟机同时迁移。因此,紧接在通信队列52的迁移(及用于虚拟机33和34的通信队列的迁移)之前,系统管理程序40停止LPAR 30上互相访问对方的通信队列的所有虚拟机,以使它们在它们的迁移期间不会试图向这些队列中的任何一个添加通信项目或从这些队列中的任何一个移除通信项目(步骤902)。在所示出的例子中,虚拟机33-35互相访问对方的通信队列,因此在步骤902,系统管理程序40停止所有的虚拟机33-35。如下面所解释的,停止的持续时间很短,例如为5毫秒,因为物理卡未移动,因此迁移所需的时间是短的。
也可能有其他的虚拟机也需要同时迁移。在本发明的一个实施例中,每一个块存储器专用于它各自的虚拟机,即甚至是在同一LPAR中,也没有其他的虚拟机能够对另一虚拟机的块存储器进行写和读。在这一实施例中,不需要由于块存储器而将同一LPAR上的虚拟机作为一组来迁移。但是,仍然需要由于同一LPAR上的虚拟机互相对对方的通信队列的访问,而将其作为一组来迁移。但是,在本发明的另一实施例中,同一LPAR中的每一虚拟机可访问同一LPAR中每一其他虚拟机的块存储器。在这另一实施例中,同一LPAR上可互相访问对方的块存储器的所有虚拟机需要同时迁移。这一组虚拟机通常将与能够互相访问对方的通信队列的虚拟机组一致,因而由于对相互的通信队列的访问,无论如何它们都需要同时迁移。
在LPAR 30中所有必需的虚拟机在步骤902停止之后,系统管理程序40将LPAR 30中虚拟机35的专用存储器(“VPM”)的内容传送给LPAR31的工作存储器81(步骤903)。在步骤903,系统管理程序40还将LPAR30中通信队列52和块存储器54的虚拟地址与虚拟机35的专用存储器内容一起传送给LPAR 31的工作存储器81。这些是虚拟机35用于从共享存储器50中对通信队列52和块存储器54进行寻址的虚拟地址。如下面详细描述的,迁移后的虚拟机35M将使用这些相同的虚拟地址从共享存储器51中对通信队列52-1和块存储器54-1进行寻址;系统管理程序41将把这些虚拟地址映射到共享存储器51。接着,系统管理程序40将虚拟机35的通信队列52从LPAR 30中的共享存储器50传送给LPAR 31的工作存储器81(步骤904)。然后,系统管理程序40将虚拟机35的块存储器54从LPAR 30中的共享存储器50传送给LPAR 31的工作存储器81(步骤908)。如果在迁移之前由于预知停机而将上述数据结构中的任一种(即VPM内容、通信队列的虚拟地址、块存储器的虚拟地址、通信队列或块存储器)复制到存储设备26中,且迁移发生在LPAR 30重新启动之后但在虚拟机35在LPAR 30的存储器中重建之前,则LPAR 30可从存储设备26中取出这些数据结构,以便将它们传送给LPAR 31来进行迁移。但是,一般地,系统管理程序40从虚拟机35的专用存储器55中取出VPM内容、通信队列的虚拟地址和块存储器的虚拟地址,并从共享存储器50中取出通信队列和块存储器。在步骤903和904中从LPAR 30到LPAR 31的通信可使用任何可用的通信工具,例如已知的IBM z系列IUCV、SNA或TCP/IP通信工具。“IUCV”代表Inter-User Communications Vehicle(用户间通信工具),且其是能够使运行于一个虚拟机中的程序通过系统管理程序与其他虚拟机中的其他程序通信的点到点通信工具。IUCV通信通过预定的称作“路径”的连接发生在源虚拟机和目标虚拟机之间。“路径”是一由系统管理程序定义的结构。例如,当一个虚拟机希望与另一个虚拟机IUCV通信时,这一个虚拟机请求系统管理程序指定用于这一通信的路径ID。该系统管理程序还将这一个虚拟机将使用的路径ID通知给另一个虚拟机。当这一个虚拟机希望进行通信时,这一个虚拟机向系统管理程序提供通信信息,且还指定路径ID。然后,系统管理程序接收该信息,将其存储在缓冲器中,并通过IUCV中断通知另一个虚拟机有通信正在指定路径ID处等待。然后,此另一个虚拟机向系统管理程序请求指定路径ID处的通信信息。每一进行通信的虚拟机可具有多个路径,并且可通过同一路径同时接收和发送多个消息。“IBM z/VM V4R4.0CP ProgrammingServices”手册对IUCV通信工具进行了进一步描述。此手册可从国际商业机器公司,信箱29570,Raleigh,北卡罗莱纳州27626-0570处获得。
接着,虚拟机35请求系统管理程序40从LPAR 30中“删除”虚拟机35,即从LPAR 30中删除对虚拟机35的资源分配。作为响应,系统管理程序40删除虚拟机35的资源分配(步骤912)。然而,系统管理程序40将在LPAR 30中保留对虚拟机35的描述,以防用户随后想要在LPAR 30中重新激活虚拟机35。
接着,系统管理程序41从LPAR 31中为将要迁移的虚拟机分配计算机资源(虚拟处理器、虚拟专用存储器、虚拟共享存储器、虚拟专用存储设备和虚拟共享存储设备)(步骤928)。系统管理程序41根据上述数据结构的通信知道该虚拟机正等待在LPAR 31中重新开始(且需要虚拟资源)。然后,系统管理程序41将该虚拟机专用存储器内容(包括通信队列52和块存储器54的虚拟地址)从工作存储器81复制到LPAR 31中最近分配的、迁移后的虚拟机35M的(虚拟)专用存储器中(步骤930)。这在LPAR 31中形成了迁移后的虚拟机35M,尽管虚拟机35还未重新开始/激活。迁移后的虚拟机35M与初始虚拟机35相同,尽管根据LPAR 31中虚拟机的总数和分配给LPAR 31的资源总量而在资源分配上可能会存在某些变化。然后,系统管理程序41或者虚拟机36或37中的客户操作系统(负责重新开始从LPAR 30迁移来的虚拟机)发出“重新开始”虚拟机35M的命令(步骤934)。作为响应,虚拟机35M中的客户操作系统45M和应用将在由迁移后的程序状态(指针)所指示处重新开始执行。
然后,虚拟机36或37中负责虚拟机从LPAR 30的迁移的系统管理程序41或客户操作系统将虚拟机35的通信队列从LPAR 31的工作存储器81复制到共享存储器51(步骤940)(此处为了说明的目的在图1中将其重新标为52-1)。然后,虚拟机36或37中负责块存储器从LPAR 30到LPAR 31的迁移的的系统管理程序41或客户操作系统将块存储器54从LPAR 31的工作存储器81复制到共享存储器51中(步骤944)(此处为了说明的目的将其标为54-1)。
然后,迁移后的虚拟机35M中的客户操作系统45M请求系统管理程序41将通信队列52-1“附加”到LPAR 31中的虚拟机35M(步骤950)。通过这一附加,虚拟机35M中的客户操作系统45M向系统管理程序41通知虚拟机35M将使用什么地址来引用它的通信队列52-1。(这些是虚拟机35在驻留于LPAR 30中时所使用的地址,这些地址随虚拟机35的专用存储器内容一起被复制到虚拟机35M的虚拟专用存储器。)作为响应,系统管理程序41将这些地址与通信队列52-1现在所驻留的共享存储器51中的位置相关联。(同样,其他迁移后的虚拟机34M和35M将请求系统管理程序41将它们各自的通信队列附加到共享存储器51。)因为所有虚拟机33-35(以上面所描述的方式)同时迁移,一旦重新开始,它们将使用与它们在迁移之前在LPAR 30中所使用的相同的虚拟地址互相访问对方的通信队列。系统管理程序41将把这些地址附加到共享存储器51(代替共享存储器50)中的位置。
然后,迁移后的虚拟机35M中的客户操作系统请求系统管理程序41将块存储器54-1“附加”到LPAR 31中的虚拟机35M(步骤954)。通过这一附加,虚拟机35M中的客户操作系统向系统管理程序41通知虚拟机35M将对于块存储器54-1使用什么地址。(这些是虚拟机35当驻留于LPAR 30中时所使用的地址,这些地址随虚拟机35的专用存储器内容一起被复制到虚拟机35M的专用存储器中。)作为响应,系统管理程序41通过将这一块存储器分配给迁移后的虚拟机35M的虚拟共享存储器,而使得块存储器54-3对迁移后的虚拟机35M可用。如果其他虚拟机33-34也被迁移,并且能够访问LPAR 30中虚拟机35的块存储器,则它们将使用与它们用于访问LPAR 30中的块存储器54相同的虚拟地址来访问LPAR31中虚拟机35M的块存储器。系统管理程序41将把这些虚拟地址转换到LPAR 31中的块存储器54-3。
接着,迁移后的虚拟机35M继续执行当虚拟机35在LPAR 30中被停止以便进行迁移时正在进行中的一个或多个工作项目,如果存在这样的工作项目的话。这些工作项目,如果存在的话,在由程序状态字所指示的在迁移期间它们被停止的位置处继续。如果虚拟机35M可用于执行来自通信队列52-1的另一工作项目(判断990,“是”分支),则虚拟机35M从通信队列52-1中获取下一工作项目并对其进行处理,如下面所描述的那样(步骤994)。如果通信队列52-1(或虚拟机35M的任何其他迁移后的工作队列)中不再有工作项目,则虚拟机只是等待指示有工作要做的中断。
如上面所指出的,虚拟机36和37随后可能通过35M所启动的任何可用的通信协议(例如IUCV),获知虚拟机35M(及虚拟机33M和34M)。然后,如果虚拟机36和37希望通过共享存储器51中的通信队列52-1与虚拟机35M进行通信,虚拟机36和37可向系统管理程序41查询以获知虚拟机35M的通信队列52-1的地址。同样,如果虚拟机35M(及虚拟机33M和34M)获知虚拟机36和37并希望与之进行通信,则虚拟机35M(及虚拟机33M和34M)可向系统管理程序41查询以获知共享存储器51中虚拟机36和37的各自通信队列的地址。此外,如果虚拟机36和37希望访问共享存储器51中的块存储器54-1(如果允许的话),或者写数据或者读数据,则虚拟机36和37可向系统管理程序41查询以获知块存储器54-1中虚拟机35M的地址。同样,如果虚拟机35M获知并希望访问共享存储器51中虚拟机36和37的块存储器(如果允许的话),则虚拟机35M可向系统管理程序41查询,以获知共享存储器51中虚拟机36和37各自的块存储器的地址。
图2示出根据本发明另一实施例的计算机系统210,其包括两个单独的物理计算机120和121。计算机120包括系统管理程序40,该系统管理程序定义虚拟机33-35。与系统110不同,计算机120未被划分为LPAR或者说是单个LPAR。计算机121包括系统管理程序41,该系统管理程序最初定义虚拟机36和37,而随后添加迁移后的虚拟机33M、34M和35M。与系统110不同,计算机121未被划分为LPAR或者说是单个LPAR。计算机120包括用于虚拟机33-35的共享存储器50。计算机121包括用于虚拟机36和37、以及随后迁移后的虚拟机33M、34M和35M的共享存储器51。计算机120和121均共享存储设备26,用于一般使用和它们各自存储器的紧急备份。每一个计算机120和121中的每一虚拟机包括在各自共享存储器中的各自通信队列和块存储器。系统210中虚拟机的迁移与系统110中虚拟机的迁移相同,这里不需要重复。
图3示出根据本发明另一实施例的另一计算机系统310。如系统110中那样,系统310包括单个物理计算机20、LPAR 30和31及各自的系统管理程序40和41。系统管理程序40定义虚拟机33-35。系统管理程序41定义虚拟机36、37,以及随后单独的迁移的虚拟机35M。系统310包括用于LPAR 30的共享存储器50和共享存储设备60,及用于LPAR 31的共享存储器51和共享存储设备61。但是,与系统110不同,在系统310中,在虚拟机35从LPAR 30迁移到LPAR 31的过程中不使用的共享存储设备60和61。而是,系统310(与系统110不同)包括由LPAR 30和31及系统管理程序40和41所共享的存储器90(即RAM 24的一虚拟区域)。共享存储器90由LPAR 30和31两者上的所有虚拟机33-37和35M所共享。这样,在这两个LPAR上的所有虚拟机都可访问共享存储器90内的所有数据结构,倘若这些虚拟机知道地址的话。如系统110中一样,系统310中的每一虚拟机包括各自的具有与系统110中相同的内容的专用存储器。系统310在虚拟机35从LPAR 30迁移到LPAR 31的过程中使用共享存储器90,来迁移被迁移虚拟机35的虚拟专用存储器内容。但是,用于系统310中两个LPAR 30和31上的每一虚拟机的通信队列和块存储器初始存储于共享存储器90(而不是共享存储器50或60)中。因此,在系统310中的虚拟机33-35的迁移期间,不必迁移各自的通信队列和块存储器。例如,LPAR 31中迁移后的虚拟机35M直接从共享存储器90访问通信队列52和块存储器54,就象在迁移之前LPAR 30中的虚拟机35(在迁移前)直接从共享存储器90访问通信队列52和块存储器54一样。甚至不需要为了虚拟机35迁移的目的,将通信队列52和块存储器54从共享存储器90中的一个位置移动到共享存储器90中的另一个位置。此外,在只需要迁移互相访问对方的通信队列或块存储器的一组虚拟机中的一个的时候,不必停止或迁移这一组虚拟机。这是因为所迁移的虚拟机的通信队列和块存储器不移动,且在该迁移的虚拟机的迁移期间,其他迁移的虚拟机可继续对该迁移的虚拟机的通信队列(和块存储器,如果允许的话)进行写和读。
下面是参照图3和9,对虚拟机35从系统310中的LPAR 30到LAPR31的迁移的解释。虚拟机35的迁移包括虚拟机35的专用存储器(“VPM”)内容从LPAR 30中的专用存储器到LPAR 31中的专用存储器的迁移。不存在通信队列52或块存储器54的移动;该迁移只需要将这两者重新附加到LPAR 31中迁移后的虚拟机35。
LPAR 30中虚拟机35的(虚拟)专用存储器存储客户操作系统45、应用55、这些应用所生成的数据、用于操作系统和应用的程序状态字(也称作“CPU状态”)、及在客户操作系统和应用的处理期间所使用的数据寄存器。虚拟机35还包括它的从LPAR 30分配的计算机资源的份额,但来自LPAR 30的计算机资源的份额不与虚拟机35一起从LPAR 30迁移到LPAR 31;而是,迁移后的虚拟机35M将从LPAR 31接收到它的计算机资源的份额。为了开始虚拟机35的迁移,系统管理程序40将虚拟机35的专用存储器(“VPM”)的内容复制到共享存储器90(步骤1000)(此处为了说明的目的在图3中将该内容重新标为虚拟机专用存储器内容35-A)。在步骤1000,系统管理程序40还将通信队列52和块存储器54的虚拟地址与虚拟机35的专用存储器内容一起复制到共享存储器90中。这些是由虚拟机35从共享存储器90中对通信队列52和块存储器54进行寻址所使用的虚拟地址。如下面更详细描述的,迁移后的虚拟机35M将使用这些相同的虚拟地址从共享存储器90对通信队列52和块存储器54进行寻址;系统管理程序41将把这些虚拟地址映射到共享存储器90。在由步骤1000所指示的迁移时刻,虚拟机35仍然在LPAR 30和系统管理程序40中执行。然后,系统管理程序41停止虚拟机35在LPAR 30中的执行(步骤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的其他虚拟机,如果存在这样的虚拟机的话。)接着,系统管理程序41从LPAR 31中为要迁移的虚拟机分配计算机资源(虚拟处理器、虚拟专用和共享存储器、及虚拟专用和共享存储设备)(步骤1028)。系统管理程序41根据在作出迁移请求时的用户输入或来自虚拟机35中的系统管理程序40或客户操作系统45的先前通知(该通知可通过TCP/IP或任何其他通信协议发送),知道虚拟机35正等待在LPAR31中重新开始(并需要虚拟资源)。然后,系统管理程序41将虚拟机专用存储器内容35-A(包括通信队列52和块存储器54的虚拟地址)从共享存储器90复制到最近分配的LPAR 31(虚拟)专用存储器(步骤1030)中。这在LPAR 31中形成了迁移后的虚拟机35M,尽管虚拟机35M还未重新开始/激活。迁移后的虚拟机35M与初始虚拟机35相同,尽管可能根据LPAR 31中虚拟机的总数和分配给LPAR 31的资源总量而在资源分配上存在某些变化。然后,虚拟机36或37中的系统管理程序41或客户操作系统(其负责重新开始从LPAR 30迁移来的虚拟机)发出“重新开始”虚拟机35M的命令(步骤1034)。作为响应,虚拟机35M中的客户操作系统和应用35M将在迁移后的程序状态字(指针)所指示的位置重新开始执行。
然后,迁移后的虚拟机35M中的客户操作系统请求系统管理程序41将通信队列52“附加”到LPAR 31中的虚拟机35M(步骤1050)。通过这一附加,虚拟机35M中的客户操作系统向系统管理程序41通知虚拟机35M将使用什么地址来引用通信队列52。(这些是当虚拟机35驻留于LPAR 30中时虚拟机35引用通信队列52所使用的地址,这些地址随虚拟机35的专用存储器内容一起被复制到共享存储器90。)作为响应,系统管理程序41将这些地址与共享存储器90中通信队列52所驻留的位置相关联。因为通信队列52未移动,所以虚拟机33、34和35M可在虚拟机35M的迁移之后访问通信队列52,对虚拟机33或34没有改变。此外,虚拟机36和37可在虚拟机35迁移之后与在虚拟机35迁移之前一样地访问通信队列52(即提供工作项目)。
然后,迁移后的虚拟机35M中的客户操作系统请求系统管理程序31将块存储器54“附加”到LPAR 31中的虚拟机35M(步骤1054)。通过这一附加,虚拟机35M中的客户操作系统45M向系统管理程序41通知虚拟机35M将为块存储器使用什么地址。(这些是当虚拟机35驻留于LPAR30中时所使用的地址,这些地址随虚拟机35的专用存储器内容一起被复制到共享存储器90。)作为响应,系统管理程序41通过将这一块存储器分配给迁移后的虚拟机35M的虚拟共享存储器,使得块存储器54对迁移后的虚拟机35M可用。系统管理程序41将把这些虚拟地址转换到共享存储器90中的块存储器54。
接着,迁移后的虚拟机35M继续执行当虚拟机35在LPAR 30中被停止以便进行迁移时正在进行中的一个或多个工作项目,如果存在这样的工作项目的话。这些工作项目,如果存在的话,根据程序状态字,在迁移期间它们被停止的位置处继续。如果虚拟机35M可用于执行来自通信队列52的另一工作项目(判断1090,“是”分支),则虚拟机35M从通信队列52中获取下一工作项目并对其进行处理,如下面所描述的那样(步骤1094)。如果通信队列52,或任何其他迁移后的工作队列中不再有工作项目,则虚拟机只是等待指示有更多工作要做的中断(步骤1098)。
如果虚拟机36和37不知道LPAR 30中的虚拟机35,则它们随后可通过35M使用例如IUCV的任何通信协议所启动的通信获知LPAR 31中的虚拟机35M。然后,如果虚拟机36和37希望通过共享存储器90中的通信队列52与虚拟机35M通信,则虚拟机36和37可向系统管理程序41进行查询,以获知虚拟机35M的通信队列52的地址。同样,如果虚拟机35M先前不知道虚拟机36和37,而获知并希望与虚拟机36和37进行通信,则虚拟机35M可向系统管理程序41进行查询以获知共享存储器90中虚拟机36和37的各自通信队列的地址。此外,如果虚拟机36和37希望访问共享存储器51中的块存储器54(如果允许的话),或者写数据或读数据,则虚拟机36和37可向系统管理程序41进行查询以获知块存储器54中虚拟机35M的地址,如果虚拟机36和37先前不知道虚拟机35M的地址的话。同样,如果虚拟机35M先前不知道,但获知并希望访问共享存储器90中虚拟机36和37的块存储器(如果允许的话),则虚拟机35M可向系统管理程序41进行查询,以获知共享存储器90中虚拟机36和37的各自块存储器的地址。
图4示出根据本发明另一实施例的计算机系统410,其包括两个单独的物理计算机120和121。计算机120包括系统管理程序40,该系统管理程序定义虚拟机33-35。与系统310不同,系统410中的计算机120未被划分为LPAR或者说是单个LPAR。与系统310不同,系统410中的计算机121未被划分为LPAR或者说是单个LPAR。计算机系统410除了共享存储器90的性质之外在其他方面与计算机系统310类似。在计算机系统410中,因为存在单独的实计算机120和121,所以共享存储器90可实现为“非一致存储器访问”设备,其中由于一个实计算机邻近于该存储器设备,该实计算机能够比另一计算机更快速地访问该存储器。在这一实施例中,存储器90可以位于插入到这一个实计算机中的卡之上,并可由另一实计算机通过电缆访问。计算机121包括系统管理程序41,该系统管理程序最初定义虚拟机36和37,而随后添加迁移后的虚拟机35M。每一个计算机120和121中的每一虚拟机包括在共享存储器90中的各自通信队列和块存储器。系统410中虚拟机的迁移与系统310中虚拟机的迁移相同,这里不需要重复。
图5示出根据本发明另一实施例的另一计算机系统510。如系统110中那样,系统510包括单个物理计算机20、LPAR 30和31及各自的系统管理程序40和41。系统管理程序40定义虚拟机33-35。系统管理程序41定义虚拟机36、37,以及随后所迁移的虚拟机33M、34M和35M。系统510包括用于LPAR 30的共享存储器50和用于LPAR 31的共享存储器51。在系统110和510两者中,每一虚拟机包括相同的专用存储器内容。在系统110和510两者中,每一虚拟机的通信队列和块存储器驻留于该虚拟机所驻留的LPAR的共享存储器中。在系统110和510两者中的虚拟机的迁移期间,专用存储器内容从初始专用存储器被复制到共享存储设备,且通信队列和块存储器从共享存储器被复制到共享存储设备。但是,与系统110不同,在系统510中,共享存储设备对于LPAR 30和31两者是通用的。因此,在系统510中的虚拟机33-35及它们各自的通信队列和块存储器的迁移期间,不需要将专用存储器内容、通信队列和块存储器从一个存储设备复制到另一个存储设备或从存储设备中一个位置复制到另一个位置。在系统110和510两者中,需要将专用存储器内容从存储设备复制到LPAR 31的专用存储器,且需要将通信队列和块存储器从存储设备复制到LPAR 31的共享存储器。
下面是对系统510中的虚拟机35从LPAR 30迁移到LPAR 31的过程的更详细说明,此说明同样适用于其他虚拟机33和34。所有这三个虚拟机33-35及它们各自的通信队列和块存储器同时迁移,因为这三个虚拟机33-35互相访问对方的通信队列。
LPAR 30中的虚拟机35(虚拟)专用存储器存储客户操作系统45、应用55、由应用生成的数据、用于操作系统和应用的程序状态字(也称作“CPU状态”)、和在客户操作系统和应用的处理期间所使用的数据寄存器。虚拟机35还包括它的已从LPAR 30分配的计算机资源的份额,但在本发明的这一实施例中,来自LPAR 30的计算机资源的份额不与虚拟机35一起从LPAR 30迁移到LPAR 31;而是,迁移后的虚拟机35M将从LPAR 31接收到它的计算机资源的份额。为了开始虚拟机35的迁移,系统管理程序40将虚拟机35的专用存储器(“VPM”)的内容复制到共享存储设备560(步骤1100)(此处为了说明的目的在图5中将该内容重新标为虚拟机专用存储器内容35-2)。在步骤1100,系统管理程序40还将通信队列52和块存储器54的虚拟地址与虚拟机35的专用存储器内容一起复制到共享存储设备560中。这些是由虚拟机35从共享存储器50中对通信队列52和块存储器54进行寻址所使用的虚拟地址。如下面更详细描述的,迁移后的虚拟机35M将使用这些相同的虚拟地址从共享存储器51对通信队列52-3和块存储器54-3进行寻址;系统管理程序41将把这些虚拟地址映射到共享存储器51。在由步骤1100所指示的迁移时刻,虚拟机35仍然在LPAR 30和系统管理程序40中执行。
下面解释虚拟机35的通信队列52的迁移的开始。这一解释同样适用于与通信队列52同时迁移的、虚拟机33和34的通信队列的迁移。虚拟机35的通信队列52初始驻留于共享存储器50中。紧接在通信队列52的迁移(及虚拟机33和34的通信队列的迁移)之前,系统管理程序40停止LPAR 30上互相访问对方的通信队列的所有虚拟机,以便它们在迁移期间不会试图向这些队列中的任何一个添加通信项目或从其移除通信项目(步骤1102)。在所示出的例子中,虚拟机33-35互相访问对方的通信队列,因此在步骤1102,系统管理程序40停止所有虚拟机33-35。但是,该停止的持续时间很短,例如有5毫秒,因为不存在物理卡移动。然后,系统管理程序40将虚拟机35的通信队列52从共享存储器50复制到共享存储设备560(步骤1104)(此处为了说明的目的在图5中将其重新标为通信队列52-2)。
下面解释虚拟机35的块存储器54的迁移的开始。在本发明的一个实施例中,每一个块存储器专用于它各自的虚拟机,即甚至是在同一LPAR中也没有其他虚拟机能够对另一虚拟机的块存储器进行写和读。在这一实施例中,不需要由于决存储器而将同一LPAR上的虚拟机作为一组来迁移。但是,仍然需要由于同一LPAR上的虚拟机互相对对方的通信队列的访问,而将它们作为一组来迁移。但是,在本发明的另一实施例中,同一LPAR中的每一虚拟机可访问同一LPAR中每一其他虚拟机的块存储器。在这另一实施例中,同一LPAR上可互相访问对方的块存储器的所有虚拟机需要同时迁移。这一组虚拟机将通常与能够互相访问对方的通信队列的虚拟机组一致,因此无论如何需要由于相互对对方通信队列的访问,而同时迁移。下面是对虚拟机35的块存储器54的迁移所作的解释。该解释同样适用于虚拟机33和34的块存储器的迁移。虚拟机35的块存储器54初始驻留于共享存储器50中。然后,系统管理程序40将虚拟机35的块存储器54从共享存储器50复制到共享存储设备560(步骤1108)(此处为了说明的目的在图5中将其重新标为块存储器54-2)。
接着,虚拟机35通过向系统管理程序40通知其希望被删除而将它自己从LPAR 30中删除(步骤1112)。作为响应,系统管理程序40在LPAR30中删除虚拟机35。(同样,被迁移的其他虚拟机33和34也从LPAR 30中删除它们自己。)接着,系统管理程序41从LPAR 31中为要被迁移的虚拟机分配计算机资源(虚拟处理器、虚拟专用和共享存储器及虚拟专用和共享存储设备)(步骤1128)。系统管理程序41根据在作出迁移请求时的用户输入、或来自虚拟机35中的系统管理程序40或客户操作系统45的先前通知(该通知可通过TCP/IP、或任何其他的通信协议作出),知道虚拟机35正等待在LPAR 31中重新开始(并需要虚拟资源)。然后,系统管理程序41将虚拟机专用存储器内容35-2(包括通信队列52和块存储器54的虚拟地址)从共享存储设备560复制到最近分配的LPAR 31(虚拟)专用存储器(步骤1130)。这在LPAR 31中形成迁移后的虚拟机35M,尽管虚拟机35M还未重新开始/激活。迁移后的虚拟机35M与初始虚拟机35相同,尽管可能根据LPAR 31中虚拟机的总数和分配给LPAR 31的资源总量而在资源分配上存在某些变化。然后,虚拟机36或37中(其负责重新开始从LPAR30迁移来的虚拟机)的系统管理程序41或客户操作系统发出“重新开始”虚拟机35的命令(步骤1134)。作为响应,虚拟机35M中的客户操作系统45M和应用将在由迁移后的程序状态字(指针)所指示的位置重新开始执行。
然后,虚拟机36或37中负责虚拟机从LPAR 30的迁移的系统管理程序41或客户操作系统将虚拟机35的通信队列52-2从共享存储设备560复制到共享存储器51(步骤1140)(此处为了说明的目的在图5中将其重新标为52-3)。然后,虚拟机36或37中负责块存储器从LPAR 30到LPAR31的迁移的系统管理程序41或客户操作系统将块存储器54-2从共享存储设备560复制到共享存储器51(步骤1144)(此处为了说明的目的将其重新标为54-3)。
然后,迁移后的虚拟机35M中的客户操作系统45M请求系统管理程序41将通信队列52-3“附加”到LPAR 31中的虚拟机35M(步骤1150)。通过这一附加,虚拟机35M中的客户操作系统45M向系统管理程序41通知虚拟机35M将使用什么地址来引用它的通信队列52-3。(这些是当虚拟机35驻留于LPAR 30中时所使用的地址,这些地址随虚拟机35的专用存储器内容一起被复制到共享存储设备60。)。作为响应,系统管理程序41将这些地址与共享存储器51中通信队列52-3现在所存在的位置相关联。(同样,其他迁移后的虚拟机33M和34M也将请求系统管理程序41将它们各自的通信队列附加到共享存储器51。)因为所有的虚拟机33-35同时迁移,所以一旦重新开始,它们将使用与它们在迁移之前在LPAR 30中所使用的相同的虚拟地址来互相访问对方的通信队列。系统管理程序41将把这些地址附加到共享存储器51中的位置(而替代共享存储器50)。
然后,迁移后的虚拟机35M中的客户操作系统请求系统管理程序31将块存储器54-3“附加”到LPAR 31中的虚拟机35M(步骤1154)。通过这一附加,虚拟机35M中的客户操作系统向系统管理程序41通知虚拟机35M将为块存储器54-3使用什么地址。(这些是当虚拟机35驻留于LPAR 30中时所使用的地址,这些地址随虚拟机35的专用存储器内容一起被复制到共享存储设备60。)作为响应,系统管理程序41通过将这一块存储器分配给迁移后的虚拟机35M的虚拟共享存储器,而使得块存储器54-3对迁移后的虚拟机35M可用。如果其他虚拟机能够访问LPAR 30中虚拟机35的块存储器,则它们将使用与它们用于访问LPAR 30中的块存储器54的相同的虚拟地址来访问LPAR 31中虚拟机35M的块存储器。系统管理程序41将把这些虚拟地址转换到LPAR 31中的块存储器54-3。
接着,迁移后的虚拟机35M继续执行当虚拟机35在LPAR 30中被停止以便进行迁移时正在进行中的一个或多个工作项目,如果存在这样的工作项目的话。这些工作项目,如果存在的话,在由程序状态字所指示的在迁移期间它们被停止的位置处继续。如果虚拟机35M可用于执行来自通信队列52-3的另一工作项目(判断1190,“是”分支),则虚拟机35M从通信队列52-3中获取下一工作项目并对其进行处理,如下面所描述的那样(步骤1194)。如果通信队列52-3(或虚拟机35M的任何其他迁移后的工作队列)中不再有工作项目,则虚拟机只是等待指示有更多工作要做的中断(步骤1198)。
如上面所指出的,虚拟机36和37可随后通过35M经由例如IUCV的任何通信协议所启动的通信,获知虚拟机35M(及虚拟机33M和34M)。然后,如果虚拟机36和37希望通过共享存储器51中的通信队列52-3与虚拟机35M进行通信,则虚拟机36和37可向系统管理程序41查询以获知虚拟机35M的通信队列52-3的地址。同样,如果虚拟机35M(及虚拟机33M和34M)获知并希望与虚拟机36和37进行通信,则虚拟机35M(及虚拟机33M和34M)可向系统管理程序41查询以获知共享存储器51中虚拟机36和37的各自通信队列的地址。此外,如果虚拟机36和37希望访问共享存储器51中的块存储器54-3(如果允许的话),或者写数据或者读数据,则虚拟机36和37可向系统管理程序41查询以获知块存储器54-3中虚拟机35M的地址。同样,如果虚拟机35M获知并希望访问共享存储器51中虚拟机36和37的块存储器(如果允许的话),则虚拟机35M可向系统管理程序41查询,以获知共享存储器51中虚拟机36和37各自的块存储器的地址。
图6示出根据本发明另一实施例的计算机系统610,其包括两个单独的物理计算机120和121。计算机120包括系统管理程序40,该系统管理程序定义虚拟机33-35。与系统510不同,系统610中的计算机120未被划分为LPAR或者说是单个LPAR。与系统510不同,系统610中的计算机121未被划分为LPAR或者说是单个LPAR。计算机121包括系统管理程序41,该系统管理程序定义虚拟机36和37,并且随后还定义迁移的虚拟机33M、34M和35M。计算机120包括用于虚拟机33-35的共享存储器50。计算机121包括用于虚拟机36和37、以及随后所迁移的虚拟机33M、34M和35M的共享存储器51。计算机120和121均共享存储设备560,如系统510中那样。每一个计算机120和121中的每一虚拟机包括在它们各自共享存储器中的各自通信队列和块存储器。系统610中虚拟机的迁移与系统510中虚拟机的迁移相同,这里不需要重复。
图7示出共享存储器50或90中的通信队列52和块存储器54,及在迁移之前它们在所有计算机系统110、210、310、410、510和610中的使用。(该通信队列和块存储器在迁移之后当它们驻留于共享存储器51或90中时被同样地使用。)在所示出的情形下,通信队列52具有三个工作项目70、71和73。“通信”队列上的“工作”项目可以是如所示出的来自其他虚拟机的通信,或是由虚拟机35自身放置的以由虚拟机35执行的工作项目。(同样,其他虚拟机的“通信”队列可以是来自另外的虚拟机的通信或由将对其进行处理的该同一虚拟机所放置的工作项目。)在所示出的例子中,虚拟机33内的功能143(例如数据库功能)创建工作项目70,且然后将其提供给虚拟机33内的工作队列分配功能(“WQAF”)153。然后,WQAF 153根据该工作/通信项目的目标(即虚拟机35),确定该项目应被放置在队列52中并将其传送给队列52。同样,在所示出的例子中,虚拟机34内的功能144(诸如中断应用功能)创建工作项目71,然后将其传递给虚拟机34内的工作队列分配功能(“WQAF”)154。然后,WQAF 154根据该工作/通信项目的目标(即虚拟机35),确定该项目应被放置在队列52中,并将其传送给队列52。(虚拟机33-35中的任何一个创建工作项目72。)虚拟机35内的调度程序165判定虚拟机35什么时候可用于执行另一工作项目。那时,调度程序165将从队列52获取由队列指针所指示的工作项目,例如工作项目72。然后,调度程序165将对该工作项目进行分析,以确定虚拟机35内的适当功能来处理该工作项目。然后,调度程序165将把该工作项目传递给此功能以进行处理。因为队列52驻留于共享存储器内,且调度程序165在完成前一工作项目后或者由于其他原因当它有能力执行另一工作项目时检查队列52中新的工作项目,所以不需要一中断以在一个工作项目正在队列52上等待以便执行时通告调度程序165。但是,在本发明的一个实施例中,当虚拟机35没有工作项目要执行时其进入空闲状态。在这样的情况下,当新的工作项目到达虚拟机35的队列52中时,将该工作项目放置在队列52中的虚拟机向虚拟机35发送唤醒虚拟机35的中断。作为响应,虚拟机35然后将自动检查队列52中的新工作项目。
在所示出的系统110、210、310、410、510和610的实施例中,每个块存储器是共享存储器中的一个区域,该区域存储文件和列出该存储器区域中的文件的各自目录。虚拟机33、34和35的块存储器包括各自在共享存储器50或90中的区域,虚拟机36、37、33M、34M和35M的块存储器包括各自在共享存储器51或90中的区域。在图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示出块存储器的另一实施例,其中每一虚拟机具有专用的块存储器,而不能向任何其他虚拟机的块存储器写入或从其读取。这样,每一虚拟机可向它自己的块存储器写入数据块,以释放它的专用存储器,然后当在专用存储器中需要时再读回该数据块。
根据上面的描述,公开了体现本发明的计算机系统。但是,可作出大量的更改和替换,而不背离本发明的范围。例如,每一虚拟机可具有其他与上面描述的通信队列一起迁移的工作队列。因此,本发明是作为说明而非限制而进行公开的,应当参考下面的权利要求来确定本发明的范围。
权利要求
1.一种用于将第一虚拟机和通信队列从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的方法,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之前,所述通信队列驻留于由所述第一计算机或所述第一LPAR中的所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所述方法包括以下步骤在所述第一计算机或所述第一LPAR中停止所述第一虚拟机;所述第一计算机或所述第一LPAR将所述操作系统和应用传送给所述第二计算机或所述第二LPAR,而所述第二计算机或所述第二LPAR将所述操作系统和应用写入所述第二计算机或所述第二LPAR中所述第一虚拟机专用的第二专用存储器中;所述第一计算机或所述第一LPAR将所述通信队列传送给所述第二计算机或第二LPAR,而所述第二计算机或所述第二LPAR将所述通信队列写入由所述第二计算机或所述第二LPAR中的所述第二、第三和第四虚拟机共享的第二共享存储器中;以及在所述第二计算机或第二LPAR中重新开始所述第一虚拟机。
2.如权利要求1所述的方法,进一步包括将所述通信队列从所述第二共享存储器附加到所述第二计算机或第二LPAR中的所述第一虚拟机的步骤。
3.如权利要求1所述的方法,进一步包括以下步骤所述第一计算机或所述第一LPAR将所述第一计算机或第一LPAR中的所述第一虚拟机所使用的所述通信队列的地址传送给所述第二计算机或所述第二LPAR,且所述第二计算机或所述第二LPAR将所述地址写入所述第二专用存储器中,以使所述第一虚拟机当在所述第二计算机或第二LPAR中重新开始时将使用所述地址来访问所述第二共享存储器中的所述通信队列。
4.如权利要求1所述的方法,进一步包括以下步骤所述第一计算机或所述第一LPAR将所述应用或所述操作系统的程序状态字传送给所述第二计算机或所述第二LPAR,以使所述第二计算机或第二LPAR中的所述第一虚拟机在重新开始时将使用所述程序状态字来从其停止所述应用或所述操作系统在所述第一计算机或所述第一LPAR中的执行的位置处重新开始所述应用或所述操作系统的执行。
5.如权利要求1所述的方法,进一步包括以下步骤在所述第一计算机或所述第一LPAR将所述通信队列传送给所述第二计算机或所述第二LPAR的步骤之前,所述第二虚拟机向所述通信队列提供工作项目;在所述第一计算机或所述第一LPAR中停止所述第二虚拟机;所述第一计算机或所述第一LPAR将所述第二虚拟机的操作系统和应用传送给所述第二计算机或所述第二LPAR,然后,将所述第二虚拟机的所述操作系统和应用写入所述第二计算机或所述第二LPAR中的所述第二虚拟机专用的第三专用存储器中;所述第一计算机或所述第一LPAR将所述第二虚拟机的通信队列传送给所述第二计算机或所述第二LPAR,然后,将所述第二虚拟机的所述通信队列写入所述第二共享存储器中;以及在所述第二计算机或第二LPAR中重新开始所述第二虚拟机,且所述第二计算机或所述第二LPAR中的所述第二虚拟机使用与所述第二虚拟机在向所述第一计算机或所述第一LPAR中的所述第一虚拟机的所述通信队列提供第一个所述工作项目时所使用的相同地址向所述第二计算机或所述第二LPAR中的所述第一虚拟机的所述通信队列提供另一工作项目。
6.一种用于将第一虚拟机和通信队列从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的计算机程序产品,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之前,所述通信队列驻留于由所述第一计算机或所述第一LPAR中的所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所述计算机程序产品包括计算机可读介质;在所述第一计算机或所述第一LPAR中停止所述第一虚拟机的第一程序指令;所述第一计算机或所述第一LPAR中将所述操作系统和应用传送给所述第二计算机或所述第二LPAR的第二程序指令,及所述第二计算机或所述第二LPAR中将所述操作系统和应用写入所述第二计算机或所述第二LPAR中所述第一虚拟机专用的第二专用存储器中的第三程序指令;所述第一计算机或所述第一LPAR中将所述通信队列传送给所述第二计算机或第二LPAR的第四程序指令,及所述第二计算机或所述第二LPAR中将所述通信队列写入由所述第二计算机或所述第二LPAR中的所述第二、第三和第四虚拟机共享的第二共享存储器中的第五程序指令;以及在所述第二计算机或第二LPAR中重新开始所述第一虚拟机的第六程序指令;并且其中所述第一、第二、第三、第四、第五和第六程序指令记录于所述介质上。
7.如权利要求6所述的计算机程序产品,进一步包括将所述通信队列从所述第二共享存储器附加到所述第二计算机或第二LPAR中的所述第一虚拟机的第七程序指令;并且其中所述第七程序指令记录于所述介质上。
8.如权利要求6所述的计算机程序产品,进一步包括所述第一计算机或所述第一LPAR中将所述第一计算机或第一LPAR中的所述第一虚拟机所使用的所述通信队列的地址传送给所述第二计算机或所述第二LPAR的第七程序指令,以及所述第二计算机或所述第二LPAR中将所述地址写入所述第二专用存储器中,以使所述第一虚拟机当在所述第二计算机或第二LPAR中重新开始时将使用所述地址访问所述第二共享存储器中的所述通信队列的第八程序指令;并且其中所述第七和第八程序指令记录于所述介质上。
9.如权利要求6所述的计算机程序产品,进一步包括所述第一计算机或所述第一LPAR中将所述应用或所述操作系统的程序状态字传送给所述第二计算机或所述第二LPAR,以使所述第二计算机或第二LPAR中的所述第一虚拟机在重新开始时将使用所述程序状态字来从其停止所述应用或所述操作系统在所述第一计算机或所述第一LPAR中的执行的位置处重新开始所述应用或所述操作系统的执行的第七程序指令;并且其中所述第七程序指令记录于所述介质上。
10.如权利要求6所述的计算机程序产品,其中在所述第四程序指令将所述通信队列传送给所述第二计算机或所述第二LPAR之前,所述第二虚拟机向所述通信队列提供工作项目;并且进一步包括在所述第一计算机或所述第一LPAR中停止所述第二虚拟机的第七程序指令;所述第一计算机或所述第一LPAR中将所述第二虚拟机的操作系统和应用传送给所述第二计算机或所述第二LPAR的第八程序指令,以及将所述第二虚拟机的所述操作系统和应用写入所述第二计算机或所述第二LPAR中的所述第二虚拟机专用的第三专用存储器中的第九程序指令;所述第一计算机或所述第一LPAR中将所述第二虚拟机的通信队列传送给所述第二计算机或所述第二LPAR的第十程序指令,以及将所述第二虚拟机的所述通信队列写入所述第二共享存储器中的第十一程序指令;以及在所述第二计算机或第二LPAR中重新开始所述第二虚拟机的第十二程序指令,并且其中所述第二计算机或所述第二LPAR中的所述第二虚拟机使用与所述第二虚拟机在向所述第一计算机或所述第一LPAR中的所述第一虚拟机的所述通信队列提供第一个所述工作项目时所使用的相同地址向所述第二计算机或所述第二LPAR中的所述第一虚拟机的所述通信队列提供另一工作项目;并且所述第七、第八、第九、第十、第十一、第十二和第十三程序指令记录于所述介质上。
11.一种用于将第一虚拟机和通信队列从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的方法,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之前,所述通信队列驻留于由所述第一计算机或所述第一LPAR中的所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所述方法包括以下步骤将所述操作系统和应用从所述第一专用存储器复制到由所述第一和第二计算机或所述第一和第二LPAR共享的共享存储设备;将所述通信队列从所述第一共享存储器复制到所述共享存储设备;将所述操作系统和应用从所述共享存储设备复制到所述第二计算机或第二LPAR中所述第一虚拟机专用的第二专用存储器,并在所述第二计算机或第二LPAR中重新开始所述第一虚拟机;以及将所述通信队列从所述共享存储设备复制到由所述第二计算机或第二LPAR中的所述第一、第三和第四虚拟机共享的第二共享存储器。
12.如权利要求11所述的方法,进一步包括将所述通信队列从所述第二共享存储器附加到所述第二计算机或第二LPAR中的所述第一虚拟机的步骤。
13.如权利要求11所述的方法,进一步包括以下步骤将所述第一计算机或第一LPAR中的所述第一虚拟机所使用的所述通信队列的地址从所述第一专用存储器复制到所述共享存储设备,且然后复制到所述第二专用存储器,以使所述第一虚拟机在所述第二计算机或第二LPAR中将使用所述地址访问所述第二共享存储器中的所述通信队列。
14.如权利要求11所述的方法,进一步包括以下步骤在将所述应用和所述操作系统复制到所述共享存储设备的步骤之后,停止所述应用在所述第一计算机或所述第一LPAR中的执行;将所述应用或所述操作系统的程序状态字从所述第一专用存储器复制到所述共享存储设备,且然后复制到所述第二专用存储器,以使所述第二计算机或第二LPAR中的所述第一虚拟机在重新开始时将使用所述程序状态字来从其停止所述应用或所述操作系统在所述第一计算机或所述第一LPAR中的执行的位置处重新开始所述应用或所述操作系统的执行。
15.如权利要求11所述的方法,进一步包括以下步骤在将所述通信队列从所述第一共享存储器复制到所述共享存储设备的步骤之前,所述第二虚拟机向所述通信队列提供工作项目;将所述第二虚拟机的操作系统和应用从所述第一专用存储器复制到所述共享存储设备;将所述第二虚拟机的通信队列从所述第一共享存储器复制到所述共享存储设备;将所述第二虚拟机的所述操作系统和应用从所述共享存储设备复制到所述第二计算机或所述第二LPAR中所述第二虚拟机专用的第三专用存储器,并在所述第二计算机或第二LPAR中重新开始所述第二虚拟机;以及将所述第二虚拟机的所述通信队列从所述共享存储设备复制到所述第二共享存储器,以使所述第二计算机或所述第二LPAR中的所述第一虚拟机可获取由所述第二虚拟机在所述第一实计算机或所述第一LPAR中时所提供的所述工作项目,且所述第二虚拟机当在所述第二计算机或所述第二LPAR中时可使用与所述第二虚拟机当在所述第一计算机或所述第一LPAR中向所述通信队列提供第一个所述工作项目时所使用的相同地址向所述通信队列提供另一工作项目。
16.如权利要求11所述的方法,进一步包括向所述第二实计算机或所述第二LPAR通知所述共享存储设备中的所述操作系统、应用和通信队列的步骤。
17.一种用于将第一虚拟机和通信队列从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的计算机程序产品,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之前,所述通信队列驻留于由所述第一计算机或所述第一LPAR中的所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所述计算机程序产品包括计算机可读介质;将所述操作系统和应用从所述第一专用存储器复制到由所述第一和第二计算机或所述第一和第二LPAR共享的共享存储设备的第一程序指令;将所述通信队列从所述第一共享存储器复制到所述共享存储设备的第二程序指令;将所述操作系统和应用从所述共享存储设备复制到所述第二计算机或第二LPAR中所述第一虚拟机专用的第二专用存储器,并在所述第二计算机或第二LPAR中重新开始所述第一虚拟机的第三程序指令;以及将所述通信队列从所述共享存储设备复制到由所述第二计算机或第二LPAR中的所述第一虚拟机以及第三和第四虚拟机共享的第二共享存储器的第四程序指令;并且其中所述第一、第二、第三和第四程序指令记录于所述介质上。
18.如权利要求17所述的计算机程序产品,进一步包括将所述通信队列从所述第二共享存储器附加到所述第二计算机或第二LPAR中的所述第一虚拟机的第五程序指令;并且其中所述第五程序指令记录于所述介质上。
19.如权利要求17所述的计算机程序产品,进一步包括将所述第一计算机或第一LPAR中的所述第一虚拟机所使用的所述通信队列的地址从所述第一专用存储器复制到所述共享存储设备,且然后复制到所述第二专用存储器,以使所述第一虚拟机在所述第二计算机或第二LPAR中将使用所述地址访问所述第二共享存储器中的所述通信队列的第五指令程序;并且其中所述第五程序指令记录于所述介质上。
20.如权利要求17所述的计算机程序产品,进一步包括在所述第一程序指令将所述应用和所述操作系统复制到所述共享存储设备之后,停止所述应用在所述第一计算机或所述第一LPAR中的执行的第五程序指令;以及将所述应用或所述操作系统的程序状态字从所述第一专用存储器复制到所述共享存储设备,且然后复制到所述第二专用存储器,以使所述第二计算机或第二LPAR中的所述第一虚拟机在重新开始时将使用所述程序状态字从其停止所述应用或所述操作系统在所述第一计算机或所述第一LPAR中的执行的位置处重新开始所述应用或所述操作系统的执行的第六指令程序;并且其中所述第五和第六程序指令记录于所述介质上。
21.如权利要求17所述的计算机程序产品,其中在将所述通信队列从所述第一共享存储器复制到所述共享存储设备的步骤之前,所述第二虚拟机向所述通信队列提供工作项目;并且进一步包括将所述第二虚拟机的操作系统和应用从所述第一专用存储器复制到所述共享存储设备的第五程序指令;将所述第二虚拟机的通信队列从所述第一共享存储器复制到所述共享存储设备的第六程序指令;将所述第二虚拟机的所述操作系统和应用从所述共享存储设备复制到所述第二计算机或第二LPAR中所述第二虚拟机专用的第三专用存储器,并在所述第二计算机或第二LPAR中重新开始所述第二虚拟机的第七程序指令;以及将所述第二虚拟机的所述通信队列从所述共享存储设备复制到所述第二共享存储器,以使所述第二计算机或所述第二LPAR中的所述第一虚拟机可获取由所述第二虚拟机在所述第一实计算机或所述第一LPAR中时所提供的所述工作项目的第八程序指令,且所述第二虚拟机当在所述第二计算机或所述第二LPAR中时可使用与所述第二虚拟机当在所述第一计算机或所述第一LPAR中向所述通信队列提供第一个所述工作项目时所使用的相同地址向所述通信队列提供另一工作项目;并且其中所述第五、第六、第七和第八程序指令记录于所述介质上。
22.如权利要求17所述的计算机程序产品,进一步包括向所述第二实计算机或所述第二LPAR通知所述共享存储设备中的所述操作系统、应用和通信队列的第五程序指令;并且其中所述第五程序指令记录于所述介质上。
23.一种用于将第一虚拟机从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的方法,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟机的第一专用存储器中的操作系统和应用,所述方法包括以下步骤将所述第一虚拟机的通信队列存储于由所述第一和第二计算机或所述第一和第二LPAR所共享的共享存储器中;将所述操作系统和应用从所述第一专用存储器复制到所述共享存储器;以及将所述操作系统和应用从所述共享存储器复制到所述第二计算机或第二LPAR中所述第一虚拟机专用的第二专用存储器,并在所述第二计算机或第二LPAR中重新开始所述第一虚拟机。
24.如权利要求23所述的方法,进一步包括将所述通信队列从所述共享存储器附加到所述第二计算机或第二LPAR中的所述第一虚拟机的步骤。
25.如权利要求23所述的方法,进一步包括以下步骤将所述第一计算机或第一LPAR中的所述第一虚拟机所使用的所述通信队列的地址从所述第一专用存储器复制到所述共享存储器,且然后复制到所述第二专用存储器,以使所述第一虚拟机在所述第二计算机或第二LPAR中将使用所述地址访问所述共享存储器中的所述通信队列。
26.如权利要求23所述的方法,进一步包括以下步骤在将所述应用和所述操作系统复制到所述共享存储器的步骤之后,停止所述应用在所述第一计算机或所述第一LPAR中的执行;以及将所述应用或所述操作系统的程序状态字从所述第一专用存储器复制到所述共享存储器,且然后复制到所述第二专用存储器,以使所述第二计算机或第二LPAR中的所述第一虚拟机在重新开始时将使用所述程序状态字从其停止所述应用或所述操作系统在所述第一计算机或所述第一LPAR中的执行的位置处重新开始所述应用或所述操作系统的执行。
27.如权利要求23所述的方法,进一步包括以下步骤在将所述应用和所述操作系统复制到所述共享存储器的步骤之后,停止所述应用在所述第一计算机或所述第一LPAR中的执行;以及在停止所述应用在所述第一计算机或所述第一LPAR中的执行的步骤之前,所述第一计算机或所述第一LPAR中的所述第二虚拟机向所述通信队列提供第一工作项目;以及在所述第二计算机或所述第二LPAR中重新开始所述应用的执行的步骤之后,所述第一计算机或所述第一LPAR中的所述第二虚拟机向所述通信队列提供第二工作项目;并且其中所述第二虚拟机使用用于所述通信队列的相同地址向所述通信队列提供所述第一和第二工作项目。
28.一种用于将第一虚拟机从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的计算机程序产品,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟机的第一专用存储器中的操作系统和应用,所述计算机程序产品包括计算机可读介质;将所述第一虚拟机的通信队列存储于由所述第一和第二计算机或所述第一和第二LPAR所共享的共享存储器中的第一程序指令;将所述操作系统和应用从所述第一专用存储器复制到所述共享存储器的第二程序指令;以及将所述操作系统和应用从所述共享存储器复制到所述第二计算机或第二LPAR中所述第一虚拟机专用的第二专用存储器,并在所述第二计算机或第二LPAR中重新开始所述第一虚拟机的第三程序指令;并且其中所述第一、第二和第三程序指令记录于所述介质上。
29.如权利要求28所述的计算机程序产品,进一步包括将所述通信队列从所述共享存储器附加到所述第二计算机或第二LPAR中的所述第一虚拟机的第四程序指令;并且其中所述第四程序指令记录在所述介质上。
30.如权利要求28所述的计算机程序产品,进一步包括将所述第一计算机或第一LPAR中的所述第一虚拟机所使用的所述通信队列的地址从所述第一专用存储器复制到所述共享存储器,且然后复制到所述第二专用存储器,以使所述第一虚拟机在所述第二计算机或第二LPAR中将使用所述地址来访问所述共享存储器中的所述通信队列的第四程序指令;并且其中所述第四程序指令记录于所述介质上。
31.如权利要求28所述的计算机程序产品,进一步包括在所述第一程序指令将所述应用和所述操作系统复制到所述共享存储器之后,停止所述应用在所述第一计算机或所述第一LPAR中的执行的第四程序指令;以及将所述应用或所述操作系统的程序状态字从所述第一专用存储器复制到所述共享存储器,且然后复制到所述第二专用存储器,以使所述第二计算机或第二LPAR中的所述第一虚拟机在重新开始时将使用所述程序状态字从其停止所述应用或所述操作系统在所述第一计算机或所述第一LPAR中的执行的位置处重新开始所述应用或所述操作系统的执行的第五程序指令,并且其中所述第四和第五程序指令记录在所述介质上。
32.如权利要求28所述的计算机程序产品,进一步包括在所述第一程序指令将所述应用和所述操作系统复制到所述共享存储器之后,停止所述应用在所述第一计算机或所述第一LPAR中的执行的第四程序指令;并且其中在所述第四程序指令停止所述应用在所述第一计算机或所述第一LPAR中的执行之前,所述第一计算机或所述第一LPAR中的所述第二虚拟机向所述通信队列提供第一工作项目;以及在所述第三程序指令在所述第二计算机或所述第二LPAR中重新开始所述应用的执行之后,所述第一计算机或所述第一LPAR中的所述第二虚拟机向所述通信队列提供第二工作项目;以及所述第二虚拟机使用用于所述通信队列的相同地址向所述通信队列提供所述第一和第二工作项目;以及所述第四程序指令记录于所述介质上。
全文摘要
本发明提供了一种用于将第一虚拟机从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的系统、方法和程序产品。在迁移之前,第一虚拟机包括在该第一虚拟机专用的第一专用存储器中的操作系统和应用。第一虚拟机的通信队列驻留于由第一和第二计算机或第一和第二LPAR共享的共享存储器中。将该操作系统和应用从第一专用存储器复制到该共享存储器。将操作系统和应用从该共享存储器复制到第二计算机或第二LPAR中第一虚拟机专用的第二专用存储器。然后,第一虚拟机在第二计算机或第二LPAR中重新开始。
文档编号G06F9/46GK1696902SQ20051005545
公开日2005年11月16日 申请日期2005年3月17日 优先权日2004年5月11日
发明者J·A·亨特, S·舒尔茨 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1