ISheep

ISheep

Badminton | Coding | Writing | INTJ
github

AWS EC2 Linux 實例進入緊急模式該如何不刪除實例並恢復

Correctly handling the way instances automatically mount volumes after reboot

起因#

  1. 操作系统 Amazon Linux 2023
  2. 实例类型 t2.micro

想给 EC2 挂载一个新卷,但是重启实例的时候发现挂载的卷不见了,然后网上找了下如何重启自动挂载。试了下修改/etc/fstab文件,然后重启发现 ssh 一直连不上,看了下日志才发现进入紧急模式... 交互界面也进不去了「很明显第一次就改坏了」

image
一开始我以为是我的 proxy 出了问题,不过关闭之后还是连不上

image

打开系统日志

image

image

但是 AWS 也提供了启动失败的解决方案,下面有一行小字

image

结果

image

一开始我一直在看文档,查找哪种类型能支持,去更改实例类型,但是不知道为什么还是连接不上... 最后找到了一种通过临时启动一个用于恢复的实例来把改坏的文件修改回去的方法。

恢复方式#

基本上分为这几步
1. 停止启动失败的实例
2. 从启动失败的实例分离 root 卷
3. 在同个区内创建新的 EC2 实例
4. 挂载 root 卷到新的实例
5. 修改/etc/fstab文件

停止实例#

等待停止即可,目的是为了分离卷
image

分离卷#

找到挂载在根「/」目录下的卷,点击分离

image

启动一个新的实例#

配置就最简单的就行,目的只是为了挂载上一步分离出来的卷

记得要指定子网「目的是选择和卷一样的可用区,比如我的就是 us-west-1b」

image

挂载卷#

在 AWS 管理页面挂载刚刚分离的卷到新的实例上,并 ssh 到新的实例挂载

image

这里就能看到我们刚刚改错的内容了

image

使用 vim 直接修改 fstab 文件,改好之后分离卷,挂载回启动不了的实例。注意挂载回去的时候名字输入 xvda「与之前一样,目前我看到的 AWS 默认根卷都是这个名字」

image

最后启动老的实例,刚刚新建的实例可以删除了

image
成功!

参考#

排查 EC2 Linux 实例处于紧急模式的问题 | AWS

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。