是否可以为 Windows EC2 实例创建 EBS AMI?

Mat*_*lly 3 windows snapshot amazon-ec2

我们有一个在 EC2 中运行的 Windows 服务器(支持 EBS)。我们为数据备份制作定期快照。我想从这些快照之一创建一个新的 EC2 实例。

是的,我意识到这与拔掉电源并打开机器相同,但我想测试快照中数据的可靠性以进行恢复。

我曾尝试使用 Web 控制台、命令行工具和 ruby​​ sdk 从我们的 Windows 启动驱动器 (EBS) 的快照创建 AMI 映像 - 它们都创建了一个 AMI,将平台显示为 Linux 而不是 Windows 和半虚拟化代替hvm 的。从这个 AMI 创建的新 EC2 实例无法上线,我假设它崩溃是因为它在错误的虚拟化平台上运行。

在我所做的所有谷歌搜索中,我只遇到过 Linux 说明,或从实例支持的 EC2 实例制作 Windows EBS 的说明 - 而不是 EBS 支持的实例或快照。

Ste*_*pel 7

背景

从快照启动实例不适用于 Windows AMI(正如您同时发现的那样):

重要的

注册快照仅适用于 Linux/UNIX AMI;尽管您可以注册快照来创建 Windows AMI,但 AMI 无法启动。 [强调我的]

选择

虽然未指定,但应注意可以简单地克隆Amazon EBS 支持的实例,如从正在运行的实例创建映像中所述- 当通过 AWS 管理控制台执行此操作时,EC2 会尝试干净地关闭实例在创建映像之前并在之后重新启动实例。这显然通常更可取,但是,如果需要,可以通过命令行避免:

如果您不希望实例重新启动,则可以使用 Amazon EC2 命令行工具来创建映像 [...]。在EC2创建图像的命令有--no-重新启动选项。

解决方案

上面提到的替代方法显然无助于根据指定的这些快照之一创建新的 EC2 实例- 无论如何都要注意的一个有用的解决方案在移动到Eric Hammond 的文章移动运行的 EBS 启动的新实例部分中概述Amazon EC2 上的新硬件实例(具有不同的用例,但无论如何都适用)并在您的情况下归结为以下步骤:

  1. 使用与原始实例相同的启动参数创建一个新实例。
  2. 等到新实例正在运行,然后停止(而不是终止)它。
  3. 从新实例中分离 EBS 启动卷并删除这个分离的卷,因为它不再需要了。
  4. 从快照创建一个新卷并将其附加到新实例。
  5. 重新启动新实例,该实例现在将使用从您的快照创建的卷启动。

Colin Percival 已经使用这种技术来通过 defenestration 在 EC2 上运行FreeBSD以及顺便说一句。(其中包括一些有关虚拟化问题的提示):

另一方面,EC2 Windows 实例以 HVM(硬件虚拟机)模式启动——FreeBSD 非常支持这种模式。如果我们能以某种方式诱使 EC2 以与启动 Windows 相同的方式启动 FreeBSD,我们就可以在广泛的实例类型上运行 FreeBSD。我们如何欺骗 EC2?利用 Elastic Block Store 磁盘可以从 EC2 实例分离并重新附加到不同实例的事实,将“Windows”实例的启动磁盘替换为包含 FreeBSD 的磁盘。