1662001149:Linux系统启动过程中文件系统fsck检查出异常

问题描述

ECS实例启动阶段OS启动卡住,通过VNC登录时,可以看到如下类似输出:

fsck from util-linux 2.20.1
fsck from util-linux 2.20.1
:clean, 193163/ 1310720 files, 2415199/ 5242368 blocks
/dev/vdb:Superblock last write tine(Tue Nou 2300:31:582021,
now=WedNou1018:28:552021) is in the future.
/dev/vdb:UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without-a or-p options)
mountall:fsck /data[294] terminated with status 4
mountall:File system has errors:/data
Errors were found while checking the disk dr iue for/data.
Press F to attempt to fix the errors, It oig more, S to skip mounting, or M for

可能原因

/data挂载点对应的文件系统存在异常,执行fsck的时候返回报错,需要人工确认是否修复。

解决方案

说明 

本解决方案仅针对出现该问题时的修复方案,实际问题中需要根据不同的fsck问题原因,进行不同的修复。

  1. 按照提示输入Press F自动修复。

  2. 如果修复失败,可以再尝试按S跳过对应的/data挂载,继续启动OS。

  3. 在进入OS之后,手动执行fsck检测对应挂载点/data所在的文件系统具体异常。

1662001150:Linux系统中/etc/fstab文件中配置的某个挂载点对应的设备不存在,或系统启动过程中文件系统fsck检查出异常

问题描述

ECS实例内部OS启动卡在Give root password for maintenance等待输入密码页面。如下图:

阿里云1662001149:Linux系统启动过程中文件系统fsck检查出异常(图1)

可能原因

可能存在的原因如下:

  • Fstab内配置的挂载点对应的设备不存在。

  • 配置了开机fsck自检文件系统,并且fsck发现文件系统存在异常,需要人工参与修复。

解决方案

您可以根据实际问题原因来选择适合您的解决方案。

方案一:修复错误配置

  1. 输入密码进入系统。执行mount -a命令查看具体报错的行。

  2. 在原系统的/etc/fstab文件中,注释或者删除该行配置,之后再重新启动ECS实例。阿里云1662001149:Linux系统启动过程中文件系统fsck检查出异常(图2)

方案二:修复文件系统异常

输入密码进入系统之后,执行fsck检测的对应的错误,根据实际情况选择对应解决方案进行修复。

1671696288:Linux系统initrd switch root失败

问题描述

Linux系统启动失败。通过VNC查看实例运行状态发现显示类似于Failed to start Switch Root的错误信息。如下图:

阿里云1662001149:Linux系统启动过程中文件系统fsck检查出异常(图3)

可能原因

Linux系统在启动过程中执行switch root时发生失败的原因可能有很多种,如下:

  • 常见的可能原因是/etc/os-release/usr/lib/os-release文件缺失,请参考方案一:创建缺失文件进行修复。

  • 其它可能原因导致switch root失败,请参考方案二:使用快照恢复系统盘进行修复。

方案一:创建缺失文件

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

    具体操作,请参见如何恢复系统盘数据?的步骤一~步骤四。

    说明 

    该正常实例最好是与异常实例运行相同的Linux发行版本,以方便后续恢复/etc/os-release文件的操作。

  2. 在正常ECS实例中,根据异常系统盘内是否存在/etc/os-release文件执行相应操作。

    说明 

    本示例中,假设异常系统盘中的文件系统挂载到了/mnt目录下。

    可能情况

    具体操作

    /etc/os-release文件不存在

    根据正常ECS实例与异常ECS实例Linux发行版本是否相同,进行相应操作。

    说明 

    可能会发现参照同一Linux发行版本的正常实例中的/etc/os-release文件是一个指向其它文件的符号链接。您可根据实际情况需要选择一种操作进行修复。


    /etc/os-release文件存在


    • /usr/lib/os-release文件不存在:

    • /usr/lib/os-release文件存在:使用快照恢复系统盘进行修复,具体操作,请参见使用快照回滚云盘。

    • Linux发行版本相同:执行cp /usr/lib/os-release /mnt/usr/lib/os-release命令将正常实例中的/usr/lib/os-release文件复制到异常ECS实例。

    • Linux发行版本不同:执行vi /mnt/usr/lib/os-release命令手动创建并编辑/usr/lib/os-release文件。/usr/lib/os-release文件的内容参照同一Linux发行版本的正常实例中的/usr/lib/os-release文件内容进行填写。

    • 参考上述操作直接恢复包含实际内容的/etc/os-release文件。

      因为/etc/os-release/usr/lib/os-release文件只要其中一个存在即可被systemd正确识别。

    • 参考下述的操作,先恢复/etc/os-release指向的包含实际内容的其它文件,然后再恢复/etc/os-release符号链接,以确保系统文件的完整性和一致性。

    • Linux发行版本相同:执行cp /etc/os-release /mnt/etc/os-release命令将正常实例中的/etc/os-release文件复制到异常ECS实例。

    • Linux发行版本不同:执行vi /mnt/etc/os-release命令手动创建并编辑/etc/os-release文件。/etc/os-release文件的内容参照同一Linux发行版本的正常实例中的/etc/os-release文件内容进行填写。

    1. 执行ls -hal /etc/os-release命令。系统返回类似如下信息时,表明/etc/os-release文件是一个指向/usr/lib/os-release的符号链接。

      lrwxrwxrwx 1 root root 19 Dec 20 15:13 os-release -> /usr/lib/os-release
    2. 根据/usr/lib/os-release文件是否缺失,执行相应操作。

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

    具体操作,请参见如何恢复系统盘数据?的步骤五。

  4. 通过SSH或VNC远程登录已修复的ECS实例,确认ECS实例恢复正常。

方案二:使用快照恢复系统盘

  1. 登录ECS管理控制台。

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

  3. 在顶部菜单栏左上角处,选择地域。

  4. 找到需要回滚云盘的实例,单击实例ID。

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

  6. 选择目标快照,在操作列中单击回滚磁盘

    说明 单次只能回滚一块云盘,实例上挂载的其他云盘不受影响。回滚后,整块云盘会恢复到某个时间点的状态,而不是某个分区或目录当时的状态。
  7. 在弹出的对话框中,单击确定

    说明
    • 在单击确定前,建议您单击创建快照备份最新的数据。
    • 如果您选择回滚后立即启动实例,云盘回滚成功后,实例会自动启动。