本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 VM Import/Export 将 VM 作为映像导入
提示
要导入具有基于控制台的体验的虚拟机 (VM),您可以使用 Migration Hub Orchestrator
您可以使用 VM Import/Export 将虚拟机 (VM) 映像作为亚马逊机器映像(AMI)从虚拟化环境导入到 Amazon EC2 中,并用于启动实例。随后,您也可以将 VM 映像从实例导回到虚拟化环境中。这让您能够将 VM 导入到 Amazon EC2 中使用,从而充分利用已在 VM 方面所做的投资,以满足您的 IT 安全、配置管理和合规性需求。
重要
-
AmazonVM Import/Export 强烈建议您在创建新的 VM Import 任务时为
--license-type
或--usage-operation
参数指定一个值。这样可以确保您的操作系统获得适当的许可,并且您的计费得到优化。有关更多信息,请参阅 许可选项。 -
AmazonVM Import/Export 仅支持原生安装在源虚拟机中的映像,不支持使用 physical-to-virtual (P2V) 转换过程创建的映像。有关更多信息,请参阅 VM Import/Export 要求。
将您的 VM 从其虚拟化环境导出
完成 VM 导出的准备工作后,您可以从您的虚拟化环境将其导出。将 VM 作为映像导入时,您可以导入以下格式的磁盘:开放虚拟化存档 (OVA)、虚拟机磁盘 (VMDK)、虚拟硬盘 (VHD/VHDX) 和原始格式。对于某些虚拟化环境,您可以将其导出为开放虚拟化格式 (OVF) – 通常包含一个或多个 VMDK、VHD 或 VHDX 文件,然后将文件打包到 OVA 文件中。
有关更多信息,请参阅您的虚拟化环境的文档。例如:
-
VMware — 在 VMware 文档
站点上搜索“导出 OVF 模板”。按照创建 OVA 的说明操作。 -
Citrix — 在 Citrix 网站上导入和导出 VM
-
Microsoft Hyper-V — 在 Microsoft 网站上导出和导入虚拟机概览
。 -
Microsoft Azure — 在 Microsoft 网站上从 Azure 下载 Windows VHD
或从 Azure 下载 Linux VHD 在 Azure 门户中,选择要迁移的 VM,然背后选择 Disks (磁盘)。选择每个磁盘(操作系统或数据),然后选择 Create Snapshot (创建快照)。在已完成的快照资源上,选择 Export (导出)。这将创建一个可用于下载虚拟映像的 URL。
对 VM 进行程序修改
在使用ImportImage
API 导入 VM 时,Amazon会修改文件系统,使导入的 VM 可访问。在写入修改后的文件时,Amazon会在新名称下的同一位置保留原始文件。可以进行以下操作:
常规
-
为了与 Amazon 提供的映像保持一致,Amazon Systems Manager 客户端安装在虚拟机上。
Windows
-
修改注册表设置以使 VM 可启动。
Linux
-
在 OS 中直接安装 Citrix PV 驱动程序或修改 initrd/initramfs 以包含它们。
-
修改网络脚本以使用动态 IP 替换静态 IP。
-
修改
/etc/fstab
、注释掉无效的条目并使用 UUID 替换设备名称。如果找不到设备的匹配 UUID,会在设备描述中添加nofail
选项。导入后,我们必须更正设备名称并删除nofail
。最佳实践做法是,在准备要导入的 VM 时,建议您使用 UUID 而非设备名称来指定 VM 磁盘设备。/etc/fstab
中包含非标准文件系统类型(cifs、smbfs、vboxsf、sshfs 等)的条目将被禁用。 -
修改默认条目和超时等 GRUB 启动加载程序设置。
将 VM 作为映像导入
从您的虚拟化环境导出您的 VM 后,您可以将其导入 Amazon EC2。无论 VM 来自哪里,导入过程都相同。
先决条件
-
创建 Amazon S3 存储桶用于存储导出的映像或者选择现有的存储桶。存储桶必须位于您想要导入 VM 的区域。有关 S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南。
-
创建命名为
vmimport
的 IAM 角色。有关更多信息,请参阅 所需的服务角色。 -
如果您尚未在计算机上安装用于运行导入命令的 Amazon CLI,请参阅Amazon Command Line Interface用户指南。
提示
在支持的 Amazon Web Services 区域中,您还可以使用Amazon CloudShell,以实现可从 Amazon Web Services Management Console 直接启动并且已经预先通过身份验证的浏览器式 shell。
将映像上传到 Amazon S3
使用所选的上传工具将 VM 映像文件上传到 Amazon S3 存储桶。有关通过 Amazon S3 控制台上传对象的信息,请参阅上传对象。
导入 VM
将您的 VM 映像文件上传到 Amazon S3 后,可以使用 Amazon CLI 导入该映像。这些工具接受 Amazon S3 存储桶和文件路径,或者公有 Amazon S3 文件的 URL。私有 Amazon S3 文件需要预签名 URL
以下示例使用 Amazon CLI 命令 import-image 创建导入任务。
示例 1:使用单个磁盘导入映像
使用以下命令可导入具有一个磁盘的映像。
aws ec2 import-image --description "
My server VM
" --disk-containers "file://C:\import\containers.json
"
以下是使用 S3 存储桶指定映像的示例 containers.json
文件。
[ { "Description": "My Server OVA", "Format": "ova", "UserBucket": { "S3Bucket": "my-import-bucket", "S3Key": "vms/my-server-vm.ova" } } ]
以下是使用 Amazon S3 中的 URL 指定映像的示例 containers.json
文件。
[ { "Description": "My Server OVA", "Format": "ova", "Url": "s3://my-import-bucket/vms/my-server-vm.ova" } ]
示例 2:用多个磁盘导入映像
使用以下命令可导入具有多个磁盘的映像。
$
C:\>
aws ec2 import-image --description "
My server disks
" --disk-containers "file://C:\import\containers.json
"
下面是一个 containers.json
示例文件。
[ { "Description": "First disk", "Format": "vmdk", "UserBucket": { "S3Bucket": "my-import-bucket", "S3Key": "disks/my-server-vm-disk1.vmdk" } }, { "Description": "Second disk", "Format": "vmdk", "UserBucket": { "S3Bucket": "my-import-bucket", "S3Key": "disks/my-server-vm-disk2.vmdk" } } ]
示例 3:在启用了加密选项的情况下导入
使用以下命令可导入带有加密根卷的映像。
aws ec2 import-image --description "
My server disks
" --encrypted --kms-key-id0ea3fef3-80a7-4778-9d8c-1c0c6EXAMPLE
--disk-containers "file://C:\import\containers.json
"
在整个导入过程中,不得禁用为加密提供的 CMK。有关更多信息,请参阅《Amazon EC2 用户指南》中的 Amazon EBS 加密。
示例 4:使用 Migration Hub Orchestrator 中的 “将虚拟机映像导入到 Amazon 模板” 导入映像
-
在导航窗格中,选择创建迁移工作流。
-
在“选择工作流模板”页面上,选择“将虚拟映像导入 Amazon 模板”。
-
配置并提交您的工作流程以开始 VM 导入。有关更多信息,请参阅 Amazon Migration Hub Orchestrator 用户指南。
监控导入映像任务
使用describe-import-image-tasks命令返回导入任务的状态。
aws ec2 describe-import-image-tasks --import-task-ids import-ami-
1234567890abcdef0
包括的状态值如下:
-
active
— 正在运行导入任务。 -
deleting
— 正在取消导入任务。 -
deleted
— 导入任务已取消。 -
updating
— 导入状态正在更新。 -
validating
— 正在验证导入的映像。 -
validated
— 已验证导入的映像。 -
converting
— 正在将导入的映像转换成 AMI。 -
completed
— 导入任务已完成,并且 AMI 已准备就绪,随时可以使用。
导入映像任务完成后,输出将包含 AMI 的 ID。下面是示例输出, 包括ImageId
。
{ "ImportImageTasks": [ { "ImportTaskId": "import-ami-01234567890abcdef", "ImageId": "ami-1234567890EXAMPLE", "SnapshotDetails": [ { "DiskImageSize": 705638400.0, "Format": "ova", "SnapshotId": "snap-111222333444aaabb" "Status": "completed", "UserBucket": { "S3Bucket": "my-import-bucket", "S3Key": "vms/my-server-vm.ova" } } ], "Status": "completed" } ] }
取消导入映像任务
如果您需要取消正在进行的导入任务,请使用cancel-import-task命令。
aws ec2 cancel-import-task --import-task-id import-ami-
1234567890abcdef0
后续步骤
导入映像任务完成后,您可以使用生成的 AMI 启动实例,也可以将 AMI 复制到其他区域。
对于某些操作系统,用于增强联网的设备驱动程序和基于 Nitro 的实例所需的 NVMe 块存储设备的设备驱动程序不会在导入过程中自动安装。要手动安装这些驱动程序,请按照以下文档中的说明操作。接下来,从自定义实例创建一个新的 AMI。