【故障类型】:Linux文件系统损坏
【关 键 词】:Linux文件系统损坏 无法进入系统
【适用版本】:FusionCompute所有版本
【问题现象】:
当Linux虚拟机文件系统损坏导致无法进入系统时,从VNC登录虚拟机可以查看到如下三种现象。
(1) 现象一:Linux虚拟机启动过程报文件系统错误并自动进入修复模式。
图1 自动进入修复模式
(2) 现象二:Linux虚拟机启动过程中报文件系统错误提示但不会自动进入修复模式。
图2 不自动进入修复模式
(3) 现象三:Linux虚拟机启动后直接花屏,网络无法ping通。
图3 花屏
【告警信息】:无
【问题分析】:
Linux文件系统损坏导致启动时无法正常进入系统。
【解决方法】:
(1) 如果虚拟机中有重要数据,请在尝试修复前对虚拟机进行备份。
(2) 进入repair filesystem或者rescue模式。
修复文件系统需要先进入repair filesystem或者rescue模式,以下对三种现象进入repair filesystem或者rescue模式的方法分别进行说明。
现象一
系统启动自动进入repair filessystem模式,输入root用户密码后便可进行步骤3的修复操作。
现象二
通过挂载虚拟机系统对应的ISO的方法进入rescue模式,再进行步骤3的修复操作。
以SUSE10 SP3 32bit系统为例,具体步骤如下:
a、将SUSE10 SP3 32bit系统安装光盘挂载到虚拟机上并选择从光盘启动,输入“rescue”进入rescue模式。如图4所示。
图4 rescue模式1
b、输入root用户名进入rescue模式命令行界面。如图5所示。
图5 rescue模式2
现象三
尝试在VNC界面上盲敲用户名/密码进入系统,如果能进入系统,则会出现字符界面,请参照现象一和现象二的操作进入repair filesystem或者rescue模式进行修复操作。
(3) 修复文件系统。
修复文件系统使用命令fsck,该命令的具体功能可参考man手册,本文只介绍常用的几个用法。
a、一般的文件系统损坏修复时只需根据启动过程中的错误提示,执行如下命令即可(“/dev/*”表示具体的设备)。
fsck -y /dev/*
例如启动过程中有提示/dev/xvda2分区的文件系统有异常,如图6所示。
图6 文件系统异常1
i. 请在repair filesystem或者rescue模式中执行如下命令进行修复。
fsck -y /dev/xvda2
ii. 如果在执行修复命令时提示该分区已挂载,如图7所示,请按照如下操作处理。
图7 分区已挂载
请输入“n”中止修复,先执行如下命令以只读方式重新挂载该分区后再进行修复。如图8所示。
mount -o remount,ro /dev/xvda2
再执行如下命令进行修复,如图8所示。
fsck -y /dev/xvda2
图8 只读挂载
b、reiserfs文件系统的损坏,在某些情况下执行“fsck -y /dev/*”命令后会提示未成功修复。如图9所示。
图9 未修复成功
此时需要根据提示使用如下命令进行修复。如图10所示。
fsck.reiserfs --rebuild-tree /dev/xvda2
图10 修复命令
c、修复完成后重启系统。
【总结&建议】:
系统使用过程中强制关机或者重启,对使用中的磁盘进行fsck操作等都有可能导致文件系统损坏,而且某些文件系统损坏难以修复。
建议:
- 如果虚拟机中有重要数据,在尝试修复之前请先做备份,修复文件系统的操作可能导致系统中部分文件丢失。
- 某些情况修复完成重启后文件系统依然会有问题,可以尝试多修复一次。如果始终无法成功修复,建议给客户重新下发虚拟机,将问题虚拟机的系统盘和数据盘都当成数据盘挂载给新虚拟机,尽量保证用户数据不丢失。