无法在 GCP(Google Compute)上启动 Centos 机器

无法在 GCP(Google Compute)上启动 Centos 机器

我有一台 Centos 6 服务器,在过去 6 个月里一直在 Google Compute Platform 上正常运行。

如果没有重新启动 - 它今天早上就冻结了,重新启动时出现以下错误:

[    3.205240] VFS: Cannot open root device "UUID=e2eb8dc4-d9f9-48e8-9194-cdbff5f4513f" or unknown-block(0,0)
[    3.208204] Please append a correct "root=" boot option; here are the available partitions:
[    3.210557] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    3.213256] Pid: 1, comm: swapper veid: 0 Not tainted 2.6.32-673.8.1.lve1.4.3.1.el6.x86_64 #1
[    3.215642] Call Trace:
[    3.216263]  [<ffffffff81546288>] ? panic+0xa7/0x16f
[    3.217749]  [<ffffffff81c45515>] ? mount_block_root+0x208/0x2bd
[    3.219708]  [<ffffffff81002930>] ? bstat+0x200/0x8d0
[    3.221633]  [<ffffffff81c45620>] ? mount_root+0x56/0x5a
[    3.223300]  [<ffffffff81c45794>] ? prepare_namespace+0x170/0x1a9
[    3.225390]  [<ffffffff81c44ac2>] ? kernel_init+0x2e6/0x2fc
[    3.227119]  [<ffffffff8100971d>] ? __switch_to+0x7d/0x340
[    3.228979]  [<ffffffff8100c3ca>] ? child_rip+0xa/0x20
[    3.231076]  [<ffffffff81c447dc>] ? kernel_init+0x0/0x2fc
[    3.232883]  [<ffffffff8100c3c0>] ? child_rip+0x0/0x20

我已关闭该实例并将磁盘连接到另一台机器,然后:

  • 检查启动分区是否已满(没有单独的启动分区)
  • 检查 grub 默认设置为 0(不是 1)
  • 检查 /etc/fstab 是否具有磁盘的正确 UUID

答案1

这与 fstab 无关。这是因为您的 initramfs 无法找到根卷本身。这通常是由于初始 ramdisk 没有发现/挂载包含根的块设备所需的模块,或者缺少 GRUB 传递的正确根卷信息。

上述情况的一个例子是,由于没有找到基于 LVM 的根 LV 所需的 LVM 模块,initramfs 无法找到根的块设备。

另外,这可能是由于您的 GRUB 具有无效的 root= 条目,因为 initramfs 从 GRUB 获取有关应安装什么的信息(在启动期间传递)。确保您使用 UUID 来定义根卷,并且您在 GRUB 中指定的 UUID 与卷本身的 UUID 匹配。

看起来它没有找到任何可以安装的东西,这更像是 initramfs 中缺少模块的问题,而不是其他问题。您可能需要在 chroot 中重建 initramfs(使用可以访问该卷的实时操作系统)。Dracut 是您将用来重建 initramfs 的工具。

如果重建后问题仍然存在,那么提取 initramfs 并检查其内容将是一个明智的做法。在此过程中,如果您在 root mount 或 root pivot 失败时进入 initramfs shell,这将非常有帮助。如果是这种情况,您将很容易调查导致此问题的原因(因为该 shell 默认有很多工具)。

相关内容