之前的帖子说到自己的一台Amazon EC2实例又因为retirement,且又漏看邮件而没能及时处理而导致被停止(stopped)。
(图源 :pixabay)
除了懊恼于自己又没能及时查看并处理邮件,同时也懊恼于上次出这样的故障恢复过程没能写一个手册,一切又都要重来。
所以这次恢复过程记录一下,万一下次再出这样的问题(呸呸呸),只需依照手册逐步处理就好,不必再费脑了。
登录面板
首先,登录AWS的管理面板:https://console.aws.amazon.com/
登录后,在右上角选择EC2所在的区域:
然后在左侧的Services中,选择Compute->EC2
然后选择Instances->Instances,找到我们被停止的(“Stopped”)实例
可以发现实例状态为
启动实例并获取IP地址
选中实例,并在右上部的Instance state菜单中选择“Start instance”
等待实例启动成功
然后在实例的信息中,找到实例的IP地址
多次使用Putty连接尝试登录,均出现Network error: Connection refused
从面板中重启实例后故障依然
修复无法连接问题
之前我是直接在串口控制台进行的操作(按回车),这次我按Ctrl+D试试。
按完后发现系统启动进了默认模式(Default mode):
而且非常神奇的是,这时候SSH可以成功登录啦。为了进行测试,我没有进行任何修改,重新在SSH中Reboot系统,发现故障果然和我想的一样,依然存在(SSH又无法登录了)。
我们可以通过在串口控制台敲回车,进入到维护模式:
(当然也可以和之前一样通过按(Ctrl+D)进入到默认模式,重要的是先进入到系统中)
通过vi等工具编辑/etc/fstab文件,注释掉如下内容:
然后使用reboot
(维护模式下)或者sudo reboot
(默认模式下)重启系统。
再次使用Putty连接实例,发现实例已经正常连接。
挂载本地存储
之所以导致这一系列问题的根源都是因为这个EC2实例包含有本地存储,相比于网络存储,本地存储具有速度快、容量大等特点。
而我也需要在本地存储上运行一些脚本,以及存储一些数据,所以还是要把本地存储重新挂载上。
查看本地存储,执行如下指令:
sudo fdisk -l
返回信息中的这部分就是本地存储啦,150G,也不算太大,将将够用:
使用如下指令进行分区操作(千万别搞错设备哦):
sudo fdisk /dev/nvme1n1
可以输入m
查看帮助,依次输入n
,p
,回车、回车,来创建新分区:
输入w
写入修改:
使用如下指令创建文件系统:
sudo mkfs.ext4 /dev/nvme1n1p1
创建成功,记下UUID(也可使用sudo blkid
查看):
创建挂载点(如无):
sudo mkdir /work
编辑/etc/fstab,加入相应条目(修改UUID为之前获取的内容):
UUID="265fd668-fc01-4a0a-98e6-041de6a0f4db" /work ext4 defaults,discard 0 0
测试挂载:
sudo mount /work
至此分区以及挂载均已成功,重启后分区会自动挂载,一切正常。
恢复数据
(略)
经过一番折腾,总算成功地恢复了Amazon 被STOP的EC2实例,恢复重建数据也是个漫长的工作,和主题关系不大,就不再多言啦。
哎,这一天天的时间浪费的,哭啊。