问题现象
Linux系统启动时进入紧急模式,提示:Welcome to emergency mode,如图1所示,并提示输入root密码进入维护。
图1 紧急模式
根因分析
紧急模式提供尽可能最小的环境,即使在系统无法进入救援模式的情况下,您也可以修复系统。在紧急模式下,系统仅安装根文件系统进行读取,不尝试安装任何其他本地文件系统,不激活网络接口,只启动一些基本服务。
进入紧急模式的原因通常是:
/etc/fstab文件存在错误导致挂载文件系统时失败。
文件系统存在错误导致。
约束与限制
本节操作适用于Linux操作系统emergency mode(紧急模式)问题处理。操作步骤涉及修复文件系统操作,修复文件系统存在丢失数据风险,请先备份数据后进行修复操作。
处理方法
输入root密码后回车,进入修复模式。
在紧急模式下根分区是以只读方式挂载,要修改根目录下的文件需要执行以下命令,以读写方式重新挂载根分区。
# mount -o rw,remount /
请执行以下命令首先检查fstab文件是否存在错误,尝试挂载所有未挂载的文件系统。
# mount -a
如果出现mount point does not exist为挂载点不存在,请创建对应的挂载点。
如果出现no such device为不存在该文件系统设备,请注释或者删除该挂载行。
如果出现an incorrect mount option was specified为挂载参数错误,请修改为正确的参数。
如果没有出现任何错误且提示UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY,通常为文件系统错误导致,请跳至步骤7。
执行以下命令,打开/etc/fstab修改相应的错误。
# vi /etc/fstab
/etc/fstab文件包含了如下字段,通过空格分隔:
[file system] [dir] [type] [options] [dump] [fsck]
修改完成后,确认修改是否正确,再次执行以下命令首先检查fstab文件。
# mount -a
执行以下命令,重启服务器。
# reboot
如果步骤3中没有任何错误,则可能为文件系统错误导致,执行:
# dmesg |egrep "ext[2..4]|xfs" |grep -i error
说明:
输出结果中如果有I/O error ... inode的错误信息则根因为文件系统错误导致。
如果上述命令没有发现日志记录文件系统文件错误则通常为超级块损坏。超级块是文件系统的“头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。
如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么系统可能会完全不识别该文件系统,系统启动时没有识别到文件系统导致进入紧急模式。ext2fs类型的文件系统将超级块的内容进行了备份,并存放于驱动程序的块组(blockgroup)边界。
请执行以下命令,卸载文件系统出错的目录,
# umount 挂载点
检查并修复已损坏的文件系统。
须知:
修复文件系统可能会导致数据丢失请先进行数据备份。
ext文件系统,执行以下命令,检查文件系统是否存在错误。
# fsck -n /dev/vdb1
说明:
如果出现The super block Cloud no be read or does not describe a correct ext2 filesystem的提示请跳转至10。
如果需要修复,执行以下命令,修复文件系统。
# fsck /dev/vdb1
xfs文件系统,执行以下命令,检查文件系统是否存在错误。
# xfs_repair -n /dev/vdb1
如果需要修复,执行以下命令,修复文件系统。
# xfs_repair /dev/vdb1
(可选)出现The super block Cloud no be read or does not describe a correct ext2 filesystem通常为超级块损坏,如图2所示,请按照提示使用备份的超级块更新超级块。
图2 超级块损坏

执行以下命令,使用备份的超级块信息更新超级块。
# e2fsck -b 8193 设备名
如图3所示更新超级块完成:
图3 更新超级块

说明:
-b 8193选项用于显示使用存放在文件系统中的8193块的超级块的备份数据。通常在主超级块已损坏时使用。备份超级块的位置是依赖的在文件系统的blocksize上。
对于具有1k块大小的文件系统,可以在块处找到备份超级块8193。
对于具有2k块大小的文件系统,在块16384;对于4k块,在块32768。
<设备名>为磁盘名称而非分区。
修复完成后执行以下命令,重启服务器。
# reboot
评论区