Amazon EC2 實例無法啟動:核心恐慌 - 未同步:VFS:無法在未知塊 (0,0) 上掛載根 fs
我的實例執行了多年,突然停止響應 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=0
為default=1
. 我保存了文件,停止了新實例,將 EBS 卷重新附加到舊實例並啟動。我yum update
在舊實例中執行並仔細檢查/boot/grub/grub.conf
並再次檢查它是否會重新啟動。我還發現了有關 CentOS 核心更新的資訊:grub.conf missing initrd path after kernel update
我注意到在我跑之後
yum update
我現在有2個條目grub.conf
withoutinitrd
. 跑步# yum reinstall kernel.x86_64
可以解決這個問題。