导入机器映像

借助机器映像,您可以存储 Compute Engine 上运行的虚拟机 (VM) 实例的一个或多个磁盘的所有配置、元数据、权限和数据。如需了解何时以及如何使用机器映像,请参阅机器映像

本页介绍了如何使用 Migrate to Virtual Machines 从虚拟设备导入机器映像。

准备工作

 

您可以使用 Migrate to Virtual Machines 导入以下格式的机器映像文件:

  • 开放虚拟化格式 (OVF):同一个存储桶中的一个 OVF 文件和虚拟机磁盘 (VMDK) 文件。
  • 开放虚拟设备 (OVA):一个包含 OVF 文件和 VMDK 文件的 OVA 文件。

 

如需使用 Migrate to Virtual Machines 将机器映像导入 Compute Engine 机器映像,请按照以下步骤操作:

  1. 准备要导入的机器映像文件
  2. 选择目标项目
  3. 将机器映像导入 Compute Engine

如需将机器映像导入 Compute Engine 映像,您必须先准备要导入的机器映像文件。以下部分详细讨论了这些任务

如需将机器映像导入 Compute Engine 机器映像,您必须先将机器映像文件添加到 Cloud Storage。如需了解详情,请参阅从文件系统上传对象。为了获得更好的性能,我们建议您将机器映像文件上传到您要在其中创建机器映像的 Google Cloud 中的存储桶。

如需将机器映像导入 Compute Engine 机器映像,请按照下表中的说明授予权限。

角色所需权限说明
Storage Object Viewerroles/storage.objectViewer为宿主项目 (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) 中的默认 Migrate to Virtual Machines 服务账号授予您要导入的映像所在存储桶的 roles/storage.objectViewer 角色。此权限允许 Migrate to Virtual Machines 访问来源映像。
VM Migration Administratorroles/vmmigration.admin在宿主项目中,为您要用来导入来源映像的用户账号授予 roles/vmmigration.admin 角色。
VM Migration Service Accountroles/vmmigration.serviceAgent为宿主项目 (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) 中的默认 Migrate to Virtual Machines 服务账号授予目标项目的 roles/vmmigration.serviceAgent 角色。例如,如果 service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com 是宿主项目中的 Migrate to Virtual Machines 服务账号,则您必须为此服务账号授予 roles/vmmigration.serviceAgent 角色,才能在目标项目中创建映像。

如需托管机器映像,您必须创建或选择目标项目。目标项目定义机器映像的目标项目。如需详细了解如何创建或选择目标项目,请参阅添加目标项目

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 命令将机器映像导入 Compute Engine。

导入机器映像时,Migrate to Virtual Machines 会在目标项目中创建一些临时资源,例如虚拟机或磁盘。机器映像导入流程完成后,这些临时资源会被删除。

如需使用 Google Cloud 控制台将机器映像导入 Compute Engine,请按照以下步骤操作。

  1. 打开 Google Cloud 控制台中的 Migrate to Virtual Machines 页面。
    https://console.cloud.google.com/compute/mfce?hl=zh-cn
  2. 选择机器映像导入标签页。
  3. 点击创建机器映像

  4. 定义映像的特征。下表列出了可以为机器映像设置的参数。

    版块标题字段名称说明
    常规名称您要创建的机器映像的名称。如需详细了解命名规则,请参阅命名惯例
     机器映像导入 ID表示机器映像导入资源的 ID。将机器映像导入 Compute Engine 时,Migrate to Virtual Machines 会首先创建机器映像导入资源。机器映像导入资源表示机器映像导入作业。您可以使用机器映像导入 ID 获取在机器映像导入过程中导入的机器映像的链接。
     源文件输入要从中导入机器映像的文件。点击浏览查看当前项目中的存储桶列表,然后选择要从中导入机器映像的文件。
    如果要从其他项目的存储桶导入机器映像,则必须以 bucket/folder/file 格式输入路径。如需获取存储桶中对象的路径,请参阅查看对象元数据。复制路径时,请确保不会复制 gs:// 前缀。
    请注意,您只能从 .ova 和 .ovf 文件导入机器映像。
     区域您要在其中创建机器映像的区域。如需查看支持的区域列表,请参阅区域和可用区
     目标项目您要在其中创建机器映像的目标项目。如果您尚未添加目标项目,请按照添加目标项目中提供的说明执行此操作。
     自动选择 Compute Engine 机器类型自动从源文件中选择机器类型。此选项默认处于启用状态。如果您想手动选择机器类型系列和机器类型,请将此字段设为关闭状态。
     机器类型系列为机器映像选择机器类型系列。只有在停用自动选择 GCE 机器类型选项时,此字段才可见。请注意,可供选择的机器类型系列取决于您选择的区域。如需了解详情,请参阅预定义机器类型
     机器类型选择机器类型。
     说明(可选)为机器映像添加说明。
     跳过操作系统适配如需跳过操作系统适配,请点击跳过操作系统适配开关以切换到开启位置。
    为了在 Google Cloud上正常运行,基于导入的机器映像创建的虚拟机需要更改配置。这些更改称为“操作系统适配”。Migrate to Virtual Machines 会在机器映像导入过程中自动执行操作系统适配。如需了解详情,请参阅调整虚拟机实例,使其能够在 Google Cloud上运行
     泛化若要泛化机器映像,请点击泛化开关以切换到开启位置。通过机器映像创建实例时,Windows 会向该实例添加一些唯一信息。泛化是指移除此信息的过程,以便您可以从同一机器映像创建多个实例。
    许可许可类型

    Compute Engine 支持为已部署的虚拟机使用随用随付 (PAYG) 许可以及自带许可 (BYOL)。Migrate to Virtual Machines 会根据迁移后的操作系统为迁移后的虚拟机分配默认许可类型,如支持的操作系统中所述。
    如果您的操作系统支持多种许可类型,您可以替换默认许可类型,以明确指定许可类型 PAYG 或 BYOL。

    额外许可额外许可

    使用有效的网址格式,您最多可以向通过导入的机器映像创建的虚拟机实例添加 10 个额外许可。例如,您可以使用以下网址格式添加额外许可:

     
     
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
     标签如需整理项目,您可为资源添加键值对形式的标签。请参阅使用标签整理资源
    加密Google-managed encryption key选择此选项可在导入过程中使用 Google-owned and Google-managed encryption key 加密数据。如需了解详情,请参阅加密静态数据
     客户管理的加密密钥

    选择此选项,可在导入过程中使用客户管理的加密密钥 (CMEK) 来加密数据,以及导入过程创建的映像的数据。如果您对保护数据的密钥有特定的合规性或监管要求,则可以使用 CMEK 来加密和解密数据。这些加密密钥由您创建、管理和拥有。 如需了解详情,请参阅使用 Cloud KMS 密钥保护资源
    添加 CMEK 时,您必须按照下表中的说明授予权限。

    角色所需权限说明
    Cloud VM Migration Service Accountroles/vmmigration.serviceAgent向 Compute Engine 服务账号授予此权限,以加密导入过程中创建的机器映像的数据。
    Compute Engine Service Agentroles/compute.serviceAgent向 Migrate to Virtual Machines 服务代理授予此权限,以便在导入过程中加密数据。
  5. 选择创建

如需使用 Google Cloud CLI 将机器映像导入 Compute Engine,请使用以下请求。

gcloud migration vms machine-image-imports create IMAGE_NAME \ --source-file=SOURCE_FILE \ --location=REGION_ID \ --target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT

替换以下内容:

  • IMAGE_NAME:您要创建的机器映像的名称。如需详细了解命名规则,请参阅命名惯例
  • SOURCE_FILE:要从中导入机器映像的文件。输入 gs://bucket/folder/file 格式的路径。如需获取存储桶中对象的路径,请参阅查看对象元数据。请注意,您只能从 .ovf 和 .ova 文件导入映像。
  • REGION_ID:您希望机器映像导入过程在其中运行的区域。系统会在最近的多区域中创建机器映像。如果您要在某个区域中创建机器映像,请确保将 singleRegionStorage 设置为 true。如需查看支持的区域列表,请参阅区域和可用区
  • HOST_PROJECT_ID:您要从中迁移机器映像的宿主项目的名称。
  • TARGET_PROJECT:要在其中创建机器映像的目标项目。如果您尚未添加目标项目,请按照添加目标项目中提供的说明执行此操作。

如需了解详情,请参阅 gcloud migration vms image-imports

如需使用 REST API 将机器映像导入 Compute Engine,请按照以下步骤操作

  1. 使用以下请求创建机器映像导入资源
    POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME
    {
    “cloudStorageUri”: “SOURCE_FILE”,
    “machineImageTargetDefaults”: {
    “imageName”: “IMAGE_NAME”,
    “targetProject”: “projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT”,

    }
    }

    替换以下内容:

    • HOST_PROJECT_ID:您要从中迁移机器映像的宿主项目的名称。
    • REGION_ID:您希望机器映像导入过程在其中运行的区域。系统会在最近的多区域中创建机器映像。如果您要在某个区域中创建机器映像,请确保将 singleRegionStorage 设置为 true。如需查看支持的区域列表,请参阅区域和可用区
    • SOURCE_FILE:要从中导入机器映像的文件。输入 gs://bucket/folder/file 格式的路径。如需获取存储桶中对象的路径,请参阅查看对象元数据。请注意,您只能从 .ova 和 .ovf 文件导入机器映像。
    • IMAGE_NAME:您要创建的机器映像的名称。如需详细了解命名规则,请参阅命名惯例
    • TARGET_PROJECT:要在其中创建机器映像的目标项目。如果您尚未添加目标项目,请按照添加目标项目中提供的说明执行此操作。

    在此示例中,IMPORT_NAME 是表示机器映像导入资源的 ID。将机器映像导入 Compute Engine 时,Migrate to Virtual Machines 会首先创建机器映像导入资源。机器映像导入资源表示机器映像导入过程。您可以使用 IMPORT_NAME 获取在机器映像导入过程中导入的机器映像的链接。

    如需查看机器映像导入创建请求字段支持的字段的完整列表,请参阅下表。

    字段名称说明
    cloudStorageUri您要从中导入机器映像的文件的路径。输入 gs://bucket/folder/filegs://bucket/folder/file 格式的路径。如需获取存储桶内对象的路径,请参阅查看对象元数据
    请注意,您只能从 .ovf 和 .ova 文件导入机器映像。
    machineImageTargetDefaults.targetProject

    您要在其中创建机器映像的目标项目。如需了解详情,请参阅目标项目 API 参考文档。例如,
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    在此示例中,替换以下内容:

    • HOST_PROJECT_ID:您要从中迁移机器映像的宿主项目的名称。
    • TARGET_PROJECT:要在其中创建映像的目标项目。
    machineImageTargetDefaults.machine_image_name要创建的机器映像的名称。如需详细了解命名规则,请参阅资源命名惯例
    machineImageTargetDefaults.description(可选)机器映像的说明。
    machineImageTargetDefaults.machine_type(可选)用于创建机器映像的机器。如果您未指定机器类型,Migrate to Virtual Machines 会根据来源机器映像中的信息选择相关机器类型。
    machineImageTargetDefaults.labels如需整理项目,您可为资源添加键值对形式的标签。请参阅为资源添加标签
    machineImageTargetDefaults.tags添加您要附加到机器映像的任何标记。请参阅管理资源的标记
    machineImageTargetDefaults.additionalLicenses

    使用有效的网址格式,您最多可以向通过导入的机器映像创建的虚拟机实例添加 10 个额外许可。例如,您可以使用以下网址格式添加额外许可:

     
     
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    machineImageTargetDefaults.service_account在机器映像使用的目标项目中指定服务账号。默认情况下,系统不会为机器映像分配服务账号。
    如果您通过机器映像创建 Compute Engine 实例并计划在其中运行应用,则该实例可能需要访问其他 gcloud CLI 服务和 API。创建 Compute Engine 实例之前,在目标项目中创建一个具有访问这些服务和 API 所需的权限的服务账号。然后,在此处指定该服务账号。如需了解详情,请参阅将虚拟机设置为以服务账号的身份运行
    如需将服务账号关联到 Compute Engine 实例,Migrate to Virtual Machines 宿主项目的用户账号需要具有必要的权限。如需了解详情,请参阅配置目标项目服务账号的权限
    machineImageTargetDefaults.shielded_instance_config(可选)在该实例上启用安全强化型虚拟机。安全强化型虚拟机经过一组安全控制措施强化,可帮助抵御 rootkit 和 bootkit 攻击。请参阅什么是安全强化型虚拟机?
    machineImageTargetDefaults.singleRegionStorage如果您希望机器映像 storageLocations 是一个区域,请将此标志设置为 true。如果将此标志设置为 false,则系统会选择最近的多区域。
    machineImageTargetDefaults.skip_os_adaptation如果您要跳过操作系统适配,请将此标志设置为 true。
    为了在 Google Cloud上正常运行,基于导入的机器映像创建的虚拟机需要更改配置。这些更改称为“操作系统适配”。Migrate to Virtual Machines 会在机器映像导入过程中自动执行操作系统适配。如需了解详情,请参阅调整虚拟机实例,使其能够在 Google Cloud上运行
    machineImageTargetDefaults.osAdaptationParameters.licenseType

    您要用于机器映像的许可类型。Compute Engine 支持为已部署的虚拟机使用随用随付 (PAYG) 许可以及自带许可 (BYOL)。Migrate to Virtual Machines 会根据迁移后的操作系统为迁移后的虚拟机分配默认许可类型,如支持的操作系统中所述。
    如果您的操作系统支持多种许可类型,您可以替换默认许可类型,以明确指定许可类型 PAYG 或 BYOL。

    machineImageTargetDefaults.osAdaptationParameters.network_interfaces

    借助 Migrate to Virtual Machines,您可以选择创建具有多个网络接口 (NIC) 的机器映像。每个接口会连接到不同的 VPC 网络,这样可让实例访问 gcloud CLI 中的不同 VPC 网络。
    在添加其他网络接口之前,请注意以下事项:

    • 不支持将多个网络接口连接到同一 VPC 网络。虽然配置可能会保存,但虚拟机的实例化将失败。
    • 从机器映像实例化 Compute Engine 实例后,您无法在已创建的实例上添加或移除网络接口。
      如需添加或移除网络接口,请执行以下操作:
      • 选择添加网络接口以向 Compute Engine 实例添加其他网络接口。您可以设置与初始网络接口相同的所有选项。

    如需了解详情,请参阅创建具有多个网络接口的实例

    machineImageTargetDefaults.osAdaptationParameters.generalize如果您要泛化机器映像,请将此标志设置为 true。
    通过机器映像创建实例时,Windows 会向该实例添加一些唯一信息。泛化是指移除此信息的过程,以便您可以通过同一机器映像创建多个实例。
    machineImageTargetDefaults.encryption

    您要在导入过程中用于加密数据的 Google-owned and Google-managed encryption key 。如需了解详情,请参阅默认静态加密

    使用客户管理的加密密钥 (CMEK) 来加密机器映像的数据。这些加密密钥由您创建、管理和拥有。如需了解详情,请参阅使用 Cloud KMS 密钥保护资源
    添加 CMEK 时,您必须按照下表中的说明授予权限。

    角色所需权限说明
    Cloud VM Migration Service Accountroles/vmmigration.serviceAgent将此权限授予 Compute Engine 服务账号,以加密在导入过程中创建的机器映像的数据。
    Compute Engine Service Agentroles/compute.serviceAgent向 Migrate to Virtual Machines 服务代理授予此权限,以便在导入过程中加密数据。

    您看到的响应应该与以下示例响应类似。
    {
    “name”: “projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID”,
    “metadata”: {
    “createTime”: “2023-10-31T09:12:26.94928636Z”,
    “target”: “projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME”,
    “verb”: “create”,
    “apiVersion”: “v1”,
    “@type”: “type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata”
    }
    }

  2. 使用以下命令轮询操作,以检查机器映像导入作业是否已完成。
    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID

    替换以下内容:

    • HOST_PROJECT_ID:您要从中迁移机器映像的宿主项目的名称。
    • REGION_ID:您希望机器映像导入过程在其中运行的区域。系统会在最近的多区域中创建机器映像。如果您要在某个区域中创建机器映像,请确保将 singleRegionStorage 设置为 true。如需查看支持的区域列表,请参阅区域和可用区
    • OPERATION_ID:迁移作业的操作 ID。

    您应该会看到类似于以下示例响应的操作完成响应。
    {
    “done”: true,
    “name”: “projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID”,
    “response”: {
    “@type”: “type.googleapis.com/google.cloud.vmmigration.v1.ImageImport”,
    “name”: “projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME”,
    “cloudStorageUri”: “SOURCE_FILE”,
    “createTime”: “2023-10-31T09:04:04.413664947Z”,
    “machineImageTargetDefaults”: {
    “imageName”: “IMAGE_NAME”,
    “targetProject”: “projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT”
    },
    “recentImageImportJobs”: [
    {
    “name”: “projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job”,
    “diskImageTargetDetails”: {
    “imageName”: “IMAGE_NAME”,
    “targetProject”: “projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT”
    },
    “state”: “PENDING”
    }
    ]
    },
    “metadata”: {
    “createTime”: “2023-10-31T09:04:04.416740716Z”,
    “endTime”: “2023-10-31T09:05:36.79987142Z”,
    “target”: “projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME”,
    “verb”: “create”,
    “apiVersion”: “v1”,
    “@type”: “type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata”
    }
    }

  3. GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job

    替换以下内容:

    • HOST_PROJECT_ID:您要从中迁移机器映像的宿主项目的名称。
    • REGION_ID:您希望机器映像导入过程在其中运行的区域。系统会在最近的多区域中创建机器映像。如果您要在某个区域中创建机器映像,请确保将 singleRegionStorage 设置为 true。如需查看支持的区域列表,请参阅区域和可用区
    • IMPORT_NAME:表示机器映像导入资源的 ID。将机器映像导入 Compute Engine 时,Migrate to Virtual Machines 会首先创建机器映像导入资源。机器映像导入资源表示机器映像导入过程。您可以使用 IMPORT_NAME 获取在机器映像导入过程中导入的机器映像的链接。

    您应该会看到类似于以下示例响应的作业完成响应。

    {
    “createTime”:”2023-10-31T09:12:27.053788394Z”,
    “createdResources”:[
    “https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME”
    ],
    “diskImageTargetDetails”: {
    “imageName”:”IMAGE_NAME”,
    “targetProject”:”projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT”
    },
    “endTime”:”2023-10-31T09:16:50.224865783Z”,
    “name”:”projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job”,
    “state”:”SUCCEEDED”
    }

case studies

See More Case Studies

Contact us

Partner with Us for Comprehensive IT

We’re happy to answer any questions you may have and help you determine which of our services best fit your needs.

Your benefits:
What happens next?
1

Send your request

2

We do a discovery and consulting meting 

3

We prepare a proposal 

Feel free to contact us