将工作负载迁移到新的计算实例


在某些情况下,您可能需要将工作负载从现有虚拟机实例迁移到较新的虚拟机。迁移到新虚拟机的原因包括:

  • 利用新的机器类型提高存储或网络速度。 例如,从 C2 升级到 H3 以提高网络带宽。
  • 相对于源虚拟机实例,享受更高的性价比。例如,从 N1 升级到 N4,以便在第 5 代 Intel Xeon 处理器上获得更高的价值。
  • 使用仅在新虚拟机实例上提供的功能。例如,从 N4 升级到 C4 以利用额外的性能和维护选项。
  • 将虚拟机 (VM) 实例更改为裸机实例。
  • 将本地 SSD 磁盘添加到 C3 或 C3D 虚拟机实例。

升级到最新一代机器系列时,如果当前(源)虚拟机满足以下条件,则您可以按照修改计算实例的机器类型中所述的较简单步骤进行操作:

  • 新机器系列支持该操作系统 (OS) 版本。
  • 新机器系列支持挂接到来源虚拟机的启动磁盘的磁盘类型。
  • 虚拟机不使用本地 SSD 存储。
  • 已挂接 GPU 的虚拟机使用 G2 机器类型。如需了解详情,请参阅添加或移除 GPU
  • 虚拟机仅使用新机器系列支持的功能。
  • 虚拟机不属于托管式实例组 (MIG)。
  • 虚拟机使用 gVNIC 网络接口。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色

如需获得修改或更改虚拟机所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含修改或更改虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需修改或更改虚拟机,您需要具备以下权限:

  • 更改机器类型:
    • 针对项目的 compute.instances.stop 权限
    • 针对项目的 compute.instances.create 权限
    • 针对项目的 compute.instances.start 权限
    • 针对实例的 compute.instances.setMachineType 权限
  • 如需创建磁盘的快照:
    • 针对项目的 compute.snapshots.create 权限
    • 针对磁盘的 compute.disks.createSnapshot 权限
  • 创建新磁盘:
    • 针对项目的 compute.disks.list 权限
    • 针对项目的 compute.disks.create 权限
    • 针对项目的 compute.disks.update 权限
  • 如需将磁盘挂接到虚拟机:
    • 针对实例的 compute.instances.attachDisk 权限
    • 针对磁盘的 compute.disks.use 权限
  • 如需删除磁盘:针对项目的 compute.disks.delete 权限
  • 更改网络类型:
    • 针对项目的 compute.networks.list 权限
    • 针对项目的 compute.networks.update 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

评估虚拟机迁移选项

从一种机器类型迁移到另一种机器类型取决于多个因素,包括:新机器类型在各个区域的可用性,以及存储空间选项网络接口与源虚拟机和新机器系列的客户机操作系统的兼容性。

计算要求

请查看以下要求,以了解当前实例和新机器类型:

  • 请参阅机器系列资源文档,了解哪些机器类型适合您的工作负载。考虑您的应用是否需要特定硬件(GPU)、高性能或更低的费用。
  • 查看新机器类型支持的磁盘类型的功能。Hyperdisk 支持大部分(但不是全部)永久性磁盘功能。不过,Hyperdisk 提供了 Persistent Disk 所不具备的额外功能。
  • 查看潜在机器系列的功能。新的机器系列可能不支持您在当前机器系列中使用的功能,例如自定义机器类型、本地 SSD 或安全强化型虚拟机
  • 查看区域和可用区,确保新机器系列在当前虚拟机的所有区域中都可用。您可能需要调整部署、高可用性和灾难恢复计划。
  • 查看您的操作系统迁移计划:
    • 如果新虚拟机需要较新版本的操作系统,请验证您的应用与新版本的操作系统兼容。
    • 如果您要迁移到 Arm,并且 Arm 映像不适用于您当前的操作系统版本,请选择新的操作系统或操作系统版本来运行应用,并验证应用与新操作系统兼容。
  • 只要源 C3 虚拟机实例使用受支持的操作系统和网络驱动程序,就可以从 C3 虚拟机实例迁移到 C3 裸机实例。
  • 如果您要从 C3 以外的机器系列迁移到裸机实例,则必须创建新实例。您可能需要运行自己的 Hypervisor;不过,只要启用了 IDPF 驱动程序,您也可以运行任何 C3 裸机支持的操作系统。裸金属实例使用仅作为物理函数(而非虚拟函数)呈现的 IDPF 网络接口。

存储空间要求

请查看当前实例和新实例类型的以下存储空间要求:

  • 查看新机器系列支持的存储类型和存储接口。
    • 默认情况下,第一代和第二代机器系列仅使用永久性磁盘存储类型和 VirtIO-SCSI 接口。
    • 第三代及更新的机器系列(例如 M3、C3 和 N4)仅支持 NVMe 接口,有些机器系列仅支持 Hyperdisk 和本地 SSD 存储类型。
    • 裸机实例(例如 C3 和 X4)仅支持 Hyperdisk。
  • 磁盘兼容性:
    • 如果启动磁盘使用的是新机器系列不支持的磁盘类型(例如 pd-standard),则必须为新虚拟机创建新的启动磁盘。
    • 如果您要将操作系统升级到新版本,而该操作系统不支持就地升级,则必须创建新的启动磁盘。除非您将其复制到临时非启动磁盘,否则源启动磁盘上的所有数据都会丢失。接下来,您需要创建新的启动磁盘,并将存储在临时非启动磁盘上的数据复制到新的启动磁盘。
    • 如果您不升级操作系统版本,则可以为当前的启动磁盘截取快照,并将其恢复为受支持的新磁盘类型。创建虚拟机时,您可以将此新磁盘用作启动磁盘。
    • 如果非启动磁盘使用的是新机器系列不支持的磁盘类型,您可以使用快照将源磁盘更改为新磁盘类型,如更改磁盘类型中所述。
  • 本地 SSD 磁盘无法移至新的虚拟机。您可以将足够大的磁盘挂接到当前虚拟机,以存储所有本地 SSD 数据,然后使用快照将源磁盘更改为新磁盘类型,如更改磁盘类型中所述。创建具有挂接本地 SSD 磁盘的虚拟机后,您可以将数据复制回本地 SSD 磁盘。
  • 如果您的当前虚拟机实例使用存储池中的磁盘,但您要将工作负载迁移到其他区域的虚拟机,则必须在新区域重新创建磁盘和存储池。
  • 如果新机器系列使用不同的磁盘接口(例如,NVMe 而非 SCSI),则客户机操作系统中的磁盘设备名称会有所不同。确保您的应用和脚本在引用已连接的磁盘时使用永久性设备名称符号链接

网络要求

请查看以下针对当前实例和新实例类型的网络要求:

  • 查看新虚拟机支持的网络接口。

    • 默认情况下,第一代和第二代机器系列仅使用 VirtIO 网络接口。
    • 第三代及更新的机器系列(例如 M3、C3 和 N4)仅支持 gVNIC 网络接口。
    • 裸金属实例仅支持 IDPF 网络接口
  • 确保您的应用和操作系统支持适用于该机器系列的接口。

  • 查看虚拟机的网络配置,确定您是否需要保留已分配的 IP 地址。如果是,您必须将 IP 地址提升为静态 IP 地址。

  • 如果您在当前虚拟机中使用每个虚拟机的 Tier_1 网络性能,请确保该功能可用于新机器系列或在该机器系列中需要使用该功能。例如,您可以将 Tier_1 网络与 C2 机器类型搭配使用,但无需将其与 H3 虚拟机搭配使用。

如需确定当前虚拟机的网络接口类型,请使用 gcloud compute instances describe 命令查看虚拟机的 nic-type

  gcloud compute instances describe VM_NAME --zone=ZONE

如果您的虚拟机的 nic-type 已设置为 VIRTIO,则您无法更改网络接口类型。您必须创建一个新的虚拟机,并将网络接口类型设置为 gVNIC

准备好迁移现有虚拟机

完成评估部分后,下一步是准备迁移虚拟机实例,方法是请求新虚拟机实例的资源并准备来源虚拟机实例的备份。

准备计算资源

完成以下步骤,为将当前实例迁移到新实例做好准备:

  1. 在您计划迁移资源的区域和可用区中申请配额。如果您已有某个机器类型的配额,则可以申请将该配额转移。此过程需要几天的时间才能完成。
  2. 为新虚拟机实例创建预留,以确保新区域和可用区中有可用的机器资源。请务必了解如何使用预留资源,并测试您是否可以使用预留资源
  3. 扩展高可用性和灾难恢复计划,以纳入新区域。
  4. 如果需要,请升级当前虚拟机上的操作系统。
    1. 如果操作系统供应商支持,请将操作系统升级到新机器系列支持的版本,并验证您的工作负载在新操作系统版本上是否按预期运行。
    2. 如果不支持对操作系统进行就地升级,那么在创建新的虚拟机时,您必须创建新的启动磁盘。确定您需要从当前启动磁盘复制哪些信息,并将其复制到非启动磁盘上的临时位置,以便将其传输到新虚拟机。如果当前虚拟机未挂接任何非启动磁盘,请执行以下操作:

准备存储资源

完成以下步骤,为将挂接到当前实例的磁盘中的数据移至新实例做好准备:

  1. 在 Linux 系统上,请测试更新后的应用和脚本,确保它们使用的是永久性设备名称或符号链接,而不是磁盘设备名称
  2. 如果您要从运行 Microsoft Windows 的虚拟机迁移数据,请执行以下操作:
  3. 如果新虚拟机不支持与当前虚拟机相同的磁盘类型,您可能需要更新部署脚本或实例模板以支持新机器系列。
  4. 如果当前虚拟机为启动磁盘使用新机器系列不支持的磁盘类型,并且您要迁移具有相同配置的多个虚拟机,请创建自定义映像,以便在创建新虚拟机时使用:
    1. 为当前虚拟机的 pd-standard 启动磁盘创建快照
    2. 使用磁盘快照作为来源创建自定义映像
  5. 如果您需要移动本地 SSD 信息,请创建一个足够大的空白磁盘,以便备份本地 SSD 磁盘
    1. 如果可能,请使用新虚拟机支持的磁盘类型。
    2. 如果当前虚拟机和新虚拟机都支持的磁盘类型不存在,请使用当前虚拟机支持的磁盘类型创建临时磁盘。
    3. 新磁盘挂接到当前虚拟机,然后格式化并装载磁盘
    4. 将数据从挂接到当前虚拟机的本地 SSD 磁盘复制到此临时磁盘。
  6. 更改当前虚拟机挂接的任何磁盘的类型,这些磁盘使用的是新虚拟机不支持的磁盘类型。如需将磁盘数据移至新磁盘,请创建磁盘的快照。或者,您也可以在虚拟机之间传输文件

    1. 您可以在虚拟机运行时截取快照,但在您截取快照之后写入磁盘的任何数据都不会被捕获。由于快照是增量快照,因此您可以在停止虚拟机后再截取一次快照,以捕获所有最新更改。此方法应最大限度地缩短在您切换到新虚拟机期间虚拟机无法使用的时长。
    2. 或者,您也可以在停止虚拟机后截取所有磁盘快照。我们建议您为挂接到虚拟机的所有磁盘创建快照,即使新机器系列支持该磁盘类型也是如此。添加包含已复制本地 SSD 数据的所有临时磁盘。
    3. 创建磁盘快照所需的时间取决于多个因素,例如磁盘大小和磁盘中包含的数据量。例如,如果您对已满 85% 的 1 TiB 磁盘创建快照,则可能需要 5 分钟才能完成快照。但是,如果您为已满 85% 的 100 TiB 磁盘创建快照,则可能需要 11 分钟才能完成。我们建议您在开始迁移过程之前对磁盘执行测试快照,以了解创建快照所需的时间。
  7. 如果您有可离线的磁盘,则可以在源虚拟机仍可用时使用以下方法将数据移至新磁盘:

    1. 从虚拟机分离磁盘
    2. 为磁盘创建快照
    3. 借助该快照,使用新机器系列支持的磁盘类型创建新磁盘。新磁盘的大小必须与源磁盘相同或更大。

准备网络资源

完成以下步骤,以更新当前实例使用的网络配置,以支持新实例:

  1. 如果您的当前虚拟机不使用 gVNIC,则必须创建一个使用 gVNIC 的网络接口的新实例。查看将 gVNIC 与 Compute Engine 虚拟机搭配使用的概览,了解创建新实例时需要执行的步骤。
  2. 如果您要在新区域创建虚拟机,请在新区域创建 VPC 网络和子网
  3. 如果您配置了自定义 NIC 队列数,请参阅队列分配和更改机器类型
  4. 如果您想保留源虚拟机使用的 IP 地址,请将 IP 地址升级为静态 IP 地址
  5. 在停止源虚拟机之前,取消分配静态 IP 地址

将工作负载迁移到新虚拟机

为迁移做好虚拟机准备后,下一步是将工作负载迁移到新虚拟机。

如果您要将虚拟机从第一代机器系列迁移到第二代机器系列,请参阅修改虚拟机的机器类型页面上的说明。如果您想更改现有虚拟机的名称,请参阅重命名虚拟机一文。

执行此任务所需的权限

您必须拥有以下权限才能执行此任务:

  • 针对虚拟机的 compute.instances.setMachineType 权限

本部分介绍如何将工作负载从第一代或第二代虚拟机迁移到第三代(或更高版本)虚拟机。在此过程中,您需要创建一个新的虚拟机实例,然后将工作负载迁移到新虚拟机。

  1. 创建新虚拟机时,请选择一种受支持的磁盘类型作为启动磁盘,例如 Hyperdisk Balanced。

创建新的虚拟机

将工作负载从第一代或第二代虚拟机(例如 N1 或 N2)迁移到第三代或更高版本时,您必须先创建新的虚拟机,然后再迁移工作负载。

  1. 如果源虚拟机使用非启动磁盘,且磁盘类型为新机器系列支持的类型,请将磁盘从虚拟机中分离。
  2. 停止源虚拟机。
  3. 为仍连接到来源虚拟机的所有磁盘创建快照。
  4. 使用公共映像配置为使用 gVNIC 的自定义映像创建新的计算虚拟机实例。创建新虚拟机时,请选择以下选项:
    • 从您选择的机器系列中选择机器类型。
    • 选择受支持的操作系统映像,或使用您之前创建的自定义映像。
    • 为启动磁盘选择受支持的磁盘类型。
    • 如果您是通过原始磁盘的快照创建了新磁盘,请添加这些新磁盘。
    • 如果您要在其他区域创建实例,请指定新的 VPC 网络。
    • 如果新实例同时支持 VirtIO 和 gVNIC,请选择 gVNIC。
    • 如果您升用了来源虚拟机的临时 IP 地址,请指定静态 IP 地址。
  5. 启动新虚拟机。

实例启动后

现在,新实例已创建并启动,请完成以下步骤以完成新实例的配置,并从源实例复制所有数据。

  1. 将您从源虚拟机中分离的磁盘挂接到新虚拟机。
  2. 对于挂接到源虚拟机的任何使用新虚拟机不支持的磁盘类型的磁盘,请通过快照创建磁盘并将其挂接到新实例。创建新磁盘时,请选择新虚拟机支持的磁盘类型,并指定至少与原始磁盘一样大的大小。
  3. 如果您是使用公共操作系统映像(而非自定义映像)创建了新虚拟机,请执行以下操作:
    1. 在新实例上配置必要的用户、驱动程序、软件包和文件目录,以支持您的工作负载。
    2. 在新虚拟机上安装修改后的应用和程序。 如有必要,请在新操作系统或架构上重新编译程序。
  4. 可选:如果您已将本地 SSD 磁盘中的内容移至临时磁盘,并且新虚拟机已挂接本地 SSD 存储空间,则在格式化并装载磁盘后,您可以将数据从临时磁盘移至本地 SSD 磁盘。
  5. 将与源虚拟机关联的所有静态 IP 地址重新分配给新的虚拟机
  6. 完成使新虚拟机具有高可用性所需的任何其他任务,例如配置负载均衡器和更新转发规则
  7. 可选:根据需要,为新虚拟机更新 DNS 条目
  8. 建议:为新磁盘安排磁盘备份

如果您在迁移工作负载时遇到问题,请联系您的技术支持客户经理 (TAM) 或 Google 专业服务组织 (PSO) 获取帮助。

从 n1-standard-8 迁移到 n4-standard-8 的示例

以下示例演示了如何将 n1-standard-8 虚拟机迁移到 n4-standard-8 虚拟机。n1-standard-8 虚拟机具有运行 Ubuntu1804 映像的 PD-SSD 启动磁盘和 PD-SSD 数据磁盘。您必须使用 CLI 或 REST API 执行此过程。

您可以通过以下两种方式将 N1 虚拟机升级为 N4 虚拟机:

方法 1:如果您的 N1 虚拟机使用 VirtIO 网络接口,则必须创建新的 N4 虚拟机。N4 仅支持 gvnic 网络接口和 Hyperdisk Balanced 磁盘。您可以创建 Persistent Disk 启动磁盘和数据磁盘的快照,然后根据这些快照创建 Hyperdisk Balanced 磁盘,再将 Hyperdisk Balanced 磁盘挂接到新 N4 虚拟机。

您也可以选择使用较新版本的 Ubuntu 操作系统创建新的 Hyperdisk Balanced 启动磁盘。在此场景中,您可以从启动磁盘快照创建新的 Hyperdisk Balanced 磁盘,但您需要将该磁盘作为非启动磁盘挂接到 N4 虚拟机。然后,您可以将非系统数据从恢复的快照复制到新的启动磁盘。

方法 2:如果您的 N1 虚拟机使用 gvnic 网络接口,操作系统具有 NVMe 存储设备驱动程序,没有任何已挂接的本地 SSD 磁盘或 GPU,并且不属于托管式实例组 (MIG),则您可以将机器类型从 N1 更改为 N4,但仍必须将 Persistent Disk 磁盘类型更改为 Hyperdisk Balanced 磁盘。您必须先分离 Persistent Disk 启动磁盘和数据磁盘,创建磁盘快照,使用快照作为来源创建 Hyperdisk Balanced 磁盘,然后在更改机器类型后将新的 Hyperdisk Balanced 磁盘挂接到 N4 虚拟机。如果您的虚拟机已挂接 GPU,则必须先将其分离。

创建磁盘快照所需的时间取决于多个因素,例如磁盘上的总 TB 数。例如,如果您对已满 85% 的 1 TB 磁盘创建快照,则可能需要 5 分钟才能完成快照。但是,如果您为已满 85% 的 100 TB 磁盘创建快照,则可能需要 11 分钟才能完成。Google 建议您在开始迁移流程之前先对磁盘执行测试快照,以了解快照的用时。

gcloud

方法 1:使用快照磁盘创建新的 N4 虚拟机

  1. 使用 gcloud compute instances stop 停止虚拟机:

    gcloud compute instances stop VM_NAME \
      --zone=ZONE \
    

    替换以下内容:

    • VM_NAME 当前 n1-standard-8 虚拟机的名称。
    • ZONE:该虚拟机所在的可用区。
  2. 为磁盘创建快照。使用 gcloud compute snapshots create 为连接到虚拟机的永久性磁盘启动磁盘和数据磁盘创建快照。

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk=SOURCE_DISK_NAME \
        --source-disk-zone=SOURCE_DISK_ZONE
    

    替换以下内容:

    • SNAPSHOT_NAME:要创建的快照的名称。
    • SOURCE_DISK_NAME:来源磁盘的名称。
    • SOURCE_DISK_ZONE:来源磁盘的可用区。
  3. 为数据磁盘创建新的 Hyperdisk Balanced 磁盘,方法是重复上一步并指定数据磁盘信息(而不是启动磁盘)。gcloud compute disks create

    gcloud compute disks create DISK_NAME \
        --project=PROJECT_NAME \
        --type=DISK_TYPE \
        --size=DISK_SIZE \
        --zone=ZONE \
        --source-snapshot=SNAPSHOT_NAME \
        --provisioned-iops=PROVISIONED_IOPS \
        --provisioned-throughput=PROVISIONED_THROUGHPUT
    
    

    替换以下内容:

    • DISK_NAME:您要根据快照磁盘创建的新磁盘的名称。
    • PROJECT_NAME:您的项目的名称。
    • DISK_TYPE:新的磁盘类型,在本示例中,它是 Hyperdisk Balanced 磁盘。
    • DISK_SIZE:磁盘的大小(示例:100GB)。
    • ZONE:新磁盘所在的可用区。
    • SNAPSHOT_NAME:快照来源磁盘的名称。
    • 可选:PROVISIONED_IOPS:磁盘的 IOPS 性能(示例:3600)。
    • 可选:PROVISIONED_THROUGHPUT:预配磁盘的吞吐量性能(示例:290)。
  4. 每个已截取快照的磁盘重复上述步骤。

  5. 使用 gcloud compute instances create 创建 n4-standard-8 虚拟机并挂接 Hyperdisk Balanced 磁盘:

    gcloud compute instances create VM_NAME \
        --project=PROJECT_NAME \
        --zone=ZONE \
        --machine-type=NEW_MACHINE_TYPE \
        --boot-disk-device-name=BOOT_DISK_NAME \
        --disk=name=NON_BOOT_DISK_NAME, boot=no \
        --network-interface=nic-type=GVNIC \
    

    替换以下内容:

    • VM_NAME:新虚拟机实例的名称。
    • PROJECT_NAME:您的项目的名称。
    • ZONE:新虚拟机所在的可用区。
    • NEW_MACHINE_TYPE:机器类型,在本例中为 n4-standard-8
    • BOOT_DISK_NAME 您从已挂接到 n1-standard-8 虚拟机的源磁盘快照创建的 Hyperdisk Balanced 启动磁盘的名称。
    • NON_BOOT_DISK_NAME 您从连接到 n1-standard-8 虚拟机的来源快照磁盘创建的 Hyperdisk Balanced 数据磁盘的名称。
  6. 使用 gcloud compute instances start 启动 n4-standard-8 虚拟机:

    gcloud compute instances start VM_NAME
    

    VM_NAME 替换为新虚拟机的名称。

方法 2:执行就地机器升级

只有在 N1 虚拟机使用 gvnic 网络接口、操作系统具有 NVMe 存储设备驱动程序、没有任何已挂接的本地 SSD 磁盘或 GPU,并且不属于托管式实例组 (MIG) 的情况下,此选项才可用。对具有 VirtIO 网络接口的 N1 虚拟机执行此过程会生成虚拟机不兼容错误。

  1. 停止虚拟机
  2. 从虚拟机分离磁盘
  3. 为启动磁盘和数据磁盘创建快照
  4. 使用磁盘快照作为每个磁盘的来源创建 Hyperdisk Balanced 启动磁盘和数据磁盘
  5. 将机器类型设置为 N4 虚拟机
  6. 挂接 Hyperdisk Balanced 启动磁盘和 Hyperdisk Balanced 数据磁盘
  7. 启动 N4 虚拟机

REST

方法 1:使用快照磁盘创建新的 N4 虚拟机

  1. 使用 instances.stop 方法停止虚拟机:

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME/stop
    

    替换以下内容:

    • PROJECT_NAME:项目 ID。
    • ZONE:包含虚拟机的可用区。
    • VM_NAME:您当前的 n1-standard-8 虚拟机的名称。
  2. 使用 disks.createSnapshot 方法为磁盘创建快照,以便为实例挂接的永久性磁盘启动磁盘和数据磁盘创建快照。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/disks/DISK_NAME/createSnapshot
    

    在请求正文中,添加新创建的快照 Persistent Disk 磁盘的名称。

    例如:

    {
        "name": "SNAPSHOT_NAME"
    }
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:您的磁盘所在的可用区。
    • DISK_NAME:您计划截取快照的磁盘。
    • SNAPSHOT_NAME:快照的名称,例如 hdb-boot-diskhdb-data-disk
  3. 使用 disks.insert 方法创建 Hyperdisk Balanced 磁盘。您需要执行此步骤两次:一次是添加 Hyperdisk Balanced 启动磁盘的 name;第二次是添加数据磁盘的 name。在请求正文中,使用新的 Hyperdisk Balanced 启动和数据磁盘的 sourceSnapshot、磁盘的 type (Hyperdisk Balanced),以及磁盘的 sizeGB

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONEdisks
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:您的磁盘所在的可用区。

    在请求正文中,添加以下各项:

    例如:

    {
        "name": "my-hdb-boot-disk" or "my-hdb-data-disk",
        "sourceSnapshot": "projects/your-project/global/snapshots/SNAPSHOT_NAME",
        "type": "projects/your-project/zones/us-central1-a/diskTypes/hyperdisk-balanced",
        "sizeGb": "100"
    }'
    
  4. 使用 instances.insert 方法创建新的 N4 虚拟机。

    
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances
    
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:您的磁盘所在的可用区。

    在请求正文中,添加以下各项:

    
      {
        "machineType":"projects/your-project/zones/us-central1-a/machineTypes/n4-standard-8" "name":"VM_NAME", 
        "disks": [
          { 
            "boot": true,
            "deviceName": "my-hdb-boot-disk",
            "source": "projects/your-project/zones/us-central1-a/disks/my-hdb-boot-disk",
            "type": "PERSISTENT"
          },
    
          {
            "boot": false,
            "deviceName": "my-hdb-data-disk",
            "source": "projects/your-project/zones/us-central1-a/disks/my-hdb-data-disk",
            "type": "PERSISTENT"
          }
          ],
            "networkInterfaces":[
              {
                "network":"global/networks/NETWORK_NAME", 
                "subnetwork":"regions/REGION/subnetworks/SUBNET_NAME",
                "nicType": "GVNIC"
              }
           ]
         }
    
    

    替换以下内容:

    • VM_NAME:虚拟机的名称。
    • NETWORK_NAME:网络的名称。
    • REGION:区域的名称。
    • SUBNET_NAME:子网的名称。
  5. 使用 instances.start 方法启动虚拟机:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME/start
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:虚拟机所在的可用区。
    • VM_NAME:虚拟机的名称。

方法 2:执行就地机器升级

只有在 N1 虚拟机使用 gvnic 网络接口、没有任何已挂接的本地 SSD 磁盘或 GPU,并且不属于托管式实例组 (MIG) 的情况下,此选项才可用。对具有 VirtIO 网络接口的 N1 虚拟机执行此过程会生成虚拟机不兼容错误。

  1. 使用 instances.stop 方法停止虚拟机。

  2. 使用 instances.detachDisk 方法将磁盘从 N1 虚拟机中分离,以将原始永久性磁盘启动磁盘从 N1 虚拟机中分离。您还必须将所有数据磁盘从虚拟机中分离出来。

    https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME/detachDisk?deviceName=DISK_NAME
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:您的磁盘所在的可用区。
    • VM_NAME:已挂接 pd-ssd 磁盘的来源虚拟机的名称。
    • DISK_NAME:要分离的磁盘。
  3. 为磁盘创建快照。使用 disks.createSnapshot 方法为已挂接到实例的永久性磁盘启动磁盘和数据磁盘创建快照。

  4. 使用 disks.insert 方法创建 Hyperdisk Balanced 启动磁盘和数据磁盘,在请求正文中添加 Hyperdisk Balanced 磁盘的 name、新 Hyperdisk Balanced 磁盘的 sourceSnapshot、磁盘的 type(Hyperdisk Balanced)以及磁盘的 sizeGB

  5. 使用 instances.setMachineType 方法执行就地机器类型升级,在请求正文中添加 machineType

    POST  https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONEinstances/VM_NAME/setMachineTypeMACHINE_TYPE
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:您的磁盘所在的可用区。
    • VM_NAME:要升级的虚拟机的名称。
    • MACHINE_TYPE:新机器类型。

    在请求正文中,添加以下各项:

    
    {
     "machineType": "projects/PROJECT_NAME/zones/ZONE/machineTypes/MACHINE_TYPE",
    }
    
    
  6. 使用 instances.attachDisk 方法将新的 Hyperdisk Balanced 启动磁盘和 Hyperdisk Balanced 数据磁盘挂接到 N4 虚拟机。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instancesVM_NAMEattachDiskDISK_NAME
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:您的磁盘所在的可用区。
    • VM_NAME:源虚拟机实例的名称,其中挂接了 pd-ssd 磁盘。
    • DISK_NAME 您要挂接的磁盘。

    在请求正文中,添加以下各项:

    {
    "source": "projects/your-project/zones/us-central1-a/disks/my-hdb-boot-disk",
    "deviceName":"my-hdb-boot-disk","boot":true
    }
    
    {
    "source": "projects/your-project/zones/us-central1-a/disks/my-hdb-data-disk",
    "deviceName":"my-hdb-data-disk","boot":false
    }
    
  7. 使用 instances.start 方法启动 N4 虚拟机。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONEinstances/VM_NAME/start
    

    替换以下内容:

    • PROJECT_NAME:您的项目的名称。
    • ZONE:您的磁盘所在的可用区。
    • VM_NAME:虚拟机的名称。

清理

确认您可以连接到新虚拟机,并且您的工作负载在新虚拟机上按预期运行后,您可以移除不再需要的资源:

  1. 您为挂接到来源虚拟机的磁盘创建的快照。
  2. 已连接到来源虚拟机的磁盘的任何快照时间表。
  3. 为将本地 SSD 数据复制到新虚拟机而创建的临时磁盘。
  4. 来源虚拟机和所有已挂接的磁盘。

后续步骤