【FAQ】linux下repair filesystem模式修复方法实践方案
第一种情况:非正常关机引起的磁盘分区问题 不能正常进入系统
Hello!
如下问题一般是如何引起和应该怎么样解决呢?
Finding module dependencies; [OK]
modprobe:modprobe:can't locate module block-major-3
fsck.ext3Possibly non-existent or swap device?
:NO such device or address while trying to open /dev/hdb1
/boot: clena, 41/26104 files. 12679/104391 blocks
[FAILED]
*** AN error occurred during the file system check
*** Dropping you to a shell; the systm will reboot
*** when you leave the shell
Give root password for maintenance
(or type Control-D to continue):
Login incorrect.
(Repair filesystem) 1 #
上次非正常关机引起的,用fsck /dev/hdaX后reboot进入,或只用fsck来修复,只管y回车
第二种情况:由于/etc/fstab文件编辑错误 而引起的不能正常进入系统
解决方法就是修改/etc/fstab文件成原来正常格式 删除错误的或者是不存在的挂载目录
操作:根据提示进入修复模式 Login incorrect.
(Repair filesystem) 1 # vim /etc/fstab
但是修复模式下(read-only system) 文件是被保护的不能修改 运行下面命令 把系统文件权限改成可读写(rw)
(Repair filesystem) 1 # mount -o remount,rw /
使根目录可写.即可以修复/etc/fstab文件,使之可写.然后就可以vi修改了
保存 wq
(Repair filesystem) 1 #reboot
搞定!!! RHLE正常界面又出来了。
修改了/etc/fstab文件中的LABLE=/ / 根目录的挂载内容为LABLE=/dev/sda1,不能够启动了。
只能通过输入root密码进入到repair filesystem中。编辑/etc/fstab文件,只读,应该是没有能够mount的问题。
但是mount /dev/sda1 /mnt无效。
通过google得到发现了一个解决方案:
(1)mount -w -o remount /
(2)然后通过 mount /dev/sda1 /mnt。
然后可以编辑/etc/fstab,恢复到原来,可以登录了。
【总结】
尝试查看分区信息&恢复信息
尽管事先被告知fdisk看不到分区信息,还是固执的尝试了一下:-)
fdiks -l /dev/sdc果然什么样都看不到。但是,系统启动的时候正确的列出了磁盘的相关信息(大小等),而且fdisk也能够列出磁盘大小等相关物理信息,只是没有分区信息。因此初步判断,是磁盘的分区表丢失,不一定是磁盘物理损坏。
——————经过排查是突然断电后可能产生了磁盘坏道导致,所以使用e2fsck命令进行了磁盘修复。 linux下磁盘检查修复命令e2fsck -a: 检查 partition,如发现问题会自动修复。-b: 设定 superblock 位置。 -B size: 指定 size 作为区块大小。-c: 检查 partition 是否有坏轨。-C file: 将检查结果储存到 file。-d: 输出 e2fsck debug 结果。-f: e2fsck 预设只会对错误的档案系统检查,加上 -f 是强制检查。-F: 在检查前将硬盘的 buffer cache 清空,避免发生错误。-l list: 记录了坏轨区块加入 list 中。-d : 打印 e2fsck 的 debug 结果。-f : 强制检查。-n: 以 (read-only) 开启档案系统-p: 关闭互动模式,如有问题自动修复,等同 -a。-v: 显示详细报告。-y: 启用使用者互动模式。 使用例子检查 /dev/mapper/VolGroup00-LogVol02 是否有问题,如发现问题便自动修复: e2fsck -a /dev/mapper/VolGroup00-LogVol02 执行 e2fsck 或 fsck 前请先 umount partition,否则有机会令档案系统毁损。 分区忙的情况,需要将所有涉及该分区的进程杀掉,有个快速的方法是执行 fuser -k /home 。 如果需要对根目录 (/) 进行检查及修复,便需要进入 singal user mode 执行。 最后别忘了将分区mount上。