如何在 Amazon EC2 启动期间与控制台交互?

如何在 Amazon EC2 启动期间与控制台交互?

我有一个实例卡在该启动提示符处(从管理控制台查看实例日志):

The disk drive for /mydisk is not ready yet or not present
Continue to wait; or Press S to skip mounting or M for manual recovery

我添加了一个 EBS 卷,挂载了它,然后删除了 EBS 卷,忘记从 /etc/fstab 中删除条目,然后重新启动了机器。现在它在启动时提示我,我无法通过 SSH 进入实例。

我应该怎么做才能解决这个问题?

答案1

我不知道您的问题的“简单”解决方案,但有一个有点复杂的(取决于您的根设备类型)解决方案。

如果您的实例具有 EBS 根,则解决方案非常简单:停止实例,分离 EBS 驱动器,启动另一个实例并将 EBS 卷附加到该实例。根据需要编辑您的 fstab 文件,分离 EBS 卷并将其重新附加到原始实例。

如果您的实例具有 S3 支持的根(即实例存储),则解决方案会更困难一些。您可以从 AMI 下载数据(使用ec2-下载-捆绑包),然后将该数据提取到单个文件中(使用ec2-解绑)。然后,您可以挂载该映像,进行必要的更改,然后重新打包该映像(使用ec2-bundle-vol,覆盖使用 -v 标志捆绑的默认卷)。这样应该会为您提供一个新的、可行的 AMI,除了您所做的修改外,它与旧 AMI 完全相同。或者,您可以使用 dd - 将映像文件的内容复制到 EBS 卷,然后转换为 EBS 根支持的实例。

答案2

如果你的ubuntu有systemd,你可以编辑/lib/systemd/system/local-fs.target并注释掉最后两行:

#OnFailure=emergency.target
#OnFailureJobMode=replace-irreversibly

我还没有对此进行过广泛的测试,也不知道是否存在任何风险或副作用,但到目前为止,它运行良好。它会挂载根卷和所有其他卷(显然,配置错误的卷除外),然后继续启动过程,直到 SSH 启动,这样您就可以连接到实例并修复不正确的条目fstab

相关内容