调整AWS EC2实例卷大小后无法连接问题求助
问题原因分析
- 系统关键配置文件损坏:磁盘满额时,系统无法正常写入
/etc/hosts、/etc/hostname这类依赖主机名解析的配置文件,导致sudo命令因无法解析本地主机名报错;重启后系统初始化网络服务时,因配置异常无法完成网络初始化,进而无法通过SSH或控制台连接。 - 文件系统损坏:磁盘满状态下执行扩容操作,可能引发文件系统逻辑错误,重启后系统无法正常挂载根分区或启动关键服务。
解决建议
方法一:挂载故障卷到临时实例修复
- 停止故障EC2实例(请勿终止,保留根卷)。
- 在AWS控制台分离故障实例的根卷。
- 使用同区域、同系统版本的正常Ubuntu实例(你已创建的新实例即可),将分离的根卷挂载到该实例的挂载点(例如
/mnt/recovery):- 创建挂载目录:
sudo mkdir /mnt/recovery - 挂载卷(根据实际设备名调整,如
/dev/xvdf):sudo mount /dev/xvdf1 /mnt/recovery
- 创建挂载目录:
- 修复关键配置文件:
- 编辑
/mnt/recovery/etc/hosts,确保包含主机名解析条目:
替换127.0.0.1 localhost 127.0.1.1 ip-xxx-xx-xx-xxip-xxx-xx-xx-xx为故障实例的实际主机名。 - 检查
/mnt/recovery/etc/hostname,确保内容为故障实例的主机名,不符则修改。
- 编辑
- 修复文件系统:
- 卸载挂载的卷:
sudo umount /mnt/recovery - 执行文件系统检查(替换为实际设备名):
sudo fsck /dev/xvdf1,按提示修复错误。
- 卸载挂载的卷:
- 将修复后的根卷重新挂载回故障实例,启动实例后尝试连接。
方法二:使用EC2串行控制台修复(若已开启)
- 在AWS控制台打开故障实例的串行控制台。
- 尝试通过本地账户登录(若系统未完全崩溃)。
- 直接编辑
/etc/hosts和/etc/hostname,添加或修正主机名解析条目。 - 重启网络服务:
sudo systemctl restart systemd-networkd(Ubuntu 18.04+)或sudo service networking restart,之后尝试连接。
注意事项
- 操作前务必创建根卷的快照,避免数据丢失。
- 挂载卷时需确认设备名,NVMe实例的根卷通常为
/dev/nvme0n1p1,传统实例为/dev/xvda1。
内容的提问来源于stack exchange,提问作者Shaugi
相关产品推荐
相关产品推荐

