Linux文件系统损坏后的远程修复方案
时间:2010-12-28 来源:秩名
注意:使用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吧。
标签分类: