Centos

Amazon EC2 實例無法啟動:核心恐慌 - 未同步:VFS:無法在未知塊 (0,0) 上掛載根 fs

  • February 24, 2020

我的實例執行了多年,突然停止響應 6 月 1 日。我試圖重新啟動它,但它無法啟動。它在系統日誌中給出了錯誤:https ://pastebin.com/rSxr1kLs

Linux 版本 2.6.32-642.11.1.el6.x86_64 (mockbuild@c1bm.rdu2.centos.org) (gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)) #1 SMP Fri Nov 18 19:25:05 UTC 2016

核心命令行:root=/dev/xvde ro LANG=en_US.UTF-8 KEYTABLE=us

VFS:無法打開根設備“xvde”或未知塊(0,0)

請附加正確的“root=”啟動選項;以下是可用的分區:

核心恐慌 - 不同步:VFS:無法在未知塊(0,0)上掛載根 fs

/dev/sda1我嘗試根據文件分離 EBS 卷並重新附加它: https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html#FilesystemKernel

但是,它給出了一個錯誤Error attaching volume: Invalid value '/dev/sda1' for unixDevice. Attachment point /dev/sda1 is already in use,我無法附加它。我重新附加了它,/dev/sda但它仍然無法啟動,並且它仍然在系統日誌中給出錯誤。


我能夠在完全相同的可用區中啟動一個新實例,並將我的 EBS 卷附加為/dev/sdf. 它在實例內部顯示為/dev/xvdj. 我用mount /dev/xvdj /xvdj. 我可以看到grub.conf文件:

[root@ip-172-31-4-249 grub]# cat /xvdj/boot/grub/grub.conf
default=0
timeout=1

title CentOS (2.6.32-642.11.1.el6.x86_64)
       root (hd0)
       kernel /boot/vmlinuz-2.6.32-642.11.1.el6.x86_64 root=/dev/xvde ro crashkernel=auto LANG=en_US.UTF-8 KEYTABLE=us
title CentOS (2.6.32-504.30.3.el6.x86_64)
       root (hd0)
       kernel /boot/vmlinuz-2.6.32-504.30.3.el6.x86_64 root=/dev/xvde ro crashkernel=auto LANG=en_US.UTF-8 KEYTABLE=us
       initrd /boot/initramfs-2.6.32-504.30.3.el6.x86_64.img
title CentOS (2.6.32-504.3.3.el6.x86_64)
       root (hd0)
       kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 root=/dev/xvde ro crashkernel=auto LANG=en_US.UTF-8 KEYTABLE=us
       initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
title CentOS (2.6.32-504.el6.x86_64)
       root (hd0)
       kernel /boot/vmlinuz-2.6.32-504.el6.x86_64 root=/dev/xvde ro crashkernel=auto LANG=en_US.UTF-8 KEYTABLE=us
       initrd /boot/initramfs-2.6.32-504.el6.x86_64.img
title CentOS (2.6.32-431.29.2.el6.x86_64)
       root (hd0)
       kernel /boot/vmlinuz-2.6.32-431.29.2.el6.x86_64 root=/dev/xvde ro crashkernel=auto LANG=en_US.UTF-8 KEYTABLE=us
       initrd /boot/initramfs-2.6.32-431.29.2.el6.x86_64.img
title CentOS (2.6.32-431.23.3.el6.x86_64)
       root (hd0)
       kernel /boot/vmlinuz-2.6.32-431.23.3.el6.x86_64 root=/dev/xvde ro crashkernel=auto LANG=en_US.UTF-8 KEYTABLE=us
       initrd /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img

這與grub.conf正在執行的實例相比:

[root@ip-172-31-4-249 grub]# cat /boot/grub/grub.conf
default=0
timeout=1

title CentOS-6-x86_64-20130527-03 2.6.32-358.6.2.el6.x86_64
       root (hd0)
       kernel /boot/vmlinuz-2.6.32-358.6.2.el6.x86_64 root=/dev/xvde ro
       initrd /boot/initramfs-2.6.32-358.6.2.el6.x86_64.img

initrd第一個選項中沒有行有關係嗎?

我嘗試使用 將 EBS 卷掛載到新實例/dev/sda,但仍然無法啟動並出現相同的錯誤Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

中央作業系統 6

我通過轉到圖像 > AMI > 私有圖像 > 選擇啟動實例的圖像 > 啟動創建了一個新實例。我在完全相同的可用區啟動,不僅是美國或地區,而且 2a、2b、2c 也必須匹配。我停止了新實例。我斷開了 EBS 卷與舊實例的連接。我將 EBS 卷重新附加到新實例/dev/sdf。我啟動了新實例。EBS 卷顯示在實例內部,/dev/xvdj因此我使用mkdir /xvdj; mount /dev/xvdj /xvdj. 我編輯/xvdj/boot/grub/grub.conf並更改default=0default=1. 我保存了文件,停止了新實例,將 EBS 卷重新附加到舊實例並啟動。我yum update在舊實例中執行並仔細檢查/boot/grub/grub.conf並再次檢查它是否會重新啟動。

我還發現了有關 CentOS 核心更新的資訊:grub.conf missing initrd path after kernel update

我注意到在我跑之後yum update我現在有2個條目grub.confwithout initrd. 跑步# yum reinstall kernel.x86_64可以解決這個問題。

引用自:https://serverfault.com/questions/853951