首页 / 专利库 / 软件 / 虚拟机迁移 / 迁移虚拟机的系统、方法和程序

迁移虚拟机的系统、方法和程序

阅读:820发布:2022-01-27

专利汇可以提供迁移虚拟机的系统、方法和程序专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种用于将第一 虚拟机 从第一实计算机迁移到第二实计算机或从同一实计算机中的第一LPAR迁移到第二LPAR的系统、方法和程序产品。在迁移之前,第一虚拟机包括在该第一虚拟机专用的第一专用 存储器 中的 操作系统 和应用。第一虚拟机的通信队列驻留于由第一和第二计算机或第一和第二LPAR共享的共享存储器中。将该操作系统和应用从第一专用存储器复制到该共享存储器。将操作系统和应用从该共享存储器复制到第二计算机或第二LPAR中第一虚拟机专用的第二专用存储器。然后,第一虚拟机在第二计算机或第二LPAR中重新开始。,下面是迁移虚拟机的系统、方法和程序专利的具体信息内容。

1.一种用于将第一虚拟机和通信队列从第一实计算机迁移到 第二实计算机或从同一实计算机中的第一逻辑分区迁移到第二逻 辑分区的方法,在迁移之前,所述第一虚拟机包括在专用于所述 第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之前, 所述通信队列驻留于由所述第一计算机或所述第一逻辑分区中的 所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所述方 法包括以下步骤:
在所述第一计算机或所述第一逻辑分区中停止所述第一虚拟 机;
所述第一计算机或所述第一逻辑分区将所述操作系统和应用 传送给所述第二计算机或所述第二逻辑分区,而所述第二计算机 或所述第二逻辑分区将所述操作系统和应用写入所述第二计算机 或所述第二逻辑分区中第一虚拟机专用的第二专用存储器中;
所述第一计算机或所述第一逻辑分区将所述通信队列传送给 所述第二计算机或第二逻辑分区,而所述第二计算机或所述第二 逻辑分区将所述通信队列写入由所述第二计算机或所述第二逻辑 分区中的第二虚拟机以及第三和第四虚拟机共享的第二共享存储 器中;以及
在所述第二计算机或第二逻辑分区中重新开始所述第一虚拟 机。
2.如权利要求1所述的方法,进一步包括将所述通信队列从 所述第二共享存储器附加到所述第二计算机或第二逻辑分区中的 所述第一虚拟机的步骤。
3.如权利要求1所述的方法,进一步包括以下步骤:
所述第一计算机或所述第一逻辑分区将所述第一计算机或第 一逻辑分区中的所述第一虚拟机所使用的所述通信队列的地址传 送给所述第二计算机或所述第二逻辑分区,且所述第二计算机或 所述第二逻辑分区将所述地址写入所述第二专用存储器中,以使 所述第一虚拟机当在所述第二计算机或第二逻辑分区中重新开始 时将使用所述地址来访问所述第二共享存储器中的所述通信队 列。
4.如权利要求1所述的方法,进一步包括以下步骤:
所述第一计算机或所述第一逻辑分区将所述应用或所述操作 系统的程序状态字传送给所述第二计算机或所述第二逻辑分区, 以使所述第二计算机或第二逻辑分区中的所述第一虚拟机在重新 开始时将使用所述程序状态字来从其停止所述应用或所述操作系 统在所述第一计算机或所述第一逻辑分区中的执行的位置处重新 开始所述应用或所述操作系统的执行。
5.如权利要求1所述的方法,进一步包括以下步骤:
在所述第一计算机或所述第一逻辑分区将所述通信队列传送 给所述第二计算机或所述第二逻辑分区的步骤之前,所述第二虚 拟机向所述通信队列提供工作项目;
在所述第一计算机或所述第一逻辑分区中停止所述第二虚拟 机;
所述第一计算机或所述第一逻辑分区将所述第二虚拟机的操 作系统和应用传送给所述第二计算机或所述第二逻辑分区,然后, 将所述第二虚拟机的所述操作系统和应用写入所述第二计算机或 所述第二逻辑分区中的所述第二虚拟机专用的第三专用存储器 中;
所述第一计算机或所述第一逻辑分区将所述第二虚拟机的通 信队列传送给所述第二计算机或所述第二逻辑分区,然后,将所 述第二虚拟机的所述通信队列写入所述第二共享存储器中;以及
在所述第二计算机或第二逻辑分区中重新开始所述第二虚拟 机,且所述第二计算机或所述第二逻辑分区中的所述第二虚拟机 使用与所述第二虚拟机在向所述第一计算机或所述第一逻辑分区 中的所述第一虚拟机的所述通信队列提供第一个所述工作项目时 所使用的相同地址向所述第二计算机或所述第二逻辑分区中的所 述第一虚拟机的所述通信队列提供另一工作项目。
6.一种用于将第一虚拟机和通信队列从第一实计算机迁移到 第二实计算机或从同一实计算机中的第一逻辑分区迁移到第二逻 辑分区的系统,在迁移之前,所述第一虚拟机包括在专用于所述 第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之前, 所述通信队列驻留于由所述第一计算机或所述第一逻辑分区中的 所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所述系 统包括:
用于在所述第一计算机或所述第一逻辑分区中停止所述第一 虚拟机的第一装置;
所述第一计算机或所述第一逻辑分区中用于将所述操作系统 和应用传送给所述第二计算机或所述第二逻辑分区的第二装置, 及所述第二计算机或所述第二逻辑分区中用于将所述操作系统和 应用写入所述第二计算机或所述第二逻辑分区中第一虚拟机专用 的第二专用存储器中的第三装置;
所述第一计算机或所述第一逻辑分区中用于将所述通信队列 传送给所述第二计算机或第二逻辑分区的第四装置,及所述第二 计算机或所述第二逻辑分区中用于将所述通信队列写入由所述第 二计算机或第二逻辑分区中的所述第二虚拟机以及第三和第四虚 拟机共享的第二共享存储器中的第五装置;以及
用于在所述第二计算机或第二逻辑分区中重新开始所述第一 虚拟机的第六装置。
7.如权利要求6所述的系统,进一步包括用于将所述通信队 列从所述第二共享存储器附加到所述第二计算机或第二逻辑分区 中的所述第一虚拟机的第七装置。
8.如权利要求6所述的系统,进一步包括:
所述第一计算机或所述第一逻辑分区中用于将所述第一计算 机或第一逻辑分区中的所述第一虚拟机所使用的所述通信队列的 地址传送给所述第二计算机或所述第二逻辑分区的第七装置,以 及所述第二计算机或所述第二逻辑分区中用于将所述地址写入所 述第二专用存储器中,以使所述第一虚拟机当在所述第二计算机 或第二逻辑分区中重新开始时将使用所述地址访问所述第二共享 存储器中的所述通信队列的第八装置。
9.如权利要求6所述的系统,进一步包括:
所述第一计算机或所述第一逻辑分区中用于将所述应用或所 述操作系统的程序状态字传送给所述第二计算机或所述第二逻辑 分区,以使所述第二计算机或第二逻辑分区中的所述第一虚拟机 在重新开始时将使用所述程序状态字来从其停止所述应用或所述 操作系统在所述第一计算机或所述第一逻辑分区中的执行的位置 处重新开始所述应用或所述操作系统的执行的第七装置。
10.如权利要求6所述的系统,其中在所述第四装置将所述 通信队列传送给所述第二计算机或所述第二逻辑分区之前,所述 第二虚拟机向所述通信队列提供工作项目;并且进一步包括:
用于在所述第一计算机或所述第一逻辑分区中停止所述第二 虚拟机的第七装置;
所述第一计算机或所述第一逻辑分区中用于将所述第二虚拟 机的操作系统和应用传送给所述第二计算机或所述第二逻辑分区 的第八装置,以及用于将所述第二虚拟机的所述操作系统和应用 写入所述第二计算机或所述第二逻辑分区中的所述第二虚拟机专 用的第三专用存储器中的第九装置;
所述第一计算机或所述第一逻辑分区中用于将所述第二虚拟 机的通信队列传送给所述第二计算机或所述第二逻辑分区的第十 装置,以及用于将所述第二虚拟机的所述通信队列写入所述第二 共享存储器中的第十一装置;以及
用于在所述第二计算机或第二逻辑分区中重新开始所述第二 虚拟机的第十二装置,并且其中所述第二计算机或所述第二逻辑 分区中的所述第二虚拟机使用与所述第二虚拟机在向所述第一计 算机或所述第一逻辑分区中的所述第一虚拟机的所述通信队列提 供第一个所述工作项目时所使用的相同地址向所述第二计算机或 所述第二逻辑分区中的所述第一虚拟机的所述通信队列提供另一 工作项目。
11.一种用于将第一虚拟机和通信队列从第一实计算机迁移 到第二实计算机或从同一实计算机中的第一逻辑分区迁移到第二 逻辑分区的方法,在迁移之前,所述第一虚拟机包括在专用于所 述第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之 前,所述通信队列驻留于由所述第一计算机或所述第一逻辑分区 中的所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所 述方法包括以下步骤:
将所述操作系统和应用从所述第一专用存储器复制到由所述 第一和第二计算机或所述第一和第二逻辑分区共享的共享存储设 备;
将所述通信队列从所述第一共享存储器复制到所述共享存储 设备;
将所述操作系统和应用从所述共享存储设备复制到所述第二 计算机或第二逻辑分区中所述第一虚拟机专用的第二专用存储 器,并在所述第二计算机或第二逻辑分区中重新开始所述第一虚 拟机;以及
将所述通信队列从所述共享存储设备复制到由所述第二计算 机或第二逻辑分区中的第一虚拟机以及第三和第四虚拟机共享的 第二共享存储器。
12.如权利要求11所述的方法,进一步包括将所述通信队列 从所述第二共享存储器附加到所述第二计算机或第二逻辑分区中 的所述第一虚拟机的步骤。
13.如权利要求11所述的方法,进一步包括以下步骤:
将所述第一计算机或第一逻辑分区中的所述第一虚拟机所使 用的所述通信队列的地址从所述第一专用存储器复制到所述共享 存储设备,且然后复制到所述第二专用存储器,以使所述第一虚 拟机在所述第二计算机或第二逻辑分区中将使用所述地址访问所 述第二共享存储器中的所述通信队列。
14.如权利要求11所述的方法,进一步包括以下步骤:
在将所述应用和所述操作系统复制到所述共享存储设备的步 骤之后,停止所述应用在所述第一计算机或所述第一逻辑分区中 的执行;
将所述应用或所述操作系统的程序状态字从所述第一专用存 储器复制到所述共享存储设备,且然后复制到所述第二专用存储 器,以使所述第二计算机或第二逻辑分区中的所述第一虚拟机在 重新开始时将使用所述程序状态字来从其停止所述应用或所述操 作系统在所述第一计算机或所述第一逻辑分区中的执行的位置处 重新开始所述应用或所述操作系统的执行。
15.如权利要求11所述的方法,进一步包括以下步骤:
在将所述通信队列从所述第一共享存储器复制到所述共享存 储设备的步骤之前,所述第二虚拟机向所述通信队列提供工作项 目;
将所述第二虚拟机的操作系统和应用从所述第一专用存储器 复制到所述共享存储设备;
将所述第二虚拟机的通信队列从所述第一共享存储器复制到 所述共享存储设备;
将所述第二虚拟机的所述操作系统和应用从所述共享存储设 备复制到所述第二计算机或所述第二逻辑分区中所述第二虚拟机 专用的第三专用存储器,并在所述第二计算机或第二逻辑分区中 重新开始所述第二虚拟机;以及
将所述第二虚拟机的所述通信队列从所述共享存储设备复制 到所述第二共享存储器,以使所述第二计算机或所述第二逻辑分 区中的所述第一虚拟机可获取由所述第二虚拟机在所述第一实计 算机或所述第一逻辑分区中时所提供的所述工作项目,且所述第 二虚拟机当在所述第二计算机或所述第二逻辑分区中时可使用与 所述第二虚拟机当在所述第一计算机或所述第一逻辑分区中向所 述通信队列提供第一个所述工作项目时所使用的相同地址向所述 通信队列提供另一工作项目。
16.如权利要求11所述的方法,进一步包括向所述第二实计 算机或所述第二逻辑分区通知所述共享存储设备中的所述操作系 统、应用和通信队列的步骤。
17.一种用于将第一虚拟机和通信队列从第一实计算机迁移 到第二实计算机或从同一实计算机中的第一逻辑分区迁移到第二 逻辑分区的系统,在迁移之前,所述第一虚拟机包括在专用于所 述第一虚拟机的第一专用存储器中的操作系统和应用,在迁移之 前,所述通信队列驻留于由所述第一计算机或所述第一逻辑分区 中的所述第一虚拟机和第二虚拟机共享的第一共享存储器中,所 述系统包括:
用于将所述操作系统和应用从所述第一专用存储器复制到由 所述第一和第二计算机或所述第一和第二逻辑分区共享的共享存 储设备的第一装置;
用于将所述通信队列从所述第一共享存储器复制到所述共享 存储设备的第二装置;
用于将所述操作系统和应用从所述共享存储设备复制到所述 第二计算机或第二逻辑分区中所述第一虚拟机专用的第二专用存 储器,并在所述第二计算机或第二逻辑分区中重新开始所述第一 虚拟机的第三装置;以及
用于将所述通信队列从所述共享存储设备复制到由所述第二 计算机或第二逻辑分区中的第一虚拟机以及第三和第四虚拟机共 享的第二共享存储器的第四装置。
18.如权利要求17所述的系统,进一步包括用于将所述通信 队列从所述第二共享存储器附加到所述第二计算机或第二逻辑分 区中的所述第一虚拟机的第五装置。
19.如权利要求17所述的系统,进一步包括:
用于将所述第一计算机或第一逻辑分区中的所述第一虚拟机 所使用的所述通信队列的地址从所述第一专用存储器复制到所述 共享存储设备,且然后复制到所述第二专用存储器,以使所述第 一虚拟机在所述第二计算机或第二逻辑分区中将使用所述地址访 问所述第二共享存储器中的所述通信队列的第五装置。
20.如权利要求17所述的系统,进一步包括:
用于在所述第一装置将所述应用和所述操作系统复制到所述 共享存储设备之后,停止所述应用在所述第一计算机或所述第一 逻辑分区中的执行的第五装置;以及
用于将所述应用或所述操作系统的程序状态字从所述第一专 用存储器复制到所述共享存储设备,且然后复制到所述第二专用 存储器,以使所述第二计算机或第二逻辑分区中的所述第一虚拟 机在重新开始时将使用所述程序状态字从其停止所述应用或所述 操作系统在所述第一计算机或所述第一逻辑分区中的执行的位置 处重新开始所述应用或所述操作系统的执行的第六装置。
21.如权利要求17所述的系统,其中在将所述通信队列从所 述第一共享存储器复制到所述共享存储设备之前,所述第二虚拟 机向所述通信队列提供工作项目;并且进一步包括:
用于将所述第二虚拟机的操作系统和应用从所述第一专用存 储器复制到所述共享存储设备的第五装置;
用于将所述第二虚拟机的通信队列从所述第一共享存储器复 制到所述共享存储设备的第六装置;
用于将所述第二虚拟机的所述操作系统和应用从所述共享存 储设备复制到所述第二计算机或第二逻辑分区中所述第二虚拟机 专用的第三专用存储器,并在所述第二计算机或第二逻辑分区中 重新开始所述第二虚拟机的第七装置;以及
用于将所述第二虚拟机的所述通信队列从所述共享存储设备 复制到所述第二共享存储器,以使所述第二计算机或所述第二逻 辑分区中的所述第一虚拟机可获取由所述第二虚拟机在所述第一 实计算机或所述第一逻辑分区中时所提供的所述工作项目的第八 装置,且所述第二虚拟机当在所述第二计算机或所述第二逻辑分 区中时可使用与所述第二虚拟机当在所述第一计算机或所述第一 逻辑分区中向所述通信队列提供第一个所述工作项目时所使用的 相同地址向所述通信队列提供另一工作项目。
22.如权利要求17所述的系统,进一步包括用于向所述第二 实计算机或所述第二逻辑分区通知所述共享存储设备中的所述操 作系统、应用和通信队列的第五装置。
23.一种用于将第一虚拟机从第一实计算机迁移到第二实计 算机或从同一实计算机中的第一逻辑分区迁移到第二逻辑分区的 方法,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟 机的第一专用存储器中的操作系统和应用,所述方法包括以下步 骤:
将所述第一虚拟机的通信队列存储于由所述第一和第二计算 机或所述第一和第二逻辑分区所共享的共享存储器中;
将所述操作系统和应用从所述第一专用存储器复制到所述共 享存储器;以及
将所述操作系统和应用从所述共享存储器复制到所述第二计 算机或第二逻辑分区中所述第一虚拟机专用的第二专用存储器, 并在所述第二计算机或第二逻辑分区中重新开始所述第一虚拟 机。
24.如权利要求23所述的方法,进一步包括将所述通信队列 从所述共享存储器附加到所述第二计算机或第二逻辑分区中的所 述第一虚拟机的步骤。
25.如权利要求23所述的方法,进一步包括以下步骤:
将所述第一计算机或第一逻辑分区中的所述第一虚拟机所使 用的所述通信队列的地址从所述第一专用存储器复制到所述共享 存储器,且然后复制到所述第二专用存储器,以使所述第一虚拟 机在所述第二计算机或第二逻辑分区中将使用所述地址访问所述 共享存储器中的所述通信队列。
26.如权利要求23所述的方法,进一步包括以下步骤:
在将所述应用和所述操作系统复制到所述共享存储器的步骤 之后,停止所述应用在所述第一计算机或所述第一逻辑分区中的 执行;以及
将所述应用或所述操作系统的程序状态字从所述第一专用存 储器复制到所述共享存储器,且然后复制到所述第二专用存储器, 以使所述第二计算机或第二逻辑分区中的所述第一虚拟机在重新 开始时将使用所述程序状态字从其停止所述应用或所述操作系统 在所述第一计算机或所述第一逻辑分区中的执行的位置处重新开 始所述应用或所述操作系统的执行。
27.如权利要求23所述的方法,进一步包括以下步骤:
在将所述应用和所述操作系统复制到所述共享存储器的步骤 之后,停止所述应用在所述第一计算机或所述第一逻辑分区中的 执行;以及
在停止所述应用在所述第一计算机或所述第一逻辑分区中的 执行的步骤之前,所述第一计算机或所述第一逻辑分区中的所述 第二虚拟机向所述通信队列提供第一工作项目;以及
在所述第二计算机或所述第二逻辑分区中重新开始所述应用 的执行的步骤之后,所述第一计算机或所述第一逻辑分区中的所 述第二虚拟机向所述通信队列提供第二工作项目;并且其中所述 第二虚拟机使用用于所述通信队列的相同地址向所述通信队列提 供所述第一和第二工作项目。
28.一种用于将第一虚拟机从第一实计算机迁移到第二实计 算机或从同一实计算机中的第一逻辑分区迁移到第二逻辑分区的 系统,在迁移之前,所述第一虚拟机包括在专用于所述第一虚拟 机的第一专用存储器中的操作系统和应用,所述系统包括:
用于将所述第一虚拟机的通信队列存储于由所述第一和第二 计算机或所述第一和第二逻辑分区所共享的共享存储器中的第一 装置;
用于将所述操作系统和应用从所述第一专用存储器复制到所 述共享存储器的第二装置;以及
用于将所述操作系统和应用从所述共享存储器复制到所述第 二计算机或第二逻辑分区中所述第一虚拟机专用的第二专用存储 器,并在所述第二计算机或第二逻辑分区中重新开始所述第一虚 拟机的第三装置。
29.如权利要求28所述的系统,进一步包括用于将所述通信 队列从所述共享存储器附加到所述第二计算机或第二逻辑分区中 的所述第一虚拟机的第四装置。
30.如权利要求28所述的系统,进一步包括:
用于将所述第一计算机或第一逻辑分区中的所述第一虚拟机 所使用的所述通信队列的地址从所述第一专用存储器复制到所述 共享存储器,且然后复制到所述第二专用存储器,以使所述第一 虚拟机在所述第二计算机或第二逻辑分区中将使用所述地址来访 问所述共享存储器中的所述通信队列的第四装置。
31.如权利要求28所述的系统,进一步包括:
用于在所述第一装置将所述应用和所述操作系统复制到所述 共享存储器之后,停止所述应用在所述第一计算机或所述第一逻 辑分区中的执行的第四装置;以及
用于将所述应用或所述操作系统的程序状态字从所述第一专 用存储器复制到所述共享存储器,且然后复制到所述第二专用存 储器,以使所述第二计算机或第二逻辑分区中的所述第一虚拟机 在重新开始时将使用所述程序状态字从其停止所述应用或所述操 作系统在所述第一计算机或所述第一逻辑分区中的执行的位置处 重新开始所述应用或所述操作系统的执行的第五装置。
32.如权利要求28所述的系统,进一步包括:
用于在所述第一装置将所述应用和所述操作系统复制到所述 共享存储器之后,停止所述应用在所述第一计算机或所述第一逻 辑分区中的执行的第四装置;并且其中
在所述第四装置停止所述应用在所述第一计算机或所述第一 逻辑分区中的执行之前,所述第一计算机或所述第一逻辑分区中 的所述第二虚拟机向所述通信队列提供第一工作项目;以及
在所述第三装置在所述第二计算机或所述第二逻辑分区中重 新开始所述应用的执行之后,所述第一计算机或所述第一逻辑分 区中的所述第二虚拟机向所述通信队列提供第二工作项目;以及
所述第二虚拟机使用用于所述通信队列的相同地址向所述通 信队列提供所述第一和第二工作项目。

说明书全文

技术领域

发明涉及一般涉及计算机系统,更具体地,涉及虚拟机在同一实计 算机内从一个逻辑分区到另一个逻辑分区、或从一个实计算机到另一个实 计算机的迁移。

背景技术

现今,虚拟机操作系统是广为人知的,其包括一系统管理程序 (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公司的单系统映象(Single Sytem Image)可保存虚拟机的状态并迁移此虚拟机,但只是在不存在进行 中的I/O且该虚拟机没有通信设备时才可这样。Brookhaven National Laboratory的题为“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系统自动化(Tivoli System 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个处理器,向LPAR 31分配其他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定义映射到RAM 24的(虚拟)共享存储器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 HP UX操作系统。作为举例,应用53-55可以是IBM DB2数据库管理应用、 IBM Websphere应用、或其他应用。应用53-55的性质不构成本发明的一 部分,除非它们可产生到相同或不同实计算机上的其他虚拟机的通信或作 为来自这些其他虚拟机的通信的目标。此外,应用53-55可请求从“块” 存储器中读取数据块或向其写入数据块,在某些情况下,是请求从它们自 己专用的块存储器中读取数据块或向其写入数据块,而在另一些情况下, 是请求从同一LPAR中的其他虚拟机的块存储器中读取数据块或向其写入 数据块。
LPAR 30中每一虚拟机的客户操作系统和应用存储于分配给该虚拟机 的专用存储器中。该虚拟机的专用存储器还包含由客户操作系统、应用、 用于该操作系统和应用的程序状态字(也称作“CPU状态”)、及在该客 户操作系统和应用的处理期间所使用的数据寄存器所产生的数据。程序状 态字指示程序中的哪一行当前正在执行或接下来将要执行。程序状态字还 指示哪些中断是允许的、哪些指令是允许的、及哪些存储器可以访问。
同样,系统管理程序41最初将LPAR 31划分为虚拟机36和37,随 后,在虚拟机33M、34M和35M从LPAR 30迁移来之后进一步将LPAR 31划分为附加的虚拟机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 HP UX操作系统。作为举例,应用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/VM 4.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直接访问,但不能由LPAR 31中的虚拟机直接访问。这样,为了维护初始驻留于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到LPAR 31的迁移的说明。这一说明也适用于与虚拟机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”)的内容传送给LPAR 31的工作存储器81(步骤903)。在步骤903,系统管理程序40还将LPAR 30中通信队列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.0 CP Programming Services”手册对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相同的虚拟地址来访问LPAR 31中虚拟机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和10,对虚拟机35从系统310中的LPAR 30到LPAR 31的迁移的解释。虚拟机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正等待在LPAR 31中重新开始(并需要虚拟资源)。然后,系统管理程序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驻留于LPAR 30中时所使用的地址,这些地址随虚拟机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在LPAR 30中删除虚拟机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中(其负责重新开始从LPAR 30迁移来的虚拟机)的系统管理程序41或客户操作系统发出“重新开始” 虚拟机35的命令(步骤1134)。作为响应,虚拟机35M中的客户操作系 统45M和应用将在由迁移后的程序状态字(指针)所指示的位置重新开始 执行。
然后,虚拟机36或37中负责虚拟机从LPAR 30的迁移的系统管理程 序41或客户操作系统将虚拟机35的通信队列52-2从共享存储设备560复 制到共享存储器51(步骤1140)(此处为了说明的目的在图5中将其重新 标为52-3)。然后,虚拟机36或37中负责块存储器从LPAR 30到LPAR 31的迁移的系统管理程序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示出块存储器的另一实施例,其中每一虚拟机具有专用的块存储 器,而不能向任何其他虚拟机的块存储器写入或从其读取。这样,每一虚 拟机可向它自己的块存储器写入数据块,以释放它的专用存储器,然后当 在专用存储器中需要时再读回该数据块。
根据上面的描述,公开了体现本发明的计算机系统。但是,可作出大 量的更改和替换,而不背离本发明的范围。例如,每一虚拟机可具有其他 与上面描述的通信队列一起迁移的工作队列。因此,本发明是作为说明而 非限制而进行公开的,应当参考下面的权利要求来确定本发明的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈