CentOS 5.5不能启动了, 可怕的“无法find文件系统/ dev / root”错误

通常我在网上find我的答案没有问题,但是我一直试图修复我已经停了3天的服务器,而且我没有更进一步。

有问题的服务器是运行openvz-kernel的Centos 5.5机器,2.6.18-194.8.1.el5.028stab070.5更为谨慎。 我们没有物理访问服务器,我们也没有某种types的串行/networking控制台。 我们确实有一个基于debian的救援磁盘加载到pxe上。

服务器有两个磁盘,SDA:

Disk /dev/sda: 320.0 GB, 320071851520 bytes 255 heads, 63 sectors/track, 38913 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sda1 * 524 1193 5381775 83 Linux /dev/sda2 1 523 4200997 82 Linux swap / Solaris /dev/sda3 1194 38913 302985900 83 Linux Partition table entries are not in disk order 

和SDB:

 Disk /dev/sdb: 320.0 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 1 38913 312568641 83 Linux 

sda1具有文件系统,sda2是交换空间,sda3和sdb1一起形成挂载在/ vz上的md0。 这是fstab。

 /dev/sda1 / ext3 defaults 1 1 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /dev/sda2 swap swap defaults 0 0 /dev/md0 /vz ext3 defaults 0 0 

和menu.lst / grub.conf

 boot=/dev/sda default=0 timeout=15 #splashimage=(hd0,0)/boot/grub/splash.xpm.gz title CentOS (2.6.18-194.8.1.el5.028stab070.5) root (hd0,0) kernel /boot/vmlinuz-2.6.18-194.8.1.el5.028stab070.5 ro root=/dev/sda1 initrd /boot/initrd-2.6.18-194.8.1.el5.028stab070.5.img title CentOS (default) root (hd0,0) kernel /boot/bzImage ro root=/dev/sda1 

现在由于某种原因服务器出现故障,我们无法再按照正常的顺序运行。 我们的供应商试图通过在安装sda1 @ / mnt时通过先前提到的救援磁盘重新安装grub来“修复”我们的问题。

 grub-install --root-directory=/mnt '(hd0)' 

View post on imgur.com

这是启动时服务器的监视器输出的照片。 现在它可以清楚地加载/ etc / fstab,因为它试图从我们的交换分区恢复。

现在因为我们没有访问服务器,所以我们使用Qemu来尝试和debugging这个问题,但是我们永远不能确定它的行为是一样的,而且每当我们对sda1进行修改时,我们都需要重新启动服务器来查看qemu这些变化,任何指针,以另一种方式做到这一点是值得欢迎的。 我们以下面的方式使用qemu。

 qemu-system-x86_64 -vnc :0 -hda /dev/sda -hdb /dev/sdb 

我们已经尝试重新安装最新的内核。 试图做一个新的initrd没有突袭支持和强迫ext3支持。 使用相同的设置从服务器复制/ boot。 在几乎所有可能的磁盘/分区上安装grub。

我不知道还有什么可以尝试的。 任何提示都非常感谢。

tl; dr:服务器发生故障,将不会重新启动,因为“无法find文件系统错误”

你的grub.conf是什么样的? 也许突然有一个错误configuration的root =或init =参数?

如果情况并非如此,当您通过基于Debian的救援系统安装CentOS /分区时,是否存在/ dev目录? 如果有,它是什么样子? 如果使用statls -lah检查它,它与/ dev / sda1信息匹配吗? 也许/ dev / root指向了错误的位置(或者是用错误的mknod参数创build的)。

是的,现在/ dev应该是相当dynamic的,但是你永远不会知道……回到内核2.4天之后,我用一个Gentoo系统冲洗了一个Gentoo系统,并在手动重新创build了一些设备节点后启动了它。

在grub.conf之后添加原来的问题

grub.conf的第一行(boot = / dev / sda)看起来很可疑。 尝试将其注释掉并重新启动。

如果这不起作用,你可能也想用ls -lah检出/dev/sda1参数。 它应该是这样的:

 brw-r----- 1 root disk 104, 1 Sep 29 01:23 /dev/sda1 

观察类似于104,1的值。 然后创build/ dev / root

 mknod -m 640 /dev/root b 104 1 

你根据你的改变104和1的值。

希望这可以帮助!

对我们来说,这里描述的问题实际上是分区标签丢失。

请参阅: https : //serverfault.com/a/123165/191716