【案例】如何处理Linux虚拟机文件系统损坏无法进入系统的问题

本文主要是介绍【案例】如何处理Linux虚拟机文件系统损坏无法进入系统的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【故障类型】: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操作等都有可能导致文件系统损坏,而且某些文件系统损坏难以修复。

建议:

  • 如果虚拟机中有重要数据,在尝试修复之前请先做备份,修复文件系统的操作可能导致系统中部分文件丢失。
  • 某些情况修复完成重启后文件系统依然会有问题,可以尝试多修复一次。如果始终无法成功修复,建议给客户重新下发虚拟机,将问题虚拟机的系统盘和数据盘都当成数据盘挂载给新虚拟机,尽量保证用户数据不丢失。

这篇关于【案例】如何处理Linux虚拟机文件系统损坏无法进入系统的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103525

相关文章

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效