两周前,我在 Google Compute Engine 上运行了两年的 Centos 7 VM 突然崩溃,串行控制台日志显示:
[ 1.668426] List of all partitions:
[ 1.669174] No filesystem could mount root, tried:
[ 1.669979] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[ 1.671773] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.0-957.27.2.el7.x86_64 #1
[ 1.673630] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
[ 1.675841] Call Trace:
[ 1.676467] [<ffffffffadb64147>] dump_stack+0x19/0x1b
[ 1.677456] [<ffffffffadb5d850>] panic+0xe8/0x21f
[ 1.678455] [<ffffffffae186761>] mount_block_root+0x291/0x2a0
[ 1.679508] [<ffffffffae1867c3>] mount_root+0x53/0x56
[ 1.680619] [<ffffffffae186902>] prepare_namespace+0x13c/0x174
[ 1.681535] [<ffffffffae1863df>] kernel_init_freeable+0x1f8/0x21f
[ 1.684161] [<ffffffffae185b1f>] ? initcall_blacklist+0xb0/0xb0
[ 1.685266] [<ffffffffadb52220>] ? rest_init+0x80/0x80
[ 1.686058] [<ffffffffadb5222e>] kernel_init+0xe/0x100
[ 1.686884] [<ffffffffadb76c37>] ret_from_fork_nospec_begin+0x21/0x21
[ 1.688183] [<ffffffffadb52220>] ? rest_init+0x80/0x80
[ 1.690932] Kernel Offset: 0x2c400000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
我可以在另一个实例中安装磁盘并读取数据。它只占用了 70%。在更大的实例中启动磁盘会产生相同的结果。
有什么建议吗?谢谢。
答案1
我遇到了同样的问题。我使用的是 Centos 7。
我发现我最新安装的内核崩溃了,导致了这个问题。
我设法使用旧内核登录它。
列出内核:
#rpm -q kernel
要删除最新内核:
#yum remove <kernel-3.10.0-1062.4.3.el7.x86_64>
(替换为你的最新内核)
重新启动机器,再次安装新内核,一切正常。
========
据我所知,在我们的案例中,当我们进行最新的 yum 更新时,我们在中途丢失了网络连接,这导致了问题。
答案2
当您的 /boot 分区已满或者您缺少该内核的 initramfs 时,可能会出现此问题。
选项 1 从 Ubuntu 高级选项下的 GRUB 菜单中选择另一个内核并运行
sudo update-initramfs -u -k version
这将生成版本的 initrd(将版本替换为内核版本字符串,例如 4.15.0-36-generic),然后
sudo update-grub
选项 #2 从 Ubuntu 高级选项下的 GRUB 菜单中选择另一个内核,并删除旧的 Linux 内核
sudo apt-get autoremove