客户发现1台Redhat 7.6的系统无法使用,于是进行了强制重启,重启后系统卡在了“Starting Switch Root …”的位置,如下所示:
使用光盘进入救援模式,然后挂载系统盘的根到/mnt/sysimage。进入目录,查看messages日志,发现出故障时日志报系统中最基本的一些命令都无法找到:
在/mnt/sysimage下搜索这些命令,发现它们竟然放置在/mnt/sysimage/var/usr/bin目录下(正常情况下系统中的命令都是存放在/usr/bin下)。统计/mnt/sysimage/var/usr的空间有18G,而/usr只有132M,怀疑有人误操作,将/usr目录移动到/var目录下。
备份/usr目录,使用cp -pr命令将/var/usr下的所有文件拷贝回/usr下,然后重启系统,系统正常启动。
检查系统的登录信息,发现有用户在故障期间登录系统:
使用history查看该用户当时的操作日志,然而,命令没有输出。经过客户进一步检查,发现该用户使用了“set +o history”命令隐藏了他的操作内容,因此他在操作期间具体做了什么操作就无法得知。
总结:当系统无法启动时,可以使用光盘或ISO进入救援模式挂载系统,然后检查原系统的日志信息。如果能从原系统的日志中找到有用的信息,那么定位故障可能比较容易。以前在各种系统中也碰到过用户删除了系统中的/bin链接(/bin通常是指向/usr/bin的软链接)导致系统故障的情况,因此这次故障也有点类似,只要用户没有彻底删除系统中的文件,都是有可能恢复系统的。