ECS故障排除与恢复

更新时间:

因误操作导致ECS实例中/etc/fstab文件配置错误,从而导致ECS实例重启后无法正常启动时如何进行修复。

场景简介

本实验将基于一台配置了Alibaba Cloud Linux 3操作系统的ECS实例(云服务器),模拟误操作导致ECS实例中/etc/fstab文件配置错误,从而导致ECS实例重启后无法正常启动时如何进行修复。

费用说明

本实验时长2个小时,预计产生费用为0.86元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

背景知识

本场景主要涉及以下云产品和服务:

创建实验资源

  1. 在实验页面,勾我已阅读并同意《阿里云云起实践平台服务协议》我已授权阿里云云起实践平台创建、读取及释放实操相关资源后,单击开始实操

  2. 创建资源需要5分钟左右的时间,请您耐心等待。

  3. 云产品资源列表,您可以查看本场景涉及的云产品资源信息。

    image

安全设置

资源创建完成后,为了保护您阿里云主账号上资源的安全,请您重置云服务器ECS的登录密码。

重置云服务器ECS的登录密码。

  1. 云产品资源列表的ECS云服务器区域,单击管理

    image

  2. 实例详情页签的基本信息区域,单击重置密码

    image

  3. 重置实例密码对话框中,设置新密码确认密码重置密码的方式选择在线重置密码配置SSH密码登录策略选择开启,单击确认修改

    image

    返回如下结果,表示ECS实例root用户的登录密码重置成功。

    image

远程登录ECS并模拟故障

  1. 远程登录ECS实例。

    1. 实例详情页签,单击远程连接

      image

    2. 远程连接对话框中,单击通过Workbench远程连接中的立即登录

      image

    3. 登录实例对话框中,输入重置后的root用户密码,单击确定

      image

      返回如下页面,表示已成功远程登录ECS实例。

      image

  2. 创建快照。

    在模拟故障前,需要对ECS实例的云盘进行快照。

    1. 切换至云服务器ECS管理控制台页签。在实例详情页签,单击块存储

      image

    2. 块存储页签,找到目标云盘,单击其右侧操作列下的创建快照

      image

    3. 创建快照对话框的开通快照中,单击开通并进行下一步

      说明

      若您已开通过快照,则不会出现开通快照提示,请跳过此步骤。

      image

    4. 创建快照对话框中,快照名称填写为快照1保留时间选择保留1,未提及的配置保持默认即可,单击确认

      image

    5. 块存储页签,单击快照

      image

    6. 快照页签,当创建的快照的进度可用时,表示快照创建成功。

      image

  3. 模拟/etc/fstab配置错误。

    1. 切换至ECS终端页面。执行以下命令,编辑/etc/fstab文件。

      vim /etc/fstab

      image

    2. i进入编辑模式,在文件末尾添加如下内容。

      /dev/sda99              /opt      ext4      defaults,noatime       0      2

      image

    3. Esc键退出编辑模式,输入:wq并回车,保存并退出文件。

    4. 执行以下命令,重启ECS实例。

      reboot
  4. 查看ECS实例状态。

    1. 云产品资源列表的ECS云服务器区域,单击管理

      image

    2. 实例详情页签,可以看到ECS实例状态处于运行中,但是提示操作系统运行存在异常,然后单击远程连接

      说明

      提示操作系统运行存在异常信息会有延迟,请耐心等待1~2分钟,重新打开实例详情页签即可查看到相关信息。

      image

    3. 弹出建立远程连接失败的对话框。这时可以看到模拟误操作后,ECS实例重启后无法正常连接。

      image

  5. 通过VNC登录实例。

    1. 实例详情页签,单击远程连接

      image

    2. 远程连接对话框中,单击展开其他登录方式,然后单击通过VNC远程连接中的立即登录

      image

      image

    3. 登录后会发现ECS实例的操作系统无响应,说明因fstab内挂载信息记录错误,导致无法正常启动进入系统界面。

      image

/etc/fstab故障排查

ECS实例进行关机,通过自助问题排查,发起实例健康诊断

  1. 切换至云服务器ECS控制台页签。在实例详情页签,单击停止

    image

  2. 停止实例对话框中,保持默认配置,单击确定

    image

    停止实例大概需要5~10分钟左右,请耐心等待实例状态变为已停止

    image

  3. 实例详情页签,单击健康诊断

    image

  4. 健康诊断页签,单击开始诊断

    image

  5. 实例问题排查页签,单击实例无法连接或启动异常问题类型,选择实例的操作系统无法正常启动,且实例状态已停止,选择目标实例ID并保持默认时间范围,然后单击开始排查

    说明

    您可在左侧云产品资源列表中查看目标ECS实例的实例ID。

    image

  6. 诊断完成后,查看诊断结果的异常,以及实例的状态,并根据诊断结果提示使用修复盘的用户名和密码登录实例,进行故障修复。

    说明

    请记录下修复盘的用户名和密码,后续进行故障修复时需要使用。

    image

故障修复

第一种恢复方法参考:根据诊断结果提示进行修复。

  1. 在左侧导航栏中,选择实例与镜像 > 实例

    image

  2. 实例页面,可以查看到诊断完成后,实例处于运行中修复中状态,然后单击其右侧操作列下的远程连接

    image

  3. 远程连接对话框中,单击通过VNC远程连接中的立即登录

    image

  4. VNC连接页面,输入从诊断结果中获取的用户名和密码,登录实例。

    说明
    • 在使用修复盘修复系统前,需知道登录名和密码。修复盘系统只能使用本次诊断工具提供的用户名(通常为root)和密码登录,该用户名和密码需要从诊断报告中查看。

      输入密码时可以使用VNC连接页面的复制命令输入功能,将密码复制后粘贴进去。然后回车确定。

    image

    返回如下页面,表示实例登录成功,就可以开始进行故障修复。

    image

  5. 查看问题实例原有系统盘的挂载信息。

    在临时挂载的修复盘中,问题实例原有系统盘的文件系统会被挂载到某一临时目录下。执行以下命令,查看原有系统盘所在的临时目录信息。

    mount | grep /dev/vda

    返回如下结果,可以查看到临时目录格式示例为/tmp/ecs-offline-diagnose_disk-xxxxx,其中xxxxx为实例原有系统盘的云盘序列号。

    image

    image

  6. 依次执行以下命令,将修复盘内的虚拟文件系统/dev/proc/sys挂载到chroot环境中的根目录。挂载虚拟文件系统的作用为确保后续操作中blkid命令能够正常读取文件系统信息。

    说明

    您需要将命令中临时目录/tmp/ecs-offline-diagnose_disk-xxxxx修改为实际获取的临时目录,其中xxxxx为原有系统盘的云盘序列号。前往实例页面,单击实例名称进入实例详情页签,单击块存储,即可查看并复制云盘序列号。

    mount --bind /dev /tmp/ecs-offline-diagnose_disk-xxxxx/dev
    mount --bind /proc /tmp/ecs-offline-diagnose_disk-xxxxx/proc
    mount --bind /sys /tmp/ecs-offline-diagnose_disk-xxxxx/sys

    image

  7. 执行以下命令,查看挂载结果。

    mount

    image

  8. 运行chroot命令,将根目录切换为问题实例原有系统盘所在的临时路径,并进入chroot环境。

    说明

    您需要将命令中临时目录/tmp/ecs-offline-diagnose_disk-xxxxx修改为实际获取的临时目录,其中xxxxx为原有系统盘的云盘序列号。

    chroot /tmp/ecs-offline-diagnose_disk-xxxxx

    image

  9. 编辑/etc/fstab文件,将错误配置删除。

    1. 执行以下命令,备份/etc/fstab文件。

      cp /etc/fstab /etc/fstab.bak
    2. 执行以下命令,编辑/etc/fstab文件。

      vim  /etc/fstab
    3. i进入编辑模式,将之前模拟故障时的配置项删除。

      说明

      若在生产环境下,分区挂载记录输入错误时,修改为正确格式即可。本实验场景下删除错误配置即可。

      image

    4. 修复完成后,按Esc键退出编辑模式,输入:wq并回车,保存并退出文件。

  10. 执行以下命令,退出chroot环境。

    exit
  11. 依次执行以下命令,解除虚拟文件系统的挂载。

    说明

    您需要将命令中临时目录/tmp/ecs-offline-diagnose_disk-xxxxx修改为实际获取的临时目录,其中xxxxx为原有系统盘的云盘序列号。

    umount /tmp/ecs-offline-diagnose_disk-xxxxx/dev
    umount /tmp/ecs-offline-diagnose_disk-xxxxx/proc
    umount /tmp/ecs-offline-diagnose_disk-xxxxx/sys

    image

  12. 修复完成后,将实例关机,卸载修复盘,重启实例。

    1. 切换至云服务器ECS管理控制台页签。在实例页面,单击目标实例右侧操作列下的停止

      image

    2. 停止实例对话框中,保持默认配置,单击确定

      image

      停止实例大概需要5~10分钟左右,请耐心等待实例状态变为已停止

      image

    3. 实例页面,找到目标实例,鼠标移至修复中,单击卸载修复盘

      image

    4. 在弹出的对话框中,单击立即卸载

      image

    5. 修复盘卸载后,在实例页面,单击目标实例其右侧操作列下的启动

      image

    6. 启动实例对话框中,单击确定

      image

      启动实例大概需要1分钟左右,请耐心等待实例状态变为运行中

      image

第二种恢复方法参考:若已为ECS实例创建快照,可以进行回滚云盘,快速恢复。

  1. 云产品资源列表的ECS云服务器区域,单击管理

    image

  2. 实例详情页签,单击快照

    image

  3. 快照页签,找到创建的快照,单击其右侧操作列下的回滚云盘

    image

  4. 回滚云盘对话框中,勾选相关信息,单击确定

    image

    等待回滚云盘成功后,即可实现故障的修复。

    image

通过Workbench远程连接测试

在故障修复后,通过Workbench远程连接进行测试ECS实例。

  1. 云产品资源列表的ECS云服务器区域,单击管理

    image

  2. 实例详情页签,单击远程连接

    image

  3. 远程连接对话框中,单击通过Workbench远程连接中的立即登录

    image

  4. 登录实例对话框中,输入重置后的root用户密码,单击确定

    image

    返回如下页面,表示已成功远程登录ECS实例,/etc/fstab的故障已完成修复,ECS实例可正常使用。

    image

清理资源

  • 在完成实验后,如果无需继续使用资源,选择不保留资源,单击结束实操。在结束实操对话框中,单击确定

    image

  • 在完成实验后,如果需要继续使用资源,选择付费保留资源,单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。

    image