VM Import/Export
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

VM 导入/导出要求

尝试导入 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 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.8、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.3 (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) 映像格式,该格式与 Microsoft Hyper-V 和 Citrix Xen 虚拟化产品兼容。注意,VHDX 映像不受支持,因此,您必须导出动态 VHD,而不是固定 VHD。

  • 用于导入磁盘和 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

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

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

卷类型和文件系统

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

Windows (32 和 64 位)

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

Linux/Unix (64 位)

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

限制

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

  • Amazon EC2 不支持 GPT 分区,这意味着导入的系统卷必须有 MBR 方可启动。

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

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

  • 在每个区域,您最多可以同时进行 20 个导入映像或快照任务。要请求增加此限制,请联系 AWS Support。任务必须自起始日期起的 7 日内完成。

  • VM Import 能够创建使用硬件虚拟机 (HVM) 虚拟化的 AMI。VM Import 无法创建使用半虚拟化 (PV) 的 AMI。导入的 VM 内支持 Linux PVHVM 驱动程序。

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

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

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

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

  • 一般来说,您可以导入磁盘映像的压缩版本。由于受到 MBR 的限制,展开的磁盘映像不能超过 2 TiB。

  • 在准备要导入的 Amazon EC2 Linux VM 时,请确保根卷上至少有 250 MB 的磁盘空间用于安装驱动程序和其他软件。对于 Microsoft Windows VM,请配置固定的页面文件大小并确保根卷上至少有 4GB 可用空间。

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

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

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

  • 在所有情况下,vCenter 和 vSphere 用户都必须从虚拟机中删除所有附加的 CD-ROM 映像或 ISO。

  • 作为 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 驱动程序。

  • 当您使用自己的 Microsoft 许可证 (如通过 MSDN 或每用户 Windows 软件保障) 来通过自带许可 (BYOL) 模式在 AWS 上运行 Microsoft 软件时,以下规则适用:

    • 您的 BYOL 实例将以现行的 Amazon EC2 Linux 实例定价进行定价,前提是您 (a) 运行专用主机 (专用主机);(b) 使用 VM Import/Export 从源自您提供的软件二进制文件的 VM 中启动,这将受 VM Import/Export 当时有效的条款和功能的限制;(c) 将实例指定为 BYOL 实例;(d) 在指定的 AWS 区域内以及 AWS 提供 BYOL 模式的位置运行实例;以及 (e) 使用您提供的或您的密钥管理系统中使用的 Microsoft 密钥进行激活。

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

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

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

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,以便将其导入到 Amazon EC2。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的 安装 AWS 命令行界面

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

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

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

  • 将您的网络设置为 DHCP 而不是静态 IP 地址。如果您希望分配静态私有 IP 地址,请务必在您的 VPC 子网中使用非预留私有 IP 地址。Amazon Virtual Private Cloud (Amazon VPC) 保留了 VPC 子网中的前四个私有 IP 地址。

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

Windows

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

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

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

  • 确保您的 Windows VM 已安装 .NET Framework 3.5 或更高版本,如 Amazon Windows EC2Config 服务所要求的一样。注意,如果安装驱动程序需要 .NET Framework 4.5,而它尚不存在,那么它会自动安装在您的 VM 上。

  • 在导入 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。