如何对安装 Windows 更新后卡在重启循环中的 EC2 实例进行故障排除?

上次更新日期:2021 年 7 月 22 日

我在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上安装了 Windows 更新。现在我的实例卡在重启循环中。如何修复此问题?

简短描述

要更正此问题,请恢复计划在操作系统启动流程中应用的待处理操作,例如 Windows 更新。使用与原始实例在相同可用区中的救援实例来完成此操作。

注意:最佳实践是维持实例和数据的备份。在执行“解决方法”部分中的步骤之前,请考虑创建 AMI创建 Amazon EBS 卷的快照

解决方法

重要提示

此过程需要停止和启动实例。但应注意以下几点:

  • 如果您的实例受实例存储支持或具有包含数据的实例存储卷,则在实例停止时数据将丢失。有关更多信息,请参阅确定实例的根设备类型
  • 如果您的实例是 Amazon EC2 Auto Scaling 组的一部分,则停止实例可能会终止实例。使用 Amazon EMR、AWS CloudFormation、AWS Elastic Beanstalk 启动的实例可能是 AWS Auto Scaling 组的一部分。在这种情况下,是否会发生实例终止取决于您的 Auto Scaling 组的实例缩减保护设置。如果您的实例是 Auto Scaling 组的一部分,请在开始执行解决步骤之前,暂时从 Auto Scaling 组中删除它
  • 停止和启动实例会更改实例的公共 IP 地址。在将外部流量路由到您的实例时,最佳做法是使用弹性 IP 地址,而不是公有 IP 地址。

有关更多信息,请参阅概览:停止和启动实例

1.    打开 Amazon EC2 控制台

2.    选择 Instances(实例),然后选择处于重启循环中的实例。

3.    停止该实例

4.    从实例分离根卷。Windows 实例上的根卷的设备名称为 /dev/sda1

5.    在受损实例所在的可用区中启动新的 EC2 实例。此新实例将成为您的“救援”实例。您还可以使用与救援实例在相同可用区中的现有实例。

注意:与原始实例基于相同 AMI 的救援实例可能会遇到磁盘签名冲突问题。最佳实践是为救援实例选择不同的 AMI。例如,如果原始实例使用的是适用于 Windows Server 2012 R2 的 AMI,则使用适用于 Windows Server 2016 的 AMI 启动救援实例。如果您必须从与原始实例相同的 AMI 创建救援实例,则必须执行附加步骤以避免磁盘签名冲突。有关详细信息,请参阅远程桌面无法连接到远程计算机手动步骤部分中的第 6 步。

6.    将您在第 4 步中分离的根卷挂载到救援实例作为辅助设备。在将卷挂载到实例时,自动完成该卷的设备名称作为辅助卷命名。

7.    使用远程桌面协议 (RDP) 连接到救援实例。然后,从磁盘管理或使用 DiskPart 命令行工具将新挂载的卷设置为联机。如果您没有看到新挂载的卷,请参阅我的挂载 EBS 卷为什么没有显示在我的操作系统或 EC2 Windows 实例的磁盘管理中?

注意:记下辅助卷的驱动器盘符。在以下示例中,驱动器盘符为 E

8.    打开命令提示符以管理员身份打开 PowerShell,并运行以下命令:

DISM /image:E:\ /cleanup-image /revertpendingactions

注意:将驱动器盘符 E: 替换为第 7 步中记录的驱动器盘符。

9.    卸载辅助卷,然后将其从救援实例分离

10.    将该卷作为根卷 (/dev/sda1) 挂载回原始实例。

11.    启动原始实例


这篇文章对您有帮助吗?


您是否需要账单或技术支持?