起因#
- 操作系统 Amazon Linux 2023
- 实例类型 t2.micro
想给 EC2 挂载一个新卷,但是重启实例的时候发现挂载的卷不见了,然后网上找了下如何重启自动挂载。试了下修改/etc/fstab
文件,然后重启发现 ssh 一直连不上,看了下日志才发现进入紧急模式... 交互界面也进不去了「很明显第一次就改坏了」
一开始我以为是我的 proxy 出了问题,不过关闭之后还是连不上
打开系统日志
但是 AWS 也提供了启动失败的解决方案,下面有一行小字
结果
一开始我一直在看文档,查找哪种类型能支持,去更改实例类型,但是不知道为什么还是连接不上... 最后找到了一种通过临时启动一个用于恢复的实例来把改坏的文件修改回去的方法。
恢复方式#
基本上分为这几步
1. 停止启动失败的实例
2. 从启动失败的实例分离 root 卷
3. 在同个区内创建新的 EC2 实例
4. 挂载 root 卷到新的实例
5. 修改/etc/fstab
文件
停止实例#
等待停止即可,目的是为了分离卷
分离卷#
找到挂载在根「/」目录下的卷,点击分离
启动一个新的实例#
配置就最简单的就行,目的只是为了挂载上一步分离出来的卷
记得要指定子网「目的是选择和卷一样的可用区,比如我的就是 us-west-1b」
挂载卷#
在 AWS 管理页面挂载刚刚分离的卷到新的实例上,并 ssh 到新的实例挂载
这里就能看到我们刚刚改错的内容了
使用 vim 直接修改 fstab 文件,改好之后分离卷,挂载回启动不了的实例。注意挂载回去的时候名字输入 xvda「与之前一样,目前我看到的 AWS 默认根卷都是这个名字」
最后启动老的实例,刚刚新建的实例可以删除了
成功!