转: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"

CentOS6.4系统启动失败故障排查的更多相关文章

  1. CentOS6系列系统启动常见故障排查与解决方法

    情景一.内核文件损坏 /boot/vmlinuz-2.6.32-642.el6.x86_64 内核文件 1.故障现象 2.解决方法:挂载光盘,进入rescue(救援)模式 3.选择--English- ...

  2. Linux启动故障排查和修复技巧

    一个执着于技术的公众号 我发现Linux系统在启动过程中会出现一些故障,导致系统无法正常启动,我在这里写了几个应对单用户模式.GRUB命令操作.Linux救援模式的故障修复案例帮助大家了解此类问题的解 ...

  3. 使用strace工具故障排查的5种简单方法

    使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...

  4. 一次线上OOM故障排查经过

    转贴:http://my.oschina.net/flashsword/blog/205266 本文是一次线上OOM故障排查的经过,内容比较基础但是真实,主要是记录一下,没有OOM排查经验的同学也可以 ...

  5. SQL Server 2008性能故障排查(四)——TempDB

    原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB: TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过 ...

  6. SQL Server 2008性能故障排查(三)——I/O

    原文:SQL Server 2008性能故障排查(三)--I/O 接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统.除非你的数据库完 ...

  7. SQL Server 2008性能故障排查(一)——概论

    原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节 ...

  8. Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825

    Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825 1. 播放系统服务器方面的维护2 1.1. 默认情况下,已经在系统的启动目录下增加了俩个启动项目2 1.2. ...

  9. CentOS服务器上搭建Gitlab安装步骤、中文汉化详细步骤、日常管理以及异常故障排查

    一, 服务器快速搭建gitlab方法 可以参考gitlab中文社区 的教程centos7安装gitlab:https://www.gitlab.cc/downloads/#centos7centos6 ...

随机推荐

  1. http://182.92.241.20/mypro/login 偶的点金项目细化分包管理平台即将上线!!

    http://182.92.241.20/mypro/login            偶的点金项目细化分包管理平台即将上线!! 敬请期待! 项目外包利器 项目管理利器

  2. 【Tsinghua OJ】循环移位(Cycle)

    Description Cycle shifting refers to following operation on the sting. Moving first letter to the en ...

  3. The Blocks Problem

    Description Many areas of Computer Science use simple, abstract domains for both analytical and empi ...

  4. HDU 5040

    http://acm.hdu.edu.cn/showproblem.php?pid=5040 题意比较难懂,有摄像头的位置是可以走的,每回合开始看做人先走摄像头再转,也就是说如果你这回合走之前没有摄像 ...

  5. Linux性能监控

    转自:http://blog.csdn.net/chosen0ne/article/details/8200737 linux性能监控,就是要监控系统的各个子系统是否正常.linux主要的子系统包括: ...

  6. arduino上使用sprintf()函数输出float值出错

    如果尝试使用sprintf()函数在arduino上进行对float指转换为一个字符串的话,你会发现,it doesn't work.弄了很久,还以为是没学c++的原因.其实在arduino上,这个函 ...

  7. libvirtError: no connection driver available for qemu:///system 解决办法

    今天部署了一套K版的OpenStack环境后,启动nova-compute后,日志里狂报如下错误(因为其内部有定时任务需要去连libvirtd进程): 2015-08-14 10:01:00.061 ...

  8. Jquery图片上传预览效果

    uploadPreview.js jQuery.fn.extend({ uploadPreview: function (opts) { var _self = this, _this = $(thi ...

  9. HDU 4705 Y 树形枚举

    树形枚举--搜索 题目描述: 给你一棵树,要在一条简单路径上选3个不同的点构成一个集合,问能构成多少个不同的集合. 解法: 枚举所有结点,假设某个结点有n棵子树,每棵子树的结点个数分别为s1,s2,` ...

  10. URAL 1227 Rally Championship(树的直径)(无向图判环)

    1227. Rally Championship Time limit: 1.0 secondMemory limit: 64 MB A high-level international rally ...