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问题原因,进行不同的修复。
按照提示输入
Press F
自动修复。如果修复失败,可以再尝试按
S
跳过对应的/data挂载,继续启动OS。在进入OS之后,手动执行
fsck
检测对应挂载点/data所在的文件系统具体异常。
1662001150:Linux系统中/etc/fstab文件中配置的某个挂载点对应的设备不存在,或系统启动过程中文件系统fsck检查出异常
问题描述
ECS实例内部OS启动卡在Give root password for maintenance等待输入密码页面。如下图:
可能原因
可能存在的原因如下:
Fstab内配置的挂载点对应的设备不存在。
配置了开机fsck自检文件系统,并且fsck发现文件系统存在异常,需要人工参与修复。
解决方案
您可以根据实际问题原因来选择适合您的解决方案。
方案一:修复错误配置
输入密码进入系统。执行
mount -a
命令查看具体报错的行。在原系统的
/etc/fstab
文件中,注释或者删除该行配置,之后再重新启动ECS实例。
方案二:修复文件系统异常
输入密码进入系统之后,执行fsck检测的对应的错误,根据实际情况选择对应解决方案进行修复。
1671696288:Linux系统initrd switch root失败
问题描述
Linux系统启动失败。通过VNC查看实例运行状态发现显示类似于Failed to start Switch Root的错误信息。如下图:
可能原因
Linux系统在启动过程中执行switch root时发生失败的原因可能有很多种,如下:
常见的可能原因是
/etc/os-release
或/usr/lib/os-release
文件缺失,请参考方案一:创建缺失文件进行修复。其它可能原因导致switch root失败,请参考方案二:使用快照恢复系统盘进行修复。
方案一:创建缺失文件
卸载异常ECS实例的系统盘,并将该磁盘作为数据盘挂载到正常ECS实例中。
具体操作,请参见如何恢复系统盘数据?的步骤一~步骤四。
说明该正常实例最好是与异常实例运行相同的Linux发行版本,以方便后续恢复
/etc/os-release
文件的操作。在正常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
文件内容进行填写。执行
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
根据
/usr/lib/os-release
文件是否缺失,执行相应操作。恢复异常ECS实例的系统盘。
具体操作,请参见如何恢复系统盘数据?的步骤五。
通过SSH或VNC远程登录已修复的ECS实例,确认ECS实例恢复正常。
方案二:使用快照恢复系统盘
登录ECS管理控制台。
在左侧导航栏,选择
。在顶部菜单栏左上角处,选择地域。
找到需要回滚云盘的实例,单击实例ID。
在实例详情页,单击快照页签。
选择目标快照,在操作列中单击回滚磁盘。
说明 单次只能回滚一块云盘,实例上挂载的其他云盘不受影响。回滚后,整块云盘会恢复到某个时间点的状态,而不是某个分区或目录当时的状态。在弹出的对话框中,单击确定。
说明- 在单击确定前,建议您单击创建快照备份最新的数据。
- 如果您选择回滚后立即启动实例,云盘回滚成功后,实例会自动启动。