借助机器映像,您可以存储 Compute Engine 上运行的虚拟机 (VM) 实例的一个或多个磁盘的所有配置、元数据、权限和数据。如需了解何时以及如何使用机器映像,请参阅机器映像。
本页介绍了如何使用 Migrate to Virtual Machines 从虚拟设备导入机器映像。
准备工作
- 在您的项目上启用 VM Migration API。
- 确保启动磁盘已配置受支持的操作系统。
支持的格式
您可以使用 Migrate to Virtual Machines 导入以下格式的机器映像文件:
- 开放虚拟化格式 (OVF):同一个存储桶中的一个 OVF 文件和虚拟机磁盘 (VMDK) 文件。
- 开放虚拟设备 (OVA):一个包含 OVF 文件和 VMDK 文件的 OVA 文件。
机器映像导入流程
如需使用 Migrate to Virtual Machines 将机器映像导入 Compute Engine 机器映像,请按照以下步骤操作:
1.准备要导入的机器文件
如需将机器映像导入 Compute Engine 映像,您必须先准备要导入的机器映像文件。以下部分详细讨论了这些任务
将机器映像文件添加到 Cloud Storage
如需将机器映像导入 Compute Engine 机器映像,您必须先将机器映像文件添加到 Cloud Storage。如需了解详情,请参阅从文件系统上传对象。为了获得更好的性能,我们建议您将机器映像文件上传到您要在其中创建机器映像的 Google Cloud 中的存储桶。
授予所需权限
如需将机器映像导入 Compute Engine 机器映像,请按照下表中的说明授予权限。
角色 | 所需权限 | 说明 |
---|---|---|
Storage Object Viewer | roles/ | 为宿主项目 (service-HOST_ ) 中的默认 Migrate to Virtual Machines 服务账号授予您要导入的映像所在存储桶的 roles/ 角色。此权限允许 Migrate to Virtual Machines 访问来源映像。 |
VM Migration Administrator | roles/ | 在宿主项目中,为您要用来导入来源映像的用户账号授予 roles/ 角色。 |
VM Migration Service Account | roles/ | 为宿主项目 (service-HOST_ ) 中的默认 Migrate to Virtual Machines 服务账号授予目标项目的 roles/ 角色。例如,如果 service-1234567890@gcp-sa-vmmigration. 是宿主项目中的 Migrate to Virtual Machines 服务账号,则您必须为此服务账号授予 roles/ 角色,才能在目标项目中创建映像。 |
2.选择目标项目
如需托管机器映像,您必须创建或选择目标项目。目标项目定义机器映像的目标项目。如需详细了解如何创建或选择目标项目,请参阅添加目标项目。
3.将机器映像导入 Compute Engine
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 命令将机器映像导入 Compute Engine。
导入机器映像时,Migrate to Virtual Machines 会在目标项目中创建一些临时资源,例如虚拟机或磁盘。机器映像导入流程完成后,这些临时资源会被删除。
如需使用 Google Cloud 控制台将机器映像导入 Compute Engine,请按照以下步骤操作。
- 打开 Google Cloud 控制台中的 Migrate to Virtual Machines 页面。
https://console.cloud.google.com/compute/mfce?hl=zh-cn - 选择机器映像导入标签页。
点击创建机器映像。
定义映像的特征。下表列出了可以为机器映像设置的参数。
版块标题 字段名称 说明 常规 名称 您要创建的机器映像的名称。如需详细了解命名规则,请参阅命名惯例。 机器映像导入 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 Account roles/
vmmigration. service Agent 向 Compute Engine 服务账号授予此权限,以加密导入过程中创建的机器映像的数据。 Compute Engine Service Agent roles/
compute. service Agent 向 Migrate to Virtual Machines 服务代理授予此权限,以便在导入过程中加密数据。 选择创建。
如需使用 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,请按照以下步骤操作
- 使用以下请求创建机器映像导入资源
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
获取在机器映像导入过程中导入的机器映像的链接。如需查看机器映像导入创建请求字段支持的字段的完整列表,请参阅下表。
字段名称 说明 cloud
Storage Uri 您要从中导入机器映像的文件的路径。输入 gs://bucket/folder/filegs://bucket/folder/file 格式的路径。如需获取存储桶内对象的路径,请参阅查看对象元数据。
请注意,您只能从.
和ovf .
文件导入机器映像。ova machine
Image Target Defaults. target Project 您要在其中创建机器映像的目标项目。如需了解详情,请参阅目标项目 API 参考文档。例如,
projects/
HOST_ PROJECT_ ID/ locations/ global/ target Projects/ TARGET_ PROJECT
在此示例中,替换以下内容:HOST_PROJECT_ID
:您要从中迁移机器映像的宿主项目的名称。TARGET_PROJECT
:要在其中创建映像的目标项目。
machine
Image Target Defaults. machine_ image_ name 要创建的机器映像的名称。如需详细了解命名规则,请参阅资源命名惯例。 machine
Image Target Defaults. description (可选)机器映像的说明。 machine
Image Target Defaults. machine_ type (可选)用于创建机器映像的机器。如果您未指定机器类型,Migrate to Virtual Machines 会根据来源机器映像中的信息选择相关机器类型。 machine
Image Target Defaults. labels 如需整理项目,您可为资源添加键值对形式的标签。请参阅为资源添加标签。 machine
Image Target Defaults. tags 添加您要附加到机器映像的任何标记。请参阅管理资源的标记。 machine
Image Target Defaults. additional Licenses 使用有效的网址格式,您最多可以向通过导入的机器映像创建的虚拟机实例添加 10 个额外许可。例如,您可以使用以下网址格式添加额外许可:
https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
machine
Image Target Defaults. service_ account 在机器映像使用的目标项目中指定服务账号。默认情况下,系统不会为机器映像分配服务账号。
如果您通过机器映像创建 Compute Engine 实例并计划在其中运行应用,则该实例可能需要访问其他 gcloud CLI 服务和 API。创建 Compute Engine 实例之前,在目标项目中创建一个具有访问这些服务和 API 所需的权限的服务账号。然后,在此处指定该服务账号。如需了解详情,请参阅将虚拟机设置为以服务账号的身份运行。
如需将服务账号关联到 Compute Engine 实例,Migrate to Virtual Machines 宿主项目的用户账号需要具有必要的权限。如需了解详情,请参阅配置目标项目服务账号的权限。machine
Image Target Defaults. shielded_ instance_ config (可选)在该实例上启用安全强化型虚拟机。安全强化型虚拟机经过一组安全控制措施强化,可帮助抵御 rootkit 和 bootkit 攻击。请参阅什么是安全强化型虚拟机? machine
Image Target Defaults. single Region Storage 如果您希望机器映像 storage
是一个区域,请将此标志设置为 true。如果将此标志设置为 false,则系统会选择最近的多区域。Locations machine
Image Target Defaults. skip_ os_ adaptation 如果您要跳过操作系统适配,请将此标志设置为 true。
为了在 Google Cloud上正常运行,基于导入的机器映像创建的虚拟机需要更改配置。这些更改称为“操作系统适配”。Migrate to Virtual Machines 会在机器映像导入过程中自动执行操作系统适配。如需了解详情,请参阅调整虚拟机实例,使其能够在 Google Cloud上运行。machine
Image Target Defaults. os Adaptation Parameters. license Type 您要用于机器映像的许可类型。Compute Engine 支持为已部署的虚拟机使用随用随付 (PAYG) 许可以及自带许可 (BYOL)。Migrate to Virtual Machines 会根据迁移后的操作系统为迁移后的虚拟机分配默认许可类型,如支持的操作系统中所述。
如果您的操作系统支持多种许可类型,您可以替换默认许可类型,以明确指定许可类型 PAYG 或 BYOL。machine
Image Target Defaults. os Adaptation Parameters. network_ interfaces 借助 Migrate to Virtual Machines,您可以选择创建具有多个网络接口 (NIC) 的机器映像。每个接口会连接到不同的 VPC 网络,这样可让实例访问 gcloud CLI 中的不同 VPC 网络。
在添加其他网络接口之前,请注意以下事项:- 不支持将多个网络接口连接到同一 VPC 网络。虽然配置可能会保存,但虚拟机的实例化将失败。
- 从机器映像实例化 Compute Engine 实例后,您无法在已创建的实例上添加或移除网络接口。
如需添加或移除网络接口,请执行以下操作:- 选择添加网络接口以向 Compute Engine 实例添加其他网络接口。您可以设置与初始网络接口相同的所有选项。
如需了解详情,请参阅创建具有多个网络接口的实例。
machine
Image Target Defaults. os Adaptation Parameters. generalize 如果您要泛化机器映像,请将此标志设置为 true。
通过机器映像创建实例时,Windows 会向该实例添加一些唯一信息。泛化是指移除此信息的过程,以便您可以通过同一机器映像创建多个实例。machine
Image Target Defaults. encryption 您要在导入过程中用于加密数据的 Google-owned and Google-managed encryption key 。如需了解详情,请参阅默认静态加密。
使用客户管理的加密密钥 (CMEK) 来加密机器映像的数据。这些加密密钥由您创建、管理和拥有。如需了解详情,请参阅使用 Cloud KMS 密钥保护资源。
添加 CMEK 时,您必须按照下表中的说明授予权限。角色 所需权限 说明 Cloud VM Migration Service Account roles/vmmigration.serviceAgent 将此权限授予 Compute Engine 服务账号,以加密在导入过程中创建的机器映像的数据。 Compute Engine Service Agent roles/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”
}
} - 使用以下命令轮询操作,以检查机器映像导入作业是否已完成。
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”
}
} - 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”
}