排查 Migrate to Virtual Machines 问题

如果您在使用 Migrate to Virtual Machines 时遇到问题,可查阅以下实用的问题排查步骤。

错误:需要 compute.subnetworks.use 权限

通过共享 VPC,组织可以将多个项目中的资源连接到一个公用 Virtual Private Cloud (VPC) 网络,让它们能够通过该网络使用内部 IP 地址安全高效地相互通信。

借助 Migrate to Virtual Machines,您可以将 Compute Engine 实例部署到有权访问共享 VPC 的项目。但是,如果您尚未将 compute.subnetworks.use 角色分配给 Migrate to Virtual Machines 默认服务账号,则会在尝试部署 Compute Engine 实例时看到以下形式的错误消息:

"Create instance of VM "my-vm" from source "my-proj" to target project "target-proj" using Compute Engine instance name "instance-id" failed due to: Required 'compute.subnetworks.use' permission for 'projects/vpc-proj/regions/us-central1/subnetworks/shared-central1'

确保按照为共享 VPC 配置权限中所述,将共享 VPC 宿主项目的 compute.subnetworks.use 角色分配给 Migrate to Virtual Machines 默认服务账号。

错误:用户无权访问服务账号

作为为迁移后的虚拟机配置目标的一部分,Migrate to Virtual Machines 可让您将服务账号分配给在目标项目上运行的 Compute Engine 实例。

但是,为了能够将服务账号分配给在目标项目上运行的 Compute Engine 实例,宿主项目上的 Migrate to Virtual Machines 默认服务账号必须具有目标服务账号的 Service Account User 角色。

如果将服务账号分配给 Compute Engine 实例,但宿主项目在目标服务账号上没有 Service Account User 角色,那么在尝试测试克隆时或割接虚拟机时,会看到以下错误:

Test-Clone of VM "my-vm" from source "source-vm" to target project "target-proj" using Compute Engine instance name "my-instance" failed due to: The user does not have access to service account 'target-service-account-email'. User: 'host-user-account-email'. Ask a project owner to grant you the iam.serviceAccountUser role on the service account

确保正确配置 Migrate to Virtual Machines 默认服务账号,以能够访问目标服务账号。如需了解详情,请参阅配置目标项目服务账号的权限

错误:由于超出 vCenter 查询数上限,无法生成报告

为了帮助您确定 Compute Engine 目标的最佳设置,您可以通过 Migrate to Virtual Machines 创建来源虚拟机利用率报告。此报告显示与 vCenter 中部署的来源虚拟机资源分配和利用率相关的信息。

该报告基于 vCenter 收集的数据生成。生成该报告时,您可能会在以下表单中看到错误,该错误表明已达到 vCenter 配额限制:

Report generation for source source connected to vCenter vcenter failed due to vCenter maximum query limit exceeded. Details: VC message

如需详细了解如何提高配额限制,请参阅这篇 vSphere 文章

错误:在 Migrate to Virtual Machines 中创建的实例无法启动

当来源虚拟机启动磁盘不是虚拟机磁盘列表上的第一个磁盘时,您可能会收到显示以下消息的串行控制台错误:

drive 0x000f2410: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=104857600
drive 0x000f23d0: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=167772160
drive 0x000f2390: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=83886080
Sending Seabios boot VM event.
Booting from Hard Disk 0...

为了缓解此错误,请克隆磁盘并按正确的顺序将这些克隆连接到 Migrate to Virtual Machines 上的新虚拟机。

如需克隆磁盘并按正确的顺序连接磁盘,请执行以下步骤:

  1. 停止复制的虚拟机。
  2. 克隆您的原始启动磁盘:

    gcloud compute disks create -project=$PROJECT --zone=$ZONE --source-disk=$DISK new-disk-name
    
  3. 运行以下命令,将许可重新分配给克隆的启动磁盘并添加相关标记(示例为 windows2008-r2):

    gcloud compute disks create --project=$PROJECT --zone=$ZONE --source-disk=disk created on step #2 --licenses=projects/windows-cloud/global/licenses/windows-server-2008-r2-dc --guest-os-features=VIRTIO_SCSI_MULTIQUEUE,MULTI_IP_SUBNET,WINDOWS new-disk-name
    
  4. 修改虚拟机:

    1. 分离当前的启动磁盘并将其挂接到额外磁盘
    2. 额外磁盘中移除原始启动磁盘。
    3. 第 3 步中的已创建磁盘挂接到启动磁盘
    4. 保存更改。

确认虚拟机的启动过程后,您可以删除原始启动磁盘。

错误:Windows 虚拟机在首次启动克隆时运行“chkdsk”

Migrate to Virtual Machines 测试克隆阶段根据来源虚拟机运行时截取的快照,在云端实例化虚拟机克隆。

在某些情况下,当克隆在云端启动时,这可能会在 Windows 虚拟机中触发自动 chkdsk 扫描操作。如果此类错误阻止了验证步骤,请考虑在复制周期之间关停虚拟机,以允许 Migrate to Virtual Machines 在虚拟机关停时截取快照。

这不会影响割接时的虚拟机,因为在 Migrate to Virtual Machines 最终同步阶段完成之前的割接过程中虚拟机会关停。