CentOS6.4系统启动失败故障排查

转:http://www.centoscn.com/CentosBug/osbug/2014/1028/4011.html

操作系统启动失败如下图报错:

 

故障现象:

从图中可以看到,操作系统启动的过程中,fsck在执行文件系统检测时出现了错误,并且是在检查/dev/mapper/VolGroup-lv_home时出错,提示此文件不存在;

 

故障分析:

这是一个什么界面,为何会出现这个界面?

操作系统启动的的大致过程为:加载BootLoader-à加载kernel-àinit执行系统初始化-à用户登录;而在init执行系统初始化的过程中,会执行系统初始化脚本/etc/rc.d/rc.sysinit,在此脚本中即会执fsck -A进行文件系统检测;

fsck -A会执行什么操作呢?

fsck -A会遍历文件/etc/fstab,检查其中定义的所有的文件系统。fsck在做文件系统检查前通常不会去检查设备是否真实存在,所以如果某设备不存在,而又去做了fsck,fsck即会报错,继而导致操作系统时会进入文件系统修复模式(file system repair mode),而中断正常的系统启动;

所以,这就是为何会出现此界面的原因了。

 

解决方法:

既然是fsck执行失败,导致操作系统无法继续启动,所以可以在操作系统启动时,让fsck跳过检查这个有问题的/dev/mapper/VolGrouplv_home即可正常启动操作系统;(在/etc/fstab中设置此项的第个字段fs_passno的值设为0,即意为fsck不检查此行)

         但是此时文件系统修复模式下所有文件都是只读的,无法编辑/etc/fstab;所以此时可以选择从系统光盘启动,选择进入紧急救援模式下去修改文件(因为紧急修复模式不会执行/etc/rc.d/rc.sysinit,所以不会出现此报错);

1
2
3
bash-4.1# chroot /mnt/sysimage
sh-4.1# vim /etc/fstab             ##将/dev/mapper/VolGrouplv_home这一行的第6个字段设为0
sh-4.1# reboot -r

 *除了以上方法:还可以注释掉 #/dev/mapper/VolGrouplv_home

但会提示没有写的权限:可以通过命令:mount -o remonut,rw /, Vi /etc/fstab

此时即可正常启动系统,不过中途会看到如下界面:

此时已没有fsck的报错,但是mount挂载文件系统时有一个failed的信息,这是因为在系统初始化脚本/etc/rc.d/rc.sysinit中,文件系统检测完成后的下一步即是去挂载文件系统;

并且从此界面可以明确的看到问题的所在了,/dev/mapper/VolGroup-lv_home不存在;虽然有此failed信息,但不影响系统可以继续启动;

绿色圈中的是需等待SELinux自动完成重新打标,若不想等待,可以在系统启动时禁入编辑模式,禁用SELinux的启动即可,如下图:

 

 

 

--------------------------------------------------------------------

至此操作系统已经可以启动起来,需介绍下背景了,此系统安装时是按照系统默认的分区布局(partitioning layout),如下图:

         一块硬盘sda,分成了sda1与sda2两个分区,sda2做成物理卷,基于此物理卷创建的卷组名称为VolGroup,在此卷组上创建了3个逻辑卷,名称分别为lv_root、lv_home、lv_swap,并且此逻辑卷lv_root与lv_home分别挂载到了文件系统中的/目录和/home目录;

    所以前文中/dev/mapper/VolGroup-lv_home即是此系统自动创建的挂载在/home的逻辑卷;比如由于误操作(umount、lvremove),删除了此逻辑卷,然后在重启电脑时,即会出现开篇处的报错了。

 --------------------------------------------------------------------------------------------------------------------------------------

 

现在操作系统已经启动登录,也知道问题所在了,那么接下来如何恢复此逻辑卷呢?

此时,系统中查看此逻辑卷的确是已被删除;

1
2
3
4
5
6
7
[root@mysqlhost1 ~]# lvs
LV      VG      Attr      LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
lv_root VolGroup -wi-ao--- 50.00g                                             
lv_swap VolGroup -wi-ao--- 992.00m                                             
[root@mysqlhost1 ~]# ll /dev/VolGroup/
lrwxrwxrwx 1 root root 7 10月 22 20:27lv_root -> ../dm-0
lrwxrwxrwx 1 root root 7 10月 22 20:27lv_swap -> ../dm-1

并且由于此逻辑卷是挂载在/home目录下,此逻辑卷丢失,那么/home目录下的数据,是否也是一同丢失了呢?如何恢复/home目录下原有的数据?

lvremove删除逻辑卷,其只是会清除LVM的部分元数据信息(metadata),真正的数据仍会被完整的保留;即虽然逻辑卷lv_home被删除了,但是/home下的数据仍然存在,只是现在暂且看不到;

并且默人的配置是,LVM的物理卷、卷组或是逻辑卷发生任何改动之前,LVM的元数据信息都会自动保存至/etc/lvm/archive目录下;

         所以我们只需恢复逻辑卷lv_home被删除前的自动备份的LVM的元数据信息,逻辑卷lv_home即可自动恢复,然后后重新挂载,即可查看到/home目录下原有的数据了;

1
2
3
4
5
6
##查看和卷组VolGroup相关的元数据备份信息
[root@mysqlhost1 ~]# vgcfgrestore --list VolGroup  
File:          /etc/lvm/archive/VolGroup_00001-560861966.vg
VG name:            VolGroup
Description:    Created *before* executing 'lvremove /dev/VolGroup/lv_home'
Backup Time:  Wed Oct 22 17:33:17 2014

    结果中可以看到在执行'lvremove /dev/VolGroup/lv_home'之前,卷组的元数据自动被备份到了文件/etc/lvm/archive/VolGroup_00001-560861966.vg中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
##从对应文件中恢复卷组VolGroup的那一刻的元数据信息 
[root@mysqlhost1 ~]# vgcfgrestore -f/etc/lvm/archive/VolGroup_00001-560861966.vg VolGroup
Restored volume group VolGroup
##此时即可看到此逻辑卷lv_home了
[root@mysqlhost1 ~]# lvscan                                 
ACTIVE           '/dev/VolGroup/lv_root' [50.00 GiB] inherit
inactive         '/dev/VolGroup/lv_home' [108.54 GiB] inherit
ACTIVE           '/dev/VolGroup/lv_swap' [992.00 MiB] inherit
##激活此逻辑卷
[root@mysqlhost1~]# lvchange -ay /dev/VolGroup/lv_home              
[root@mysqlhost1 ~]# lvscan
ACTIVE           '/dev/VolGroup/lv_root' [50.00 GiB] inherit
ACTIVE           '/dev/VolGroup/lv_home' [108.54 GiB] inherit
ACTIVE            '/dev/VolGroup/lv_swap' [992.00 MiB] inherit
1
2
3
4
5
6
##恢复/etc/fstab中刚才做的改动
[root@mysqlhost1 ~]# vi /etc/fstab  
##重新挂载         
[root@mysqlhost1 ~]# mount -a    
##/home目录下原有的数据也都可以查看到了                       
[root@mysqlhost1 ~]# ls /home

 

确实按上面方法,可以看到home的内容了,但如果系统重新启动了后,还是会报如下错误:

 

就不知道怎么办了,还是重装系统了.哎

注上几条命令:查看硬盘的UUID

ot@centreon ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2.7T 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 2.7T 0 part
├─vg_centreon-lv_root (dm-0) 253:0 0 50G 0 lvm /
├─vg_centreon-lv_swap (dm-1) 253:1 0 4G 0 lvm [SWAP]
└─vg_centreon-lv_home (dm-2) 253:2 0 8.1T 0 lvm /home
sdb 8:16 0 2.7T 0 disk
└─sdb1 8:17 0 2.7T 0 part
└─vg_centreon-lv_home (dm-2) 253:2 0 8.1T 0 lvm /home
sdc 8:32 0 2.7T 0 disk
└─sdc1 8:33 0 2.7T 0 part
└─vg_centreon-lv_home (dm-2) 253:2 0 8.1T 0 lvm /home

└─vg_centreon-lv_home (dm-2) 253:2 0 8.1T 0 lvm /home
[root@centreon ~]# blkid
/dev/sda1: UUID="afca0f91-00c7-4707-a1ab-ef6b9994100e" TYPE="ext4"
/dev/sda2: UUID="eP2umd-3ylU-iJan-uroF-lTuA-7nvC-rwtxfp" TYPE="LVM2_member"
/dev/sdb1: UUID="CyGJ2T-smib-rYoT-CKbb-g0tF-S9bk-n1X0T6" TYPE="LVM2_member"
/dev/sdc1: UUID="0EP3hG-SZJX-8N4N-OevK-0JOf-2V6Y-22hNvF" TYPE="LVM2_member"
/dev/mapper/vg_centreon-lv_root: UUID="75345656-50c9-4943-9925-92c1051c8f8e" TYPE="ext4"
/dev/mapper/vg_centreon-lv_swap: UUID="377fa21f-cec3-4574-8bf0-c49c45ab09a2" TYPE="swap"
/dev/mapper/vg_centreon-lv_home: UUID="ffcb68ae-2b66-4da3-9125-82e3acecf0fd" TYPE="ext4"

 

转载于:https://www.cnblogs.com/baxk/p/4835459.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hashmap clone_Java HashMap clone()方法与示例

hashmap cloneHashMap类clone()方法 (HashMap Class clone() method) clone() method is available in java.util package. clone()方法在java.util包中可用。 clone() method is used to get a cloned copy of this HashMap instance or in other words, we can say it return…

Linux内存管理--物理内存分配【转】

转自:http://blog.csdn.net/myarrow/article/details/8682819 1. First Fit分配器 First Fit分配器是最基本的内存分配器,它使用bitmap而不是空闲块列表来表示内存。在bitmap中,如果page对应位为1,则表示此page已经被分配&#xf…

JDK的一个Bug,监听文件变更要小心了

背景 在某些业务场景下,我们需要自己实现文件内容变更监听的功能,比如:监听某个文件是否发生变更,当变更时重新加载文件的内容。看似比较简单的一个功能,但如果在某些JDK版本下,可能会出现意想不到的Bug。本…

hashset java_Java HashSet clear()方法与示例

hashset javaHashSet类的clear()方法 (HashSet Class clear() method) clear() method is available in java.util package. clear()方法在java.util包中可用。 clear() method is used to clear all of the element exists from this HashSet. clear()方法用于清除此HashSet中…

推荐 17 个压箱底的常用类库

前言在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子。如果在我们的日常工作当中,能够将这些轮子用户,再配合一下idea的快捷键,可以极大得提升我们的开发效率。今天我决定把一些压箱底…

02、django中的上下文

2019独角兽企业重金招聘Python工程师标准>>> 1、譬如设置网站的名称,setting中设置变量: # setting.py SITE_NAME "我的小站"2、在view中写函数将该变量转换成字典,做返回值 from django.conf import settings def site_key(request):# 这里使…

enumset.allof_Java EnumSet allOf()方法与示例

enumset.allofEnumSet类的allOf()方法 (EnumSet Class allOf() method) allOf() method is available in java.util package. allOf()方法在java.util包中可用。 allOf() method is used to return Enumset that has all of the elements of the given element type (ele_ty). …

实战:10 种实现延迟任务的方法,附代码!

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)这篇文章的诞生要感谢一位读者,是他让这篇优秀的文章有了和大家见面的机会,重点是优秀文章&#xff…

netsh命令

C:\Windows\System32>netsh interface ipv6 show address levelverbose 地址 ::1 参数---------------------------------------------------------接口 Luid : Loopback Pseudo-Interface 1作用域 ID : 0.0有效生存时间 : infinite首选生存时间 : infiniteDAD 状态 : 首选项…

面渣逆袭:Redis连环五十二问!三万字+八十图详解!

基础1.说说什么是Redis?Redis图标Redis是一种基于键值对(key-value)的NoSQL数据库。比一般键值对数据库强大的地方,Redis中的value支持string(字符串)、hash(哈希)、 list(列表&…

hdu 4864 Task(贪婪啊)

主题链接:http://acm.hdu.edu.cn/showproblem.php?pid4864 Task Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1346 Accepted Submission(s): 336Problem DescriptionToday the company has m ta…

svg学习网站

1、http://www.runoob.com/svg

EasyExcel太方便易用了,强烈推荐!

背景 系统中经常要导出大量的数据,格式基本上都是Excel,然而每次导表都是对系统内存的一次挑战。在Java领域,生成或解析Excel的框架比较有名的当属Apache的poi和jxl了。但使用它们,会面临着严重的内存损耗问题。如果系统的并发量还…

Java Date hashCode()方法与示例

日期类hashCode()方法 (Date Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to retrieve hash code of this Date object. hashCode()方法用于检索此Date对象的哈希码。 has…

eclispe快捷键

快捷键无效解决办法: 1、考虑是否被其他应用占用,如QQ,QQ音乐,千千动听等 2、在eclispe查看是否被修改:Window->Preferences->General->Keys 快捷键: 1、复制当前行到下一行:CtrlAlt↓…

【端午】送3本书!

白天在公司搬砖,晚上到家赶紧给小伙伴们安排一波福利,这次送的书是 H 大新出的《深入理解Java核心技术:写给Java工程师的干货笔记(基础篇)》。书中介绍了普通Java工程师必须要学习的相关知识点,包括面向对象…

java bitset_Java BitSet length()方法与示例

java bitsetBitSet类的length()方法 (BitSet Class length() method) length() method is available in java.util package. length()方法在java.util包中可用。 length() method is used to return the length of this BitSet otherwise it returns 0 when this BitSet is &qu…

SpriteBuilder物理对象的父子关系

注意:打开物理使能(Physics-enabled)的节点忽略他们的父节点关系. 这意味着,一个物理使能的子节点不会随着其父节点移动. 物理引擎对于节点父子关系这个概念毫不知情,因此单独的对待所有物理使能的节点,意味着这些节点与其他节点相互独立. 我强烈建议你在设计所有复杂物理对象的…

面试突击51:为什么单例一定要加 volatile?

.作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)单例模式的实现方法有很多种,如饿汉模式、懒汉模式、静态内部类和枚举等,当面试官问到“为什…

kotlin 扩展类的功能_Kotlin程序| 扩展功能功能

kotlin 扩展类的功能扩展功能 (Extension function) Kotlin provides the ability to add more functionality to the existing class without inheriting them. Kotlin可以在不继承现有类的情况下为其添加更多功能。 This is done via a special declaration called "Ext…