我无法连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例,或者我遇到启动问题。我想使用 EC2Rescue 来诊断和解决操作系统 (OS) 问题。
您可以使用 EC2Rescue for Linux 执行以下操作:
**注意:**如果您可以访问 EC2 Serial Console,请使用该控制台对受支持的基于 Nitro 的实例类型进行故障排除。有关详细信息,请参阅连接到 EC2 Serial Console。您还可以使用 AWSSupport-ExecuteEC2Rescue 运行手册来自动识别和修复导致连接问题的问题。有关详细信息,请参阅在无法访问的实例上运行 EC2Rescue 工具。
**先决条件:**确保您的系统符合 EC2Rescue 的操作系统和软件要求。
完成以下步骤:
使用有问题实例的亚马逊机器映像 (AMI) 在您的虚拟私有云 (VPC) 中启动救援实例。 **注意:**确保新实例与有问题的实例位于同一可用区内。您也可以使用与有问题的实例位于同一可用区的现有实例。
将 Amazon Elastic Block Storage (Amazon EBS) 根卷与有问题的实例分离。记下设备名称,例如 /dev/xvda 和 /dev/sda1。
将 Amazon EBS 卷作为辅助设备(例如 /dev/sdf)附加到救援实例。 **注意:**如果您实例的根设备是由 Amazon EBS 支持的卷,请停止并重启该实例。
使用 SSH 连接到您的救援实例。
以根用户身份运行以下命令,以识别正确的设备名称:
$ sudo -i
# lsblk
# rescuedev=/dev/xvdf1
**注意:**运行 lsblk 时,请记下输出中的设备名称。请将 xvsf1 替换为附加到您的救援实例的设备的设备名称。
要选择尚未使用的现有临时挂载点,请运行以下命令:
# rescuemnt=/mnt # mkdir -p $rescuemnt
**注意:**最佳做法是使用 /mnt 作为挂载点。
要从附加的卷挂载根文件系统,请运行以下命令:
# mount $rescuedev $rescuemnt
如果卷挂载失败,请运行以下命令:
dmesg | tail
如果日志显示通用唯一标识符 (UUID) 存在冲突,请使用 -o nouuid 选项重新运行上述命令。示例:
mount -o nouuid $rescuedev $rescuemnt
要挂载特殊文件系统并将根目录更改为新的文件系统,请运行以下命令:
# for i in proc sys dev run; do mount --bind /$i $rescuemnt/$i ; done # chroot $rescuemnt
在离线 Linux 根卷上下载并安装适用于 Linux 的 EC2Rescue 工具。
运行不含选项的 EC2Rescue for Linux,以运行所有模块。
根据结果,运行以下命令为受支持的模块激活修复:
# ./ec2rl run --remediate
# exit # umount $rescuemnt/{proc,sys,dev,run,}
**注意:**如果卸载操作失败,请先停止或重启救援实例,然后再卸载辅助设备。 将辅助卷与 EC2 救援实例分离。 将 /dev/sdf 辅助卷作为 /dev/xvda 或 /dev/sda1 根卷附加到原始实例。 启动实例,然后验证该实例是否按预期运行。
要进一步对操作系统级问题进行故障排除,请执行以下操作:
Recover your impaired instances using EC2Rescue and Amazon EC2 Systems Manager Automation(使用 EC2Rescue 和 Amazon EC2 Systems Manager Automation 恢复受损实例)
排查 Amazon EC2 Windows 实例问题
rePost Polyglot
已提问 3 年前
255023zjy
已提问 2 年前
Tim
已发布 2 年前