****************************************************  切记使用fsck一定要先卸载分区,否则后果自负***************************************************..."> ****************************************************  切记使用fsck一定要先卸载分区,否则后果自负***************************************************..." /> ****************************************************  切记使用fsck一定要先卸载分区,否则后果自负***************************************************..." />
用户登录
用户注册

分享至

LINUX 文件系统损坏后远程修复方案

  • 作者: 五菱集团驻Z泰协调部
  • 来源: 51数据库
  • 2020-09-02
editor-side-new">
****************************************************
  切记使用fsck一定要先卸载分区,否则后果自负
****************************************************
   【一】
  
     是出现经常非法关机,断电,导致文件系统不连续,而在强制检查后不能通过的情况,系统会进入一个修复(repair)模式,
需要远程协助开启network和sshd服务,然后 cd /boot; umount / ;  fsck -y /dev/sda3(假设根目录分区为sda3)
   这里可能会有一些不连续或者部分损坏的文件被系统搁置到/lost+found目录下,都以#开头,以节点命名的目录,
需要手动恢复,恢复步骤自行到网上查询,需要确认原来的目录结构
   【二】
    另外一种比较严重,同样因为某些原因,例如升级内核,例如频繁断电,导致启动到内核后,出现类似以下错误,
              
               Boot error:
                -----------------------------------------------------
               
                root (hd0,0)
                Filesystem type is ext2fs, partition type 0x83
                kernel /vmlinuz-2.6.15.6 ro root=LABLE=/ rhgb quiet
                   [Linux-bzImage, setup=0x1e00, size=0x1807f8]
                initrd /initrd-2.6.15.6.img
                   [Linux-initrd @ 0x37f82000, 0x6d283 bytes]
               
                Uncompressing Linux... Ok, booting the kernel.
                Red Hat nash version 4.1.18 starting
                mkrootdev: label / not found
                umount /sys failed:16
                mount: error 2 mounting ext3
                mount: error 2 mounting none
                switchroot: mount failed: 22
                umount /initrd/dev failed: 2
                Kernel panic - not syncing: Attempted to kill init!
                -------------------------------------------------------
            a.  远程协助,进入grub后,能否检测到系统完整的 LINUX分区,如果分区完整,并且进一步分区下的目录结构和文件初步完整,OK
                将 kernel 后的 root=LABEL=/ 改成 root=/dev/hda3 或者 root=/dev/sda3 (根目录所在分区,我一般分为sda3)
                应该可以顺利进入系统,然后参考 mklabel 命令,给根分区打上LABEL,或者修改grub.conf,将标签项改成用分区表示,然后grub-install ....
                进行grub安装
               
            b. 远程协助,进入grub后,只能检测到/boot所在分区,而root分区不完整,只能通过进入rescue模式,或者用live cd, 利用fsck了,
               这里提醒一下,尽量别用带x-window的LIVECD,这种垃圾盘把我害惨了.
               另外尽量平时能备些CD的盘,大家用习惯了DVD,可是这次的情况就是服务器上没有DVD,全是CD,又找不来移动DVD
               只能通过网络PXE来完成了.....
           
            c. 把磁盘挂载到其他的主机上个别分区如果挂载不上提示指定文件系统的话我们可以通过如下步骤来恢复数据:
            恢复数据实践步骤!!!

  1.复制磁盘
  dd if=源盘分区  of=目标盘分区 (最好一模一样大小) ,例如目标盘分区为/dev/sdb3
  2.
  mkfs.ext3 -n /dev/sdb3   (一定要有-n,切记)  记住最后一个数字值
  3.
  screen -S check
  fsck -b  XXXX /dev/sdb3 -y
  XXX为第二部里最后一个数字
  开始检测,不用管,按 Ctrl+a -> d ,切换到后台,等扫描完, fsck -y /dev/sdb3 确认。
  4.
  mount /dev/sdb3 /mnt
   【三】
  
       至于连grub都进不去的,不用说了,远程协助,直接进入live cd 或者 rescue模式,先看分区是否完整,如果完整,直接用grub-install.......,具体使用参考网络
       如果分区不完整,那只能用数据恢复软件,数据重要的话就花点时间找吧,或者花点money,不重要的话直接reinstall吧,嘎嘎
     
     
     
     
 
 
 
     
 另外给一个网上的参考
 ================================================================= 
 
                  Boot error:
                 
                  -----------------------------------------------------
                 
                  root (hd0,0)
                  Filesystem type is ext2fs, partition type 0x83
                  kernel /vmlinuz-2.6.15.6 ro root=LABLE=/ rhgb quiet
                     [Linux-bzImage, setup=0x1e00, size=0x1807f8]
                  initrd /initrd-2.6.15.6.img
                     [Linux-initrd @ 0x37f82000, 0x6d283 bytes]
                 
                  Uncompressing Linux... Ok, booting the kernel.
                  Red Hat nash version 4.1.18 starting
                  mkrootdev: label / not found
                  umount /sys failed:16
                  mount: error 2 mounting ext3
                  mount: error 2 mounting none
                  switchroot: mount failed: 22
                  umount /initrd/dev failed: 2
                  Kernel panic - not syncing: Attempted to kill init!
                  -------------------------------------------------------
                 
                  搜集了网上提到的解决方法:
                 
                  A. 修改grub.conf ==>  root=305
                  B. 修改grub.conf ==>  root=/dev/sdax
                  C. 修改grub.conf ==>  root=LABLE=/1
                  D. disable SMP
                  E. build-in ext3/SATA/ATA/SCSI
                  F. 根据现有/etc/modprobe,使用mkinitrd手动生成initrd-2.6.15.6.img
                 
                  均无法解决,当前系统提示:
                 
                  root (hd0,0)
                  Filesystem type is ext2fs, partition type 0x83
                  kernel /vmlinuz-2.6.15.6 ro root=LABLE=/ rhgb quiet
                     [Linux-bzImage, setup=0x1e00, size=0x1807f8]
                  initrd /initrd-2.6.15.6.img
                     [Linux-initrd @ 0x37f82000, 0x6d283 bytes]
                 
                  Uncompressing Linux... Ok, booting the kernel.
                  Red Hat nash version 4.1.18 starting
                  mount: error 6 mounting ext3
                  mount: error 2 mounting none
                  switchroot: mount failed: 22
                  umount /initrd/dev failed: 2
                  Kernel panic - not syncing: Attempted to kill init!
                  -------------------------------------------------------------------
                 
                  可能性:
                 
                  1、scsi驱动不正确;
                 
                  2、系统在没有完成设备检测前就开始挂载分区;
                 
                  3、多硬盘引导。
 
 
 
四。
switching to new root
exec of init (/sbin/init/)failed!!!:2
umount /initrd/dev failed:2
kernel panic -not syncing:Attempeed to kill init !
先进入修复模式,然后看一下chroot /mnt/sys(后面的忘了,tab一下)  能不能将根挂起来,如果挂不起来说明你的fstab都有问题,
如果是这样,mkdir test建立一个test目录,再用e2label 找到你的根分区对应的设备号如找到为/dev/hda2 ,然后使用mount /dev/hda2 test
将根挂到刚才新建的test目录下,这样进如test目录就可以对fstab进行修改了,顺便看看inittab文件是否正确,一般这样就可以解决问题了.
如果还是不行,就将boot分区中的内容删掉,再重新生成.一般只要不是超高难度问题,这样的方法都可以解决.估计你可能还是分区的fstab表对应有问题

 
软件
前端设计
程序设计
Java相关