Centos 5.5 將不再啟動;可怕的“找不到文件系統 /dev/root”錯誤
通常我在網上找到我的答案沒有問題,但我已經嘗試修復我的宕機伺服器 3 天了,而且我沒有更進一步。
有問題的伺服器是執行 openvz 核心的 Centos 5.5 機器,更準確地說是 2.6.18-194.8.1.el5.028stab070.5。我們沒有對伺服器的物理訪問,也沒有某種串列/網路控制台。我們確實有一個通過 pxe 載入的基於 debian 的救援磁碟。
伺服器有兩個磁碟,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)'
http://i.stack.imgur.com/1FRi6.jpg
這是啟動時伺服器的監視器輸出的照片。現在它可以清楚地載入 /etc/fstab,因為它試圖從我們的交換分區恢復。
現在因為我們無法訪問伺服器,我們正在使用 Qemu 來嘗試調試問題,但我們永遠無法確定它的行為方式是否相同,而且每次我們在 sda1 上進行更改時,我們都需要重新啟動伺服器以便 qemu 看到更改,任何以其他方式執行此操作的指針都是受歡迎的。我們使用 qemu 的方式如下。
qemu-system-x86_64 -vnc :0 -hda /dev/sda -hdb /dev/sdb
我們已嘗試重新安裝最新的核心。試圖在沒有 raid-support 和強制 ext3 支持的情況下創建一個新的 initrd。從具有相同設置的伺服器複製 /boot。在幾乎所有可能的磁碟/分區上安裝 grub。
我不知道我還能嘗試什麼。非常感謝任何提示。
tl;dr:伺服器出現故障,由於“找不到文件系統錯誤”而無法重新啟動
你的 grub.conf 是什麼樣的?也許突然有一個錯誤配置的 root= 或 init= 參數?
如果不是這樣,當您通過基於 Debian 的救援系統掛載 CentOS / 分區時,是否存在 /dev 目錄?如果有,它是什麼樣子的?
stat
如果您使用or簽出,它是否與 /dev/sda1 資訊匹配ls -lah
?也許 /dev/root 指向錯誤的位置(或者,已使用錯誤的 mknod 參數創建)。是的,這些天 /dev 應該是非常動態的,但你永遠不會知道……在核心 2.4 天,我沖洗了我的一個 Gentoo 系統,並在我手動重新創建了一些設備節點後讓它啟動。
將 grub.conf 添加到原始問題後進行編輯:
grub.conf 的第一行 (boot=/dev/sda) 看起來很可疑。嘗試將其註釋掉並重新啟動。
如果這不起作用,您可能還想
/dev/sda1
用ls -lah
. 它應該如下所示:brw-r----- 1 root disk 104, 1 Sep 29 01:23 /dev/sda1
觀察類似於104, 1的值。然後創建*/dev/root*與
mknod -m 640 /dev/root b 104 1
根據您的更改 104 和 1 值。
希望這可以幫助!