在某些情况下,您可能需要将工作负载从现有虚拟机实例 (VM) 迁移到较新的 VM。迁移到新虚拟机的原因包括:
- 利用新的机器类型加快存储或网络速度。 例如,从 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Compute Instance Admin (v1) (
roles/compute.admin.v1
) -
更改网络类型:
Compute Engine Network Admin (
roles/compute.networkAdmin
) -
更改机器类型:
- 针对项目的
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 支持 Persistent Disk 的大多数功能,但并非全部。不过,Hyperdisk 提供了 Persistent Disk 不提供的其他功能。
- 查看预期机器系列的功能。新机器系列可能不支持当前机器系列使用的功能,例如自定义机器类型、本地 SSD 或安全强化型虚拟机。
- 查看区域和可用区,确保新机器系列在当前虚拟机的所有区域中均可用。您可能需要调整部署、高可用性和灾难恢复计划。
- 查看您的操作系统迁移计划:
- 如果新虚拟机需要较新版本的操作系统,请验证您的应用与新版本的操作系统兼容。
- 如果您要迁移到 Arm,并且 Arm 映像不适用于您当前的操作系统版本,请选择新的操作系统或操作系统版本来运行应用,并验证应用与新操作系统兼容。
- 您可以从 C3 虚拟机实例迁移到 C3 裸金属实例,前提是源 C3 虚拟机实例使用受支持的操作系统和网络驱动程序。
- 如果您要从除 C3 之外的机器系列迁移到裸机实例,则必须创建新实例。您可能需要运行自己的 Hypervisor;不过,只要 IDPF 驱动程序处于启用状态,您也可以运行任何受 C3 裸金属支持的操作系统。裸机实例使用 IDPF 网络接口,该接口仅作为实体函数(而非虚拟函数)呈现。
- 查看新机器系列支持的存储类型和存储接口。
- 默认情况下,第一代和第二代机器系列仅使用 Persistent Disk 存储类型和 VirtIO-SCSI 接口。
- 第三代及更新型号的机器系列(例如 M3、C3 和 N4)仅支持 NVMe 接口,其中一些机器仅支持 Hyperdisk 和本地 SSD 存储类型。
- 裸金属实例(例如 C3 和 X4)仅支持 Hyperdisk。
- 磁盘兼容性:
- 如果启动磁盘使用的是新机器系列不支持的磁盘类型(例如
pd-standard
),则您必须为新虚拟机创建新的启动磁盘。 - 如果您要将操作系统升级到新版本,并且操作系统不支持就地升级,则必须创建新的启动磁盘。除非您将源启动盘上的数据复制到临时非启动盘,否则这些数据将会丢失。接下来,您需要创建一个新的启动磁盘,并将存储在临时非启动磁盘上的数据复制到新的启动磁盘。
- 如果您不升级操作系统版本,则可以为当前的启动磁盘截取快照,并将其恢复为受支持的新磁盘类型。创建虚拟机时,您可以将此新磁盘用作启动磁盘。
- 如果非启动磁盘使用新机器系列不支持的磁盘类型,您可以使用快照将源磁盘更改为新磁盘类型,如更改磁盘类型中所述。
- 如果启动磁盘使用的是新机器系列不支持的磁盘类型(例如
- 本地 SSD 磁盘无法移至新的虚拟机。您可以将一个足够大的磁盘挂接到当前虚拟机,然后使用快照将源磁盘更改为新磁盘类型,如更改磁盘类型中所述。创建挂接了本地 SSD 磁盘的虚拟机后,您可以将数据复制回本地 SSD 磁盘。
- 如果当前虚拟机实例使用存储池中的磁盘,但您要将工作负载迁移到其他区域中的虚拟机,则必须在新区域中重新创建磁盘和存储池。
- 如果新机器系列使用不同的磁盘接口(例如 NVMe 而非 SCSI),则客户机操作系统中的磁盘设备名称会有所不同。确保您的应用和脚本在引用已连接的磁盘时使用永久性设备名称或符号链接。
查看新虚拟机支持的网络接口。
- 默认情况下,第一代和第二代机器系列仅使用 VirtIO 网络接口。
- 第三代及更新型号的机器系列(例如 M3、C3 和 N4)仅支持 gVNIC 网络接口。
- 裸金属实例仅支持 IDPF 网络接口。
确保您的应用和操作系统支持适用于相应机器系列的接口。
查看虚拟机的网络配置,确定您是否需要保留分配的 IP 地址。如果是,您必须将 IP 地址升级为静态 IP 地址。
如果您当前的虚拟机使用的是每个虚拟机的 Tier_1 网络性能,请确保新机器系列支持该功能或需要该功能。例如,您可以将 Tier_1 网络与 C2 机器类型搭配使用,但不需要与 H3 虚拟机搭配使用。
- 在您计划迁移资源的区域和可用区中申请配额。如果您已有某种机器类型的配额,则可以申请迁移该配额。此过程需要几天才能完成。
- 为新的虚拟机实例创建预留,以确保新区域和可用区中有可用的机器资源。请务必了解预留资源的消耗方式,并测试您是否可以消耗预留资源。
- 扩展高可用性和灾难恢复方案,以纳入新区域。
- 如果需要,请升级当前虚拟机上的操作系统。
- 如果操作系统供应商支持,请将操作系统就地升级到新机器系列支持的版本,并验证您的工作负载在新操作系统版本上是否按预期运行。
- 如果不支持操作系统的原位升级,那么在创建新的虚拟机时,您必须创建新的启动磁盘。确定您需要从当前启动磁盘复制哪些信息,并将其复制到非启动磁盘上的临时位置,以便将其传输到新虚拟机。如果当前虚拟机未挂接任何非启动磁盘,请执行以下操作:
- 对于第一代和第二代机器类型,请参阅将 Persistent Disk 存储添加到虚拟机。
- 对于第三代及更新型机器类型,请参阅将 Hyperdisk 存储空间添加到虚拟机。
- 如果适用于您的 Linux 发行版,请查看
/etc/udev/rules.d/
下的 udev 规则。此文件可能包含与当前实例的硬件配置相关的条目,但不包含与新实例相关的条目。例如,以下条目可确保virtio-pci
驱动程序 (VirtIO Net) 提供eth0
,从而阻止gve
驱动程序 (gVNIC) 提供此接口。这可能会导致新实例中出现网络启动脚本和连接问题: - 在 Linux 系统上,请测试更新后的应用和脚本,确保它们使用的是永久性设备名称或符号链接,而不是磁盘设备名称。
- 如果您要从运行 Microsoft Windows 的虚拟机迁移,请执行以下操作:
- 您必须更新 2022 年 5 月之前创建的虚拟机上的 NVMe 驱动程序。这适用于当前虚拟机中的启动磁盘以及任何先前创建的用于创建虚拟机的快照或自定义映像。
- 必须重新配置 Windows 才能开始使用 Microsoft NVMe 驱动程序 (StorNVMe)。按照说明更新启动设备。
- 如果新虚拟机不支持与当前虚拟机相同的磁盘类型,您可能需要更新部署脚本或实例模板,以支持新机器系列。
- 如果当前虚拟机的启动磁盘使用了新机器系列不支持的磁盘类型,并且您要迁移具有相同配置的多个虚拟机,请创建一个自定义映像,以便在创建新虚拟机时使用:
- 如果您需要移动本地 SSD 信息,请创建一个足够大的空白磁盘来备份本地 SSD 磁盘。
更改当前虚拟机挂接的任何磁盘的类型,这些磁盘使用的是新虚拟机不支持的磁盘类型。如需将磁盘数据移至新磁盘,请为磁盘创建快照。或者,您也可以在虚拟机之间传输文件。
- 您可以在虚拟机运行时截取快照,但在截取快照后写入磁盘的任何数据都不会被捕获。由于快照是增量快照,因此您可以在停止虚拟机后再截取一次快照,以捕获所有最新更改。这种方法应该可以最大限度地缩短虚拟机在您切换到新虚拟机期间不可用的时长。
- 或者,您也可以在停止虚拟机后截取所有磁盘快照。我们建议您为挂接到虚拟机的所有磁盘创建快照,即使新机器系列支持相应磁盘类型也是如此。包含包含复制的本地 SSD 数据的所有临时磁盘。
- 创建磁盘快照所需的时间取决于多种因素,例如磁盘大小和磁盘中包含的数据量。例如,如果您对已满 85% 的 1 TiB 磁盘创建快照,则快照可能需要 5 分钟才能完成。但是,如果您对已满 85% 的 100 TiB 磁盘创建快照,则可能需要 11 分钟才能完成。我们建议您在开始迁移流程之前对磁盘执行测试快照,以了解创建快照所需的时间。
如果您有可离线的磁盘,则可以在源虚拟机仍可用时,使用以下方法将数据移至新磁盘:
- 如果您的当前虚拟机不使用 gVNIC,您必须创建一个使用 gVNIC 的网络接口的新实例。请参阅将 gVNIC 与 Compute Engine 虚拟机搭配使用的概览,了解创建新实例时需要执行的步骤。
- 如果您要在新区域中创建虚拟机,请在新区域中创建 VPC 网络和子网。
- 如果您配置了自定义 NIC 队列计数,请参阅队列分配和更改机器类型。
- 如果您想保留源虚拟机使用的 IP 地址,请将 IP 地址提升为静态 IP 地址。
- 在停止源虚拟机之前,取消分配静态 IP 地址。
- 针对虚拟机的
compute.instances.setMachineType
权限 - 创建新虚拟机时,请选择一种受支持的磁盘类型作为启动磁盘,例如 Hyperdisk Balanced。
- 如果源虚拟机使用的非启动磁盘的磁盘类型受新机器系列支持,请将磁盘从虚拟机分离。
- 停止源虚拟机。
- 为仍挂接到来源虚拟机的所有磁盘创建快照。
- 使用公共映像或配置为使用 gVNIC 的自定义映像创建新的计算虚拟机实例。创建新虚拟机时,请选择以下选项:
- 从您选择的机器系列中选择机器类型。
- 选择受支持的操作系统映像,或使用您之前创建的自定义映像。
- 为启动磁盘选择受支持的磁盘类型。
- 如果您根据原始磁盘的快照创建了新磁盘,请添加这些新磁盘。
- 如果您要在其他区域创建实例,请指定新的 VPC 网络。
- 如果新实例同时支持 VirtIO 和 gVNIC,请选择 gVNIC。
- 如果您提升了来源虚拟机的临时 IP 地址,请指定静态 IP 地址。
- 启动新的虚拟机。
- 将您从源虚拟机分离的磁盘挂接到新虚拟机。
- 对于挂接到来源虚拟机且使用新虚拟机不支持的磁盘类型的所有磁盘,请通过快照创建磁盘并将其挂接到新实例。创建新磁盘时,请选择新虚拟机支持的磁盘类型,并指定至少与原始磁盘一样大的大小。
- 如果原始虚拟机对为新虚拟机重新创建的任何磁盘使用了资源政策,您需要将资源政策添加到新磁盘。
- 如果您使用的是公共操作系统映像(而非自定义映像)创建的新虚拟机,请执行以下操作:
- 在新实例上配置必要的用户、驱动程序、软件包和文件目录,以支持您的工作负载。
- 在新虚拟机上安装修改后的应用和程序。 如有必要,请在新操作系统或架构上重新编译程序。
- 可选:如果您已将本地 SSD 磁盘的内容移至临时磁盘,并且新虚拟机已挂接本地 SSD 存储空间,则在格式化并装载磁盘后,您可以将数据从临时磁盘移至本地 SSD 磁盘。
- 将与源虚拟机关联的所有静态 IP 地址重新分配给新的虚拟机。
- 完成使新虚拟机实现高可用性所需的所有其他任务,例如配置负载平衡器和更新转发规则。
- 可选:根据需要,更新新虚拟机的 DNS 条目。
- 建议:为新磁盘安排磁盘备份。
- 建议:如果您将操作系统更改为其他版本或架构,请重新编译应用。
使用 gcloud compute instances stop 停止虚拟机:
gcloud compute instances stop VM_NAME \ --zone=ZONE
替换以下内容:
VM_NAME
当前n1-standard-8
虚拟机的名称。ZONE
:该虚拟机所在的可用区。
为磁盘创建快照。使用 gcloud compute snapshots create 为虚拟机挂接的 Persistent Disk 启动磁盘和数据磁盘创建快照。
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
:来源磁盘的可用区。
为数据磁盘创建新的 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
)。
对每个已截取快照的磁盘重复上述步骤。
使用 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 数据磁盘的名称。
使用 gcloud compute instances start 启动
n4-standard-8
虚拟机:gcloud compute instances start VM_NAME
将
VM_NAME
替换为新虚拟机的名称。- 停止虚拟机。
- 从虚拟机分离磁盘。
- 创建启动磁盘和数据磁盘的快照。
- 使用磁盘快照作为每个磁盘的来源创建 Hyperdisk Balanced 启动磁盘和数据磁盘。
- 将机器类型设置为 N4 虚拟机。
- 挂接 Hyperdisk Balanced 启动磁盘和 Hyperdisk Balanced 数据磁盘。
- 启动 N4 虚拟机。
使用 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
虚拟机的名称。
使用 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-disk
或hdb-data-disk
。
使用 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" }'
使用 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
:子网的名称。
使用 instances.start 方法启动虚拟机:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME/start
替换以下内容:
PROJECT_NAME
:您的项目的名称。ZONE
:虚拟机所在的可用区。VM_NAME
:虚拟机的名称。
使用 instances.stop 方法停止虚拟机。
使用 instances.detachDisk 方法将原始 Persistent Disk 启动磁盘从 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
:您要分离的磁盘。
为磁盘创建快照。使用 disks.createSnapshot 方法为实例挂接的 Persistent Disk 启动磁盘和数据磁盘创建快照。
使用 disks.insert 方法创建 Hyperdisk Balanced 启动和数据磁盘,并在请求正文中添加 Hyperdisk Balanced 磁盘的
name
、新的 Hyperdisk Balanced 磁盘的sourceSnapshot
、磁盘的type
(Hyperdisk Balanced),以及磁盘的sizeGB
。使用 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", }
使用 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 }
使用 instances.start 方法启动 N4 虚拟机。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONEinstances/VM_NAME/start
替换以下内容:
PROJECT_NAME
:您的项目的名称。ZONE
:您的磁盘所在的可用区。VM_NAME
:虚拟机的名称。
- 您为挂接到来源虚拟机的磁盘创建的快照。
- 挂接到来源虚拟机的磁盘的任何快照时间表。
- 创建的临时磁盘,用于将本地 SSD 数据复制到新虚拟机。
- 来源虚拟机和所有已挂接的磁盘。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得修改或更改虚拟机所需的权限,请让管理员向您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含修改或更改虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
修改或更改虚拟机需要以下权限:
评估虚拟机迁移选项
从一种机器类型迁移到另一种机器类型取决于多个因素,包括:新机器类型在区域中的可用性,以及存储选项和网络接口与源虚拟机的客户操作系统和新机器系列的兼容性。
计算要求
请查看针对当前实例和新机器类型的以下要求:
存储空间要求
请查看当前实例和新实例类型的以下存储空间要求:
网络要求
请查看当前实例和新实例类型的以下网络要求:
如需确定当前虚拟机的网络接口类型,请使用
gcloud compute instances describe
命令查看虚拟机的nic-type
:gcloud compute instances describe VM_NAME --zone=ZONE
如果您的虚拟机的
nic-type
设置为VIRTIO
,则无法更改网络接口类型。您必须创建一个新虚拟机,并将网络接口类型设为 gVNIC。准备迁移现有虚拟机
完成评估部分后,下一步是准备迁移虚拟机实例,具体方法是请求新的虚拟机实例的资源并准备源虚拟机实例的备份。
准备计算资源
完成以下步骤,为将当前实例迁移到新实例做好准备:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="virtio-pci", ATTR{dev_id}=="0x0", KERNELS=="0000:00:04.0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
准备存储资源
完成以下步骤,为将挂接到当前实例的磁盘中的数据移至新实例做好准备:
准备网络资源
请完成以下步骤,更新当前实例使用的网络配置以支持新实例:
准备 SUSE Enterprise Linux Server 操作系统
为避免出现硬件专用依赖项,请重新构建
initramfs
(初始 RAM 文件系统)。这包括更多类型的驱动程序和模块,使操作系统与其他实例类型兼容。如果不执行此操作,您将遇到导致虚拟机无法正常启动的已知问题。在关闭系统之前,请以 root 身份运行以下命令,使用所有驱动程序重新构建
initramfs
:sudo dracut --force --no-hostonly
将工作负载迁移到新虚拟机
让虚拟机做好迁移准备后,下一步是将工作负载迁移到新虚拟机。
如果您要将虚拟机从第 1 代机器系列迁移到第 2 代机器系列,请参阅修改虚拟机的机器类型页面上的说明。如果您想更改现有虚拟机的名称,请参阅重命名虚拟机中的信息。
执行此任务所需的权限
您必须拥有以下权限才能执行此任务:
本部分介绍了如何将工作负载从第 1 代或第 2 代虚拟机迁移到第 3 代(或更高版本)虚拟机。在此过程中,您需要创建一个新的虚拟机实例,然后将工作负载迁移到新虚拟机。
创建新的虚拟机
将工作负载从第一代或第二代虚拟机(例如 N1 或 N2)迁移到第三代或更高版本时,您必须先创建新的虚拟机,然后再迁移工作负载。
实例启动后
现在,新实例已创建并启动,请完成以下步骤以完成新实例的配置,并复制源实例中的所有数据。
如果您在迁移工作负载时遇到问题,请与您的技术支持客户经理 (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 磁盘,并使用 Hyperdisk Balanced 磁盘创建新的 N4 虚拟机。您还可以选择使用较新版本的 Ubuntu OS 创建新的 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 虚拟机:
方法 2:执行就地升级:
只有在 N1 虚拟机使用
gvnic
网络接口、操作系统具有 NVMe 存储设备驱动程序、没有任何已挂接的本地 SSD 磁盘或 GPU,并且不属于托管式实例组 (MIG) 的情况下,此选项才可用。使用具有VirtIO
网络接口的 N1 虚拟机执行此过程会生成 VM 不兼容错误。REST
选项 1:使用快照磁盘创建新的 N4 虚拟机:
方法 2:执行就地升级:
只有在 N1 虚拟机使用
gvnic
网络接口、没有任何已挂接的本地 SSD 磁盘或 GPU,并且不属于代管式实例组 (MIG) 的情况下,此选项才可用。使用具有VirtIO
网络接口的 N1 虚拟机执行此过程会生成 VM 不兼容错误。清理
确认您可以连接到新虚拟机,并且工作负载在新虚拟机上按预期运行后,您可以移除不再需要的资源:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-