VM Import/Export
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

VM Import/Export 要求

尝试导入 VM 之前,请根据需要采取行动以满足以下要求。您可能还需要通过创建具有适当权限的服务账户来准备您的 AWS 环境,并且必须准备本地托管的 VM,以便在其导入到 AWS 之后可以访问。

注意

对于大多数 VM 导入需求,我们建议您使用 AWS Server Migration Service。AWS SMS 自动完成导入过程 (减少迁移大型 VM 基础设施的工作量),支持不断变化的 VM 的增量更新,并将导入的 VM 转换为现成可用的 Amazon 系统映像 (AMI)。要开始使用 AWS SMS,请参阅 AWS Server Migration Service

先决条件

您可以使用 AWS CLI 导入或导出 VM。如果您尚未安装 AWS CLI,请参阅 AWS Command Line Interface 用户指南

在开始之前,您必须了解 VM Import/Export 支持的操作系统和映像格式,以及实例和卷的导入限制。

操作系统

以下操作系统可以导入 Amazon EC2 以及从中导出。

Windows (32 和 64 位)

  • 含 Service Pack 1 (SP1) 的 Microsoft Windows Server 2003 (标准版、数据中心版、企业版) 或更高版本 (32 位和 64 位)

  • Microsoft Windows Server 2003 R2 (标准版、数据中心版、企业版) (32 位和 64 位)

  • Microsoft Windows Server 2008 (标准版、数据中心版、企业版) (32 位和 64 位)

  • Microsoft Windows Server 2008 R2 (标准版、数据中心版、企业版) (仅限 64 位)

  • Microsoft Windows Server 2012 (标准版、数据中心版) (仅限 64 位)

  • Microsoft Windows Server 2012 R2 (标准版、数据中心版) (仅限 64 位) (不支持 Nano Server 安装)

  • Microsoft Windows Server 2016 (标准版、数据中心版) (仅限 64 位)

  • Microsoft Windows Server 1709 (标准版、数据中心版) (仅限 64 位)

  • Microsoft Windows Server 1803 (标准版、数据中心版) (仅限 64 位)

  • Microsoft Windows 7 (专业版、企业版、旗舰版) (美国英语) (32 位和 64 位)

  • Microsoft Windows 8 (专业版、企业版) (美国英语) (32 位和 64 位)

  • Microsoft Windows 8.1 (专业版、企业版) (美国英语) (仅 64 位)

  • Microsoft Windows 10 (专业版、企业版、教育版) (美国英语) (仅 64 位)

Linux/Unix (64 位)

  • Ubuntu 12.04、12.10、13.04、13.10、14.04、14.10、15.04、16.04、16.10

  • Red Hat Enterprise Linux (RHEL) 5.1-5.11、6.1-6.9、7.0-7.3 (6.0 缺少必要的驱动程序)

  • 含 Service Pack 1 和内核 2.6.32.12-0.7 的 SUSE Linux Enterprise Server 11

  • 含 Service Pack 2 和内核 3.0.13-0.27 的 SUSE Linux Enterprise Server 11

  • 含 Service Pack 3 和内核 3.0.76-0.11、3.0.101-0.8 或 3.0.101-0.15 的 SUSE Linux Enterprise Server 11

  • 含 Service Pack 4 和内核 3.0.101-63 的 SUSE Linux Enterprise Server 11

  • 含内核 3.12.28-4 的 SUSE Linux Enterprise Server 12

  • 含 Service Pack 1 和内核 3.12.49-11 的 SUSE Linux Enterprise Server 12

  • CentOS 5.1-5.11、6.1-6.6、7.0-7.4 (6.0 缺少必要的驱动程序)

  • Debian 6.0.0-6.0.8、7.0.0-7.8.0、8.0.0

  • Oracle Linux 6.1-6.6、7.0-7.1

  • Fedora Server 19-21

映像格式

对于磁盘和 VM 导入,VM Import/Export 支持下列映像格式:

  • 启动虚拟装置 (OVA) 映像格式,该格式支持将映像与多个硬盘一起导入。

  • 流优化型 ESX 虚拟机磁盘 (VMDK) 映像格式,该格式可与 VMware ESX 和 VMware vSphere 虚拟化产品兼容。注意,您只能将通过 VMware 中的 OVF 导出过程创建的 VMDK 文件导入 Amazon EC2。

  • 固定和动态虚拟硬盘 (VHD/VHDX) 映像格式,该格式与 Microsoft Hyper-V 和 Citrix Xen 虚拟化产品兼容。

  • 用于导入磁盘和 VM 的 RAW 格式。

实例类型

VM Import/Export 支持将 Windows 实例导入大多数实例类型。有关在 AWS 中使用 Windows 及其他 Microsoft 产品 (包括自带许可 (BYOL) 的情况) 的更多信息,请参阅 Amazon Web Services 和 Microsoft 常见问题

您可以将 Linux 实例导入下列实例类型:

  • 通用型: t2.micro | t2.small | t2.medium | m3.medium | m3.large | m3.xlarge | m3.2xlarge

  • 计算优化: c3.large | c3.xlarge | c3.2xlarge | c3.4xlarge | c3.8xlarge | cc1.4xlarge | cc2.8xlarge

  • 内存优化:r3.large | r3.xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge | cr1.8xlarge

  • 存储优化: i2.xlarge | i2.2xlarge | i2.4xlarge | i2.8xlarge | hi1.4xlarge | hi1.8xlarge

  • 加速计算: cg1.4xlarge

卷类型和文件系统

VM Import/Export 支持导入使用以下文件系统的 Windows 和 Linux 实例:

Windows (32 和 64 位)

采用 MBR 分区并格式化为 NTFS 文件系统的卷。不支持 GUID 分区表 (GPT) 分区的卷。

Linux/Unix (64 位)

采用 MBR 分区并格式化为 ext2、ext3、ext4、Btrfs、JFS 或 XFS 文件系统的卷。不支持 GUID 分区表 (GPT) 分区的卷。

许可选项

您在新建 VM Import 任务时,--license-type 参数可能包括以下值:

  • Auto (默认)

    检测源系统操作系统 (OS),并针对已迁移的虚拟机 (VM) 应用相应的许可证。

  • AWS

    如果适用,在已迁移的 VM 上利用 AWS 许可证替换源系统许可证。

  • BYOL

    如果适用,在已迁移的 VM 上保留源系统许可证。

注意

如果您选择了与 VM 不兼容的许可证类型,VM Import 任务将失败,并提供一条错误消息。有关更多信息,请参阅以下的操作系统特定信息。

不设置 --license-type 参数与选择 Auto 效果相同。

Linux 许可

Linux 操作系统仅支持 BYOL 许可证。选择 Auto 即表示使用 BYOL 许可证。

已迁移的 Red Hat Enterprise Linux (RHEL) VM 必须使用 Cloud Access (BYOL) 许可证。有关更多信息,请参阅 Red Hat 网站上的 Red Hat Cloud Access

已迁移的 SUSE Linux Enterprise Server VM 必须使用 SUSE 公有云程序 (BYOS) 许可证。有关更多信息,请参阅 SUSE 公有云程序—自带订阅

Windows 许可

Windows 服务器操作系统支持 BYOL 或 AWS 许可证。Windows 客户端操作系统 (例如 Windows 10) 只支持 BYOL 许可证。

如果您选择 Auto (默认值),而 VM 具有服务器操作系统,将使用 AWS 许可证。否则将使用 BYOL 许可证。

如果您通过 MSDN 或每用户 Windows 软件保障使用 BYOL Microsoft 许可证,则适用以下规则:

  • 您的 BYOL 实例将以现行的 Amazon EC2 Linux 实例定价进行定价,前提是您满足以下条件:

    • 在专用主机上运行 (专用主机)。

    • 使用 AWS VM Import/Export 从源自您提供的软件二进制文件的 VM 中启动,这将受 AWS VM Import/Export 当时有效的条款和功能的限制。

    • 将实例指定为 BYOL 实例。

    • 在您指定的 AWS 区域内以及 AWS 提供 BYOL 模式的区域内运行实例。

    • 使用您提供的或您的密钥管理系统中使用的 Microsoft 密钥进行激活。

  • 您必须考虑的一个实际情况是,在启动某个 Amazon EC2 实例时,该实例可在可用区内的多台服务器中的任一服务器上运行。这意味着,每次启动 Amazon EC2 实例 (包括停止/启动) 时,该实例可在可用区内的不同服务器上运行。您还必须考虑有关 Microsoft 文档 批量许可产品协议中所述的许可重新分配的限制,或者查看您的特定使用权利来确定您的权利是否与此使用保持一致。

  • 您必须有资格在您与 Microsoft 签订的协议下 (例如,在您的 MSDN 用户权利下或您的每用户 Windows 软件保障权利下) 使用针对合适的 Microsoft 软件的 BYOL 计划。您单独负责获得所有所需的许可证并遵守所有适用的 Microsoft 许可要求,包括 PUR/PT。此外,您必须已接受 Microsoft 的最终用户许可协议 (Microsoft EULA),并且一旦使用 BYOL 计划下的 Microsoft 软件,即表示您同意 Microsoft EULA。

  • AWS 建议您咨询您自己的法律顾问和其他顾问以了解并遵守适用的 Microsoft 许可要求。不授权也不允许在违反您与 Microsoft 签订的协议的情况下使用服务 (包括使用 licenseType 参数和 BYOL 标志)。

限制

导入 AMI 和快照受下列限制:

  • VM Import/Export 不支持 UEFI/EFI BIOS 和引导分区。VM 的启动卷必须使用主启动记录 (MBR) 分区,并且由于 MBR 限制而不能超过 2 TiB (未压缩)。其他的非启动卷可以使用 GUID 分区表 (GPT) 分区,但是不能大于 4 TiB。

  • 如果根分区与 MBR 位于不同的虚拟硬盘驱动器,已导入的 VM 可能无法启动。

  • 对于附加了超过 22 个卷的 VM,VM 导入任务将失败。可使用 ImportSnapshot API 分别导入其他磁盘。

  • 不支持具有使用 EBS 加密的卷的 AMI。

  • VM Import/Export 不支持使用原始设备映射 (RDM) 的 VM。仅支持 VMDK 磁盘映像。

  • 导入的 Linux VM 必须使用 64 位映像。不支持迁移 32 位 Linux 映像。

  • 导入的 Linux VM 应使用默认内核以获得最佳结果。使用自定义 Linux 内核的 VM 无法成功迁移。

  • 在准备要导入的 Amazon EC2 Linux VM 时,请确保根卷上至少有 250 MiB 的磁盘空间用于安装驱动程序和其他软件。对于 Microsoft Windows VM,请配置固定的页面文件大小并确保根卷上至少有 6 GiB 可用空间。如果 Windows 配置为使用“自动管理所有驱动器的分页文件大小”,它会在该实例的 C 盘驱动器上创建 16GB 的 pagefile.sys 文件。

  • 目前不支持多个网络接口。您的 VM 在导入后会拥有一个使用 DHCP 分配地址的虚拟网络接口。您的实例会收到一个私有 IP 地址。

  • 即使子网采用自动分配公有 IP 地址的设置,迁移到 VPC 中的 VM 也不会收到公有 IP 地址。但您可以向自己的账户分配一个弹性 IP 地址并将其关联到您的实例。

  • 不支持 Internet 协议版本 6 (IPv6) IP 地址。

  • 作为 P2V 转换的结果而创建的 VM 不受支持。通过在物理设备上执行 Linux 或 Windows 安装进程,然后将 Linux 或 Windows 安装副本导入虚拟机,从而创建磁盘映像,则会发生 P2V 转换。

  • VM Import/Export 不会安装单个根 I/O 虚拟化 (SR-IOV) 驱动程序,除非导入 Microsoft Windows Server 2012 R2 VM。除非您计划使用提供更高性能 (每秒数据包)、更短延迟和更低抖动的增强联网,否则不需要这些驱动程序。对于 Microsoft Windows Server 2012 R2 VM,会在导入过程中自动安装 SR-IOV 驱动程序。

  • VM Import/Export 目前不支持 VMware SEsparse 增量文件格式。

  • 不支持导入使用 UTF-16 (或非 ASCII ) 字符的 Windows 语言包。在导入 Windows Server 2003、Windows Server 2008 和 Windows Server 2012 R1 VM 时,建议使用英语语言包。

IAM 用户的必要权限

如果您以 AWS Identity and Access Management (IAM) 用户身份登录,那么您的 IAM 策略中需要以下权限才能使用 VM Import/Export:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:DeleteObject", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": ["arn:aws-cn:s3:::mys3bucket","arn:aws-cn:s3:::mys3bucket/*"] }, { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CancelConversionTask", "ec2:CancelExportTask", "ec2:CreateImage", "ec2:CreateInstanceExportTask", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DescribeConversionTasks", "ec2:DescribeExportTasks", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstanceStatus", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:ImportInstance", "ec2:ImportVolume", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:ImportImage", "ec2:ImportSnapshot", "ec2:DescribeImportImageTasks", "ec2:DescribeImportSnapshotTasks", "ec2:CancelImportTask" ], "Resource": "*" } ] }

准备您的 VM

在将 VM 从虚拟化环境中导出之前,请按照以下指南配置您的 VM。

一般性问题

  • 在您将要用于发出导入命令的工作站上安装 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的 安装 AWS 命令行界面

  • 在您的 VM 上禁用任何反病毒软件或入侵检测软件。可在导入过程完成后重新启用上述服务。

  • 从您的 VMware 虚拟机上卸载 VMware 工具。

  • 断开连接任何 CD-ROM 驱动 (虚拟或实际)。

  • 源 VM 必须有一项功能 DHCP 客户端服务。确保该服务可以启动且未从管理上被禁用。在导入期间,目前分配到源 VM 的所有静态 IP 地址都将被删除。在 Amazon VPC 中启动导入的实例时,该实例将收到一个主要私有 IP 地址 (在子网的 IPv4 地址范围内)。如果您在启动实例时未指定主要私有 IP 地址,我们会在子网的 IPv4 范围内为您选择一个可用的 IP 地址。有关更多信息,请参阅 VPC 和子网大小调整

  • 在导出前,请先关闭您的 VM。

Windows

  • 启用 Remote Desktop (RDP) 以进行远程访问。

  • 如果配置了主机防火墙 (Windows 防火墙或类似防火墙),请确保该防火墙允许访问 RDP。否则在导入完成后,您将无法访问您的实例。

  • 确保管理员账户和所有其他用户账户使用安全密码。所有账户均须有密码,否则导入可能失败。

  • 在 VM 上安装适当的 .NET Framework 版本。请注意,如果需要,系统会自动在您的 VM 上安装 .NET Framework 4.5 或更高版本。

    Windows 版本 .NET Framework 版本
    Windows Server 2003 3.5 或更高版本
    Windows Server 2008 3.5 或更高版本
    Windows Server 2008 R2 或更高版本 4.5 或更高版本
    Windows 8.1 或更早版本 3.5 或更高版本
    Windows 10 或更高版本 4.5 或更高版本
  • 在导入 Windows Server 2008 或 Windows Server 2012 VM 映像之前或之后,您可以在其上运行 System Preparation (Sysprep)。如果您在导入 VM 之前运行 Sysprep,则导入过程将在 VM 中添加一个应答文件 (unattend.xml),以自动接受最终用户许可协议 (EULA) 并将区域设置设为 EN-US。如果您选择导入后运行 Sysprep,我们建议您使用 Amazon EC2 配置服务运行 Sysprep。

    用您自己的应答文件替代默认应答文件 (unattend.xml)

    1. 复制下面的示例文件,并将 processorArchitecture 参数设置为 x86amd64,具体取决于您的操作系统架构:

      <?xml version='1.0' encoding='UTF-8'?> <unattend xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State' xmlns='urn:schemas-microsoft-com:unattend'> <settings pass='oobeSystem'> <component versionScope='nonSxS' processorArchitecture='x86 or amd64' name='Microsoft-Windows-International-Core' publicKeyToken='31bf3856ad364e35' language='neutral'> <InputLocale>en-US</InputLocale> <SystemLocale>en-US</SystemLocale> <UILanguage>en-US</UILanguage> <UserLocale>en-US</UserLocale> </component> <component versionScope='nonSxS' processorArchitecture='x86 or amd64' name='Microsoft-Windows-Shell-Setup' publicKeyToken='31bf3856ad364e35' language='neutral'> <OOBE> <HideEULAPage>true</HideEULAPage> <SkipMachineOOBE>true</SkipMachineOOBE> <SkipUserOOBE>true</SkipUserOOBE> </OOBE> </component> </settings> </unattend>
    2. 将文件保存在 C:\Windows\Panther 目录中,并命名为 unattend.xml

    3. 使用 /oobe/generalize 选项运行 Sysprep。

      注意

      这些选项会从 Microsoft Windows 安装中删除所有唯一系统信息并提示您重置管理员密码。

    4. 关闭 VM 并从您的虚拟化环境中将其导出。

  • 在您的 Windows VM 上禁用 Autologon。

  • 打开 Control Panel > System and Security > Windows Update。在左窗格中,选择 Change settings。选择所需设置。请注意,如果选择 Download updates but let me choose whether to install them (默认值),则更新检查可能会临时占用实例上 50% 到 99% 的 CPU 资源。检查通常会在实例启动后的几分钟内执行。确保没有等待进行的 Microsoft 更新且计算机未设置成在重启时安装软件。

  • 应用以下修补程序:

  • 设置 RealTimeIsUniversal 注册表项。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Windows 实例) 中的设置时间

Linux

  • 启用安全外壳 (SSH) 以进行远程访问。

  • 确保您的主机防火墙 (例如 Linux iptables) 允许访问 SSH。否则在导入完成后,您将无法访问您的实例。

  • 确保您已配置了一个非根用户以使用基于密钥的公共 SSH 在导入您的实例后访问它。使用基于密码的 SSH 和通过 SSH 进行根登录均可行,但不推荐使用。推荐使用公共密钥和非根用户,因为它更安全。VM Import 不会在导入过程中配置 ec2-user 账户。

  • 确保您的 Linux VM 将 GRUB (传统 GRUB) 或 GRUB 2 作为其启动加载程序。

  • 确保您的 Linux VM 使用下列根文件系统之一:EXT2、EXT3、EXT4、Btrfs、JFS 或 XFS。

对 VM 进行程序修改

在导入 VM 时,AWS 会修改文件系统,使导入的 VM 可供客户访问。可以进行以下操作:

  • [Linux] 在 OS 中直接安装 Citrix PV 驱动程序或修改 initrd/initramfs 以包含它们。

  • [Linux] 修改网络脚本以使用动态 IP 替换静态 IP。

  • [Linux] 修改 /etc/fstab、注释掉无效的条目并使用 UUID 替换设备名称。如果找不到设备的匹配 UUID,会在设备描述中添加 nofail 选项。导入后,我们需要更正设备名称并删除 nofail。最佳实践做法是,在准备要导入的 VM 时,建议您使用 UUID 而非设备名称来指定 VM 磁盘设备。

    /etc/fstab 中包含非标准文件系统类型 (cifs、smbfs、vboxsf、sshfs 等) 的条目将被禁用。

  • [Linux] 修改默认条目和超时等 GRUB 启动加载程序设置。

  • [Windows] 修改注册表设置以使 VM 可启动。

在写入修改后的文件时,AWS 会在新名称下的同一位置保留原始文件。