这通常是由特定于实例的内部配置问题引起的。实例停止回应之后的恢复过程取决于您所运行的实例类型(EBS 支持的实例与实例存储支持的实例)。

首先检查实例的控制台输出,尝试确定重启影响实例的原因。控制台输出中的信息有时可为您提供足够的细节,以便了解实例失败的原因。

从 AWS 管理控制台:

  1. 选择实例。
  2. Instance Actions 菜单中选择 View System Log

从 Amazon EC2 API 工具:

  1. 运行 ec2-get-console-output 命令。

如果您无法通过查看控制台输出来确定发生的问题,请阅读以下有关两种实例类型的信息。


实例存储支持的实例

实例恢复

通常而言,当使用实例存储支持的根设备从 AMI 启动的实例无法启动时,除了启动替代实例,您别无他法。通过在进行任何修改后捆绑自定义 AMI 来创建工作实例配置的备份始终是一种很好的方法。如果您从在启动过程中下载脚本的 AMI 运行实例,可能能够修改脚本以更正您在控制台输出中看到的任何错误。

数据恢复

通常无法实现实例存储的数据恢复,虽然在尚未中止实例以及不存在底层硬件问题的情况下,AWS Support 可能能够恢复数据的某些部分。因为数据恢复并不是一个完全保证的过程,而且可能花费数天时间来完成,所以不要依赖 AWS Support 可能恢复数据作为您唯一的备份策略。


EBS 支持的实例

在尝试恢复 EBS 支持的实例之前,您需要了解是否在使用预附的实例存储(也称为短暂存储,可用于 EBS 支持的实例)。注意此信息很重要,因为如果采取在本页下文中所描述的操作,在此预附实例存储中的数据将丢失。如果您在使用实例存储,请参见上一节以详细了解有关存储在预附实例存储中的数据的恢复选择。

实例恢复

如果实例的根设备是 EBS 支持的卷,则尝试停止并重新启动实例通常可解决您的问题。有关更多信息,请参见停止和启动实例

有时可以手动更正在未正常启动的 EBS 支持的实例根卷上的错误。手动更正错误可能是一个复杂的过程,因而不作推荐,除非您拥有系统管理经验。我们看到客户在分析失败实例的控制台输出之后使用的一些示例解决方案,其中包括:在卷上运行 fsck、禁用 SELinux 或更正 fstab 文件中的错误。

停止和重新启动实例的步骤:

  1. 停止未能正常启动的实例(不要关闭或中止)。
  2. 拆离根 EBS 卷。
  3. 将卷附加到同一可用区域中的现有实例,确保使用第二安装点(非根卷)。
  4. 更正旧根卷上的配置。
  5. 拆离卷并在其原始安装点将其重新附加到原始实例。
  6. 启动实例。
  7. 如果需要,请重新附加弹性 IP 地址。

重新启用 IO

在某些情况下,作为一种保护措施,您的 EBS 卷可能禁用了 IO 访问。在此情况下:

  1. 导航到管理控制台中的 EBS 卷。如果卷上的 IO 已禁用,则卷列表中的“Status Checks”将列出为“Impaired”。
  2. 通过单击卷详细信息部分中的“Enable Volume IO”,可以使用控制台来重新启用 IO。
  3. 我们建议您通过使用诸如 fsck 或 chkdsk 等工具来验证数据的一致性。
  4. 如果您的实例未响应,则恢复 IO 可能将实例返回到服务,这取决于您的操作系统。

数据恢复

如果您的实例是 EBS 支持的实例、由于内部配置相关问题而失败(详细信息通常可在控制台输出中找到),而且标准重启不起作用,可以遵循以下步骤来恢复数据:

  1. 停止未能正常启动的实例(不要关闭或中止)。
  2. 拆离根 EBS 卷。
  3. 将卷附加到同一可用区域中的新替代实例(最好是从以前捆绑的 AMI 启动的实例),确保使用第二安装点(非根卷)。
  4. 将数据从卷复制到替代实例。

其他资源

对于有意改进其架构、了解最佳实践以及准备解决各种问题的客户,我们提供了大量可用资源。

  1. 有关如何为实例故障建立架构的详细信息可在 AWS Cloud 白皮书中的“Designing Fault-Tolerant Applications”部分中找到。
  2. 确保通过捆绑自定义 AMI 来创建工作实例配置的备份始终是一种很好的方法。
  3. Amazon EC2 用户指南包含一个有关故障弹性应用程序概念的 pdf 文档。

当底层主机存在问题时,实例通常会处于“stopping”状态。通过强制停止实例,您可能能够解决此问题。这可通过 EC2 命令行工具或通过 AWS 管理控制台来实现。

命令行工具

ec2-stop-instances [your id here] --force

AWS 管理控制台

在实例上单击鼠标右键,然后从下拉列表中选择“Stop”(您应当看到一条将执行强制停止的消息)。

注意:在任意情况下,您可能都需要发出强制停止请求两次。

如果您无法强制停止实例,您也许可以启动一个替代实例;请参阅停止实例疑难解答。如果此操作无效,请通过 AWS 论坛或通过开立 AWS Support 案例通知我们。为了加快解决问题的速度,在寻求支持时,请务必提供您已采取的所有步骤。

对于那些处于““shutting down”状态的时间超出正常范围的实例,Amazon EC2 服务中的自动进程将最终对其进行清理。当实例不处于“running”状态时,不会向客户收取任何实例小时数费用。

如果您无法等待实例中止,请通过 AWS 论坛或通过开立 AWS Support 案例来通知我们。为了加快解决问题的速度,在寻求支持时,请务必提供您已采取的所有步骤。