载磁盘修复EC2虚拟机的系统故障

作者:MeshCloud 脉时云公有云架构师 王一凡

前言

我们在使用AWS EC2时候,经常会因为种种原因,例如(磁盘挂载错误,网络配置错误,SSH错误)导致我们无法使用SSH登陆到EC2,如果虚拟机坏掉了如何修复呢?本文脉时云解决方案架构师教你如何修复‘坏掉的EC2’。

关闭EC2并解除挂载磁盘,并挂载到另外的EC2上。

1、首先确认EC2实例是关着的才能操作。如下截图。

挂载磁盘修复 AWS EC2虚拟机的系统故障

2、去左侧菜单,磁盘卷里边,找到这个EC2实例对应的磁盘。注意看InstanceID可以区分。点击操作,先解除挂载。如下截图。

挂载磁盘修复 AWS EC2虚拟机的系统故障

3、继续把这个磁盘卷挂载到其他EC2实例。如下截图。

挂载磁盘修复 AWS EC2虚拟机的系统故障

4、挂载过程中,AWS控制台会提示,挂载点。默认的/dev/sdf就可以,不用改。如下截图,红色框中。

挂载磁盘修复 AWS EC2虚拟机的系统故障

好了,操作完成。现在该去操作系统内干活了。

挂载文件系统并修改损坏的文件

完成了虚拟机级别的操作,该进入操作系统了。

1、到新挂载的虚拟机上,ssh登陆进去。先su成root身份,执行如下命令:

fdisk -l

命令执行结果是会列出当前的硬盘。可以看到/dev/xvda1就是我们要挂载的卷。如下截图。

挂载磁盘修复 AWS EC2虚拟机的系统故障

2、接下来执行mount命令挂载。

本文的注意点1

这里有个问题需要注意,如果用来修复的EC2实例和损坏的要挂载盘的EC2实例是基于同一个AMI镜像生成的,例如用的AMI是Amazon Linux 2,那么其磁盘是XFS格式,系统会提示UUID冲突。如果是从不同的AMI镜像创建的,那么就不会报告这个错误了。如下截图,红色框是报错信息。

挂载磁盘修复 AWS EC2虚拟机的系统故障

那么,为了跳过这个UUID检测,可以直接加上个参数 –nouuid即可跳过。例如如下命令:

mount -t xfs -o nouuid /dev/xvdf1 /mnt/repair

执行成功后不会有任何报错。但是可以通过mount命令看到挂载成功啦。

挂载磁盘修复 AWS EC2虚拟机的系统故障

现在切换到挂载好的目录上,浏览原来磁盘的文件,并编辑损坏的配置文件,完成修复了。(简单步骤,截图略过)

挂载回去,修复完成

修复完成后,再把磁盘umount摘下来。(简单步骤,截图略过)

本文的注意点2

接下来把磁盘挂载回去到原始的虚拟机上。挂载时候,注意,挂载点默认会提示为/dev/sdf,这不是原来系统盘初始的挂载点。

往回挂载时候,要填写为/dev/xvda的,这样是原位挂载。如下截图。

挂载磁盘修复 AWS EC2虚拟机的系统故障

好了。现在开机测试,系统会正常启动。(简单步骤,截图略过)

至此修复完成。

发表评论

您的电子邮箱地址不会被公开。