• 系统环境

    • 系统版本:CentOS 6.9
    • 磁盘:LVM
    • 内核:2.6.32

  • 模拟误删除:
    Linux误删/boot目录下所有文件(LVM环境)_第1张图片
  • 重启之后的样子:
    Linux误删/boot目录下所有文件(LVM环境)_第2张图片
  • 恢复步骤

  • (1)重启机器,用光盘或USB引导进入救援模式的shell(光盘或USB上的系统尽量与本机硬盘系统版本保持一致)

    • 第三项为救援模式
      Linux误删/boot目录下所有文件(LVM环境)_第3张图片
    • 由于刚才删除的时候连/etc/fstab一起删除了,救援模式找不到硬盘上的系统
      Linux误删/boot目录下所有文件(LVM环境)_第4张图片

      • 进入救援模式的shell
        Linux误删/boot目录下所有文件(LVM环境)_第5张图片
    • 要想恢复/boot下的文件,首先要先让救援模式找到硬盘上的系统,所以要先恢复/etc/fstab文件
  • (2) 查看硬盘信息,找出/boot分区和根分区

        ls /dev/sd*
        fdisk /dev/sda

    Linux误删/boot目录下所有文件(LVM环境)

    Linux误删/boot目录下所有文件(LVM环境)_第6张图片

    • 从上面的图片中可以看到/dev/sda2的ID是8e,也就是LVM,用lvdisplay命令看看lvm的详细信息
      lvdisplay #显示lvm的详细信息
      vgchange -ay #激活所有lvm

      Linux误删/boot目录下所有文件(LVM环境)_第7张图片
      Linux误删/boot目录下所有文件(LVM环境)

    • 激活了之后就可以挂载看看这个lv到底是不是根分区了。
      mkdir /mnt/root
      mount /dev/vg0/lv0 /mnt/root
      Linux误删/boot目录下所有文件(LVM环境)
  • (3)找到根分区之后就可以重新写/etc/fstab文件了

        blkid                         #查看块设备信息,确定设备文件的位置
        cat << EOF > /mnt/root/etc/fstab
        >/dev/mapper/vg0-lv0        /          ext4        defaults        0    0
        >/dev/sda1                        /boot    ext4        defaults        0    0
        >/dev/mapper/vg0-lv0       swap   swap       defaults        0    0
        >EOF
        #利用多行重定向重写fstab文件

    Linux误删/boot目录下所有文件(LVM环境)_第8张图片

    • 确定fstab文件无误后重启电脑重新进入救援模式,让救援模式识别硬盘上的系统!

    • 重新进入救援模式之后,救援模式已经可以识别本地硬盘系统。

    Linux误删/boot目录下所有文件(LVM环境)_第9张图片

  • (4)重新进入救援模式的shell

    • 切换根到本地硬盘系统的根,然后挂载光盘
      chroot /mnt/sysimage
      mount /dev/cdrom /mnt/
      Linux误删/boot目录下所有文件(LVM环境)
      Linux误删/boot目录下所有文件(LVM环境)
    • 重新安装内核,以便生成/boot下vmlinuz-xxx等文件
      rpm -ivh /mnt/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force
      #一定要加上--force强制安装!!!

    Linux误删/boot目录下所有文件(LVM环境)_第10张图片

    • 安装完之后可以看到/boot下已经有文件了,接下来就是修复grub了!
  • (5)修复grub

    • 使用grub-install 命令进行修复
      grub-install /dev/sda #/sda为/boot所在的磁盘
      Linux误删/boot目录下所有文件(LVM环境)_第11张图片

    • 重写gurb.conf文件
      cat << EOF > /boot/grub/grub.conf

      default=0
      timeout=5
      title CentOS 6 (2.6.32-696.el6.x86_64)
         root (hd0,0)
         kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=8f8c8a6b-24aa-4b88-9972-2d0ff2829441 rhgb quiet
         initrd /initramfs-2.6.32-696.el6.x86_64.img
      Linux误删/boot目录下所有文件(LVM环境)_第12张图片

  • 修复完grub之后,重启!见证奇迹的时刻~~