Linux 下文件系统superblock 故障修复 记一次 superblock 损坏导致服务器无法启动的故障修复 前几天接到朋友联系,说他的服务器坏了,启动不起来了。这是一个RHEL 4 的服务器,而且是那种盗版RHEL 4,也就是说没有售后服务的,联系我问问能不能帮帮忙。我也很久没有弄过Linux 系统上的东西了。只好尝试一下,庆幸的是,修好了,并帮朋友维护了一段时间,在此记录一些修复和维护中碰到的问题。修复 superblock 本身并不复杂,我觉得值得记录的是修复过程中的思考过程,和修复所需要注意的问题。 一、启动故障 系统无法启动,启动时内核 panic: Uncompressing Linux Ok, booting the kernel. audit(1297269214.612:0): initialized ide2: I/O resource 0x3F6-0x3F6 not free. ide2: ports already in use, skipping probe Red Hat nash version 4.1.18 starting File descriptor 3 left open Reading all physical volumes. This may take a while /dev/hda: open failed: No medium found Found volume group "VolGroup_ID_17253" using metadata type lvm2 File descriptor 3 left open 8 logical volume(s) in volume group "VolGroup_ID_17253" now active File descriptor 3 left open VFS: Can't find ext3 filesystem on dev dm-0. mount: error 22 mounting ext3 mount: error 2 mounting none switchroot: mount failed: 22 umount /initrd/dev failed: 2 Kernel panic - not syncing: Attempted to kill init! _ 看到这个报错,我 Google 了一下,很快就发现,这很有可能是硬盘的 superblock [1] 坏了,因此感觉需要修复 superblock。 询问了一下,瘫痪之前都发生了些什么。朋友提到了一个情况,在瘫痪前,他发现有一个目录存储了太多的文件了(确实非常的多,大约是几百万到上千万个文件,程序设计上有问题),这是他写的一个 php 做缓存的脚本生成的后缀为.php 的文件,绝大多数都已经是垃圾文件了。他觉得太占磁盘空间了,想清理一下,于是用下面的命令删除这些生成的文件: find . -name "*.php" -exec rm -f {} \; 可是执行命令后,等了几分钟,发现系统没有反应。于是就 Ctrl-C 了,后来发现系统还是很慢,于是就执行 reboot 了。接下来,系统就启动不起来了。 可以推断,...