MBR扇区故障

先来一张硬盘存储逻辑简图

mbr在第一块磁盘的第一个磁道的第一个扇区哦

摘自:http://www.cnblogs.com/wuguanglei/p/4244639.html

备份mbr数据

注意!mbr数据需要备份在其他硬盘,多处备份!

查看分区情况,我们呢有2个硬盘

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        19G  5.5G   13G  32% /
devtmpfs        485M     0  485M   0% /dev
tmpfs           490M   12K  490M   1% /dev/shm
tmpfs           490M  6.8M  484M   2% /run
tmpfs           490M     0  490M   0% /sys/fs/cgroup
/dev/sda1        93M   65M   22M  75% /boot
tmpfs            98M     0   98M   0% /run/user/0
/dev/sdb1       991M  2.6M  922M   1% /data

现在将mbr信息写入第二个硬盘中,/data目录是挂载在第二块硬盘上的

# dd if=/dev/sda of=/data/mbr.bin bs=512 count=1

模拟mbr损坏

# dd if=/dev/zero  of=/dev/sda  bs=512 count=1

重启系统后,linux系统已经无法启动

修复mbr损坏

1. 需要linux系统光盘或者u盘启动

选择troubleshooting模式,救援模式

磁盘将会被挂载至/mnt/sysimage/

continue rw方式挂载分区。

read only ro方式挂载分区。

skip 跳过,将来自己手工挂载磁盘。

继续即可,事实上是挂载不到原系统分区的,因为分区表不在了。

2. 挂载保存mbr数据的第二块硬盘

#fdisk -l

#mkdir /data
#mount  /dev/sdb1  /data

3. 使用备份的mbr数据修复系统磁盘分区

#dd  if=/data/mbr.bin  of=/dev/sda  bs=512 conut=1

对比centos6总结

对比centos 6,centos7 与centos6在mbr损坏的修复过程一致

扩展

主引导程序损坏

如果mbr的分区信息没有损坏,而主引导程序损坏,则进入救援模式后

会挂载原有系统到/mnt/sysimage下

# chroot/mnt/sysimage
# grub2-install  /dev/sda
或者
#grub2-install root-directory=/mnt/sysimage /dev/sda


glibc升级导致系统无法启动

同样进入救援模式,替换到未升级之前的库文件,重启即可。

/etc/fstab文件丢失

"/etc/fstab"配置文件决定了Linux系统在启动后如何加载各分区,例如根分区"/"、"/boot"分区等,若这些分区无法挂载,系统将会以ro挂载根分区。丢失"/etc/fstab"文件后,启动后将无法对文件系统进行写操作。

同样进入救援模式,恢复/etc/fstab文件

遗忘root用户的密码

通过单用户模式重设root账号的密码

single


GRUB引导故障

模拟GRUB故障

GRUB是大多数Linux系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统(如果有的话)。当"/boot/grub2/grub.cfg '配置文件丢失,或者关键配置出现错误,或者MBR记录中的引导程序遭到破坏时,Linux主机启动后可能会出现"grub>"的提示符,无法完成进一步的系统启动过程。

# mv /boot/grub2/grub.cfg   /boot/grub2/grub.cfg.bak

修复GRUB故障

使用grub引导修复

1. 指定文件系统,可以是xfs或者ext2,这个要根据安装系统时选择的文件系统,centos7默认是xfs

grub>insmod xfs
or
grub> insmod  ext2

2. set root:指定包含内核等引导文件的/boot分区所在的位置

grub> set root='hd0,msdos1'

#hd0 表示第一块硬盘  msdos1 表示第一个分区

3. linux16:指定内核文件所在的位置,内核加载时权限为只读"ro",并通过"root="指定根分区设备文件的位置。

这里如果不知道内核文件名称,就要相同centos系统版本里/boot/grub2/grub.cfg去看。

grub>linux16 /vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/sda1rhgbquiet

#这里的root是指根分区所在目录

注:

ro      #read only
rhgb    # redhat graphical boot
quiet    #disable all log messages

4. 指定启动内核所使用的临时系统镜像文件所在的位置

grub>initrd16 
/initramfs-3.10.0-123.el7.x86_64.img

修复完成后即可进入系统,重建配置文件。

使用光盘救援模式修复

chroot /mnt/sysimage 
grub2-install /dev/sda

对比centos6总结

centos6的grup引导命令
grub>root (hd0,0) 
grub>kernel/vmlinux-2.6.18-8.e15 ro root=/dev/VolGroup00/LogVo100 rhgb quiet 
grub>inited /initrd-2.6.18-8.e15.img 
grub>boot

>title:指定在启动菜单中显示的操作系统名称。

>root:指定包含内核等引导文件的/boot分区所在的位置。

>kernel:指定内核文件所在的位置,内核加载时权限为只读"ro",并通过"root="指定根分区设备文件的位置。

>initrd:指定启动内核所使用的临时系统镜像文件所在的位置。

   centos7centos6grup引导系统启动,命令有些变化,小伙伴们注意了哦!