如何修复Linux实例中缺失的关键系统目录或文件?

操作场景

当实例重启后无法启动,或者部分系统服务异常(比如SSH服务、云助手等),可能是由于关键系统目录或者文件缺失导致的。您可以尝试修复缺失的关键系统目录或文件来解决上述问题。例如,bash文件缺失时,无法运行bash命令。

image

可能缺失的关键系统目录或文件

该问题可能是由于误删除或者恶意操作导致关键系统目录或者关键系统文件缺失。

  • 可能缺失的关键系统目录

    /boot
    /dev
    /etc
    /etc/systemd
    /proc
    /root
    /sys
    /usr
    /usr/bin
    /usr/sbin
    /var
    /lib/systemd/system
    /bin
    /lib
    /lib64
    /sbin
  • 可能缺失的关键系统文件:

    /boot/grub/grub.cfg     /boot/grub2/grub.cfg
    /etc/group
    /etc/passwd
    /etc/shadow
    /usr/bin/bash    /bin/bash
    /usr/sbin/sshd  /sbin/sshd
    /bin/systemctl  /lib/systemd/systemd

修复缺失的关键系统目录或文件

您可以通过实例问题排查,查看具体缺失的关键目录和文件,选择对应的修复方式。

方式一:通过scp命令拷贝关键系统文件进行修复

SSH可用时,使用scp命令将正常的ECS实例中关键系统文件拷贝到当前缺失文件的ECS实例。

scp <关键系统文件名> root@192.168.XXX.XXX:/<关键系统目录>

例如将ata_id文件拷贝到当前ECS实例的root目录下。

scp ata_id root@192.168.XXX.XXX:/root

方式二:通过挂载系统盘方式进行修复

您可以根据业务需要,使用挂载系统盘的方式将关键系统文件拷贝到当前异常实例中。

  1. 卸载异常的ECS实例的系统盘,并将该云盘作为数据盘挂载到正常的ECS实例中。

    具体操作,请参见如何恢复系统盘数据?步骤一:创建快照~步骤四:进行对应的操作

  2. 将缺失文件从正常ECS实例中拷贝到异常ECS系统盘中。

  3. 恢复异常的ECS实例的系统盘。

    具体操作,请参见步骤五:恢复A实例的系统盘

  4. 远程连接异常实例,查看缺失文件是否恢复正常。

方式三:通过快照回滚或重置系统盘修复

示例:重启CentOS 7系统的ECS实例后,无法使用SSH远程连接实例,使用VNC远程连接实例提示Login incorrect错误该如何处理?

问题现象

重启CentOS 7系统的ECS实例后,无法使用SSH远程连接实例,使用VNC远程连接ECS实例提示Login incorrect错误,重置密码后再使用VNC远程连接依旧提示Login incorrect错误。

Login incorrect

通过VNC无法远程连接诊断后提示该实例的操作系统缺少Shell运行环境,导致云助手无法继续执行本诊断工具的诊断脚本

问题原因

ECS实例操作系统内部的/bin/bash/bin/sh文件或软链被删除,导致无法远程连接ECS实例。

解决方案

  1. 卸载异常的ECS实例的系统盘,并将该云盘作为数据盘挂载到正常的ECS实例中。

    具体操作,请参见如何恢复系统盘数据?步骤一:创建快照~步骤四:进行对应的操作

    重要

    若您已经发起实例操作系统无法启动诊断,并且实例已经处于运行中修复中状态时,说明实例已经被挂载了修复盘,请直接执行步骤四:进行对应的操作

    在执行步骤四:进行对应的操作中,可能会出现以下问题。

    • 执行chroot /mnt命令失败,提示chroot:failed to run command /bin/bash:No such file or directory错误,说明系统盘的Bash环境已经被破坏。

      chroot失败
    • 执行cat /var/log/message可以看到类似failed to execute 'bin/sh'错误信息,说明实例内部可能缺失/bin/sh/bin/bash

      failed to execute/bin/sh
  2. /bin/bash/bin/sh文件从正常ECS实例中拷贝到异常ECS系统盘中。

  3. 恢复异常的ECS实例的系统盘。

    具体操作,请参见步骤五:恢复A实例的系统盘

  4. 远程连接异常实例,查看缺失文件是否恢复正常。

重要

若通过挂载系统盘的方式仍无法修复,在您的系统盘内没有重要数据的情况下,您可以通过方式三:通过快照回滚或重置系统盘修复进行修复。