Google 计算引擎无法正常启动,无法 SSH

Google 计算引擎无法正常启动,无法 SSH

我的 Google Compute Engine 实例无法正常启动,因此无论如何我都无法通过 SSH 连接它。我在该实例上有很多东西。我该如何恢复?

日志如下。当我尝试从 Windows 连接到网络时,我获得了 nat IP,但我无法使用 SSH,而 SSH 工作正常。我也无法从浏览器使用 SSH。

[    0.519999] md: autorun ...
[    0.520794] md: ... autorun DONE.
[    0.521761] VFS: Cannot open root device "sda1" or unknown-block(0,0): error -6
[    0.523744] Please append a correct "root=" boot option; here are the available partitions:
[    0.525886] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    0.527829] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.19.0-25-generic #26~14.04.1-Ubuntu
[    0.529875] Hardware name: Google Google, BIOS Google 01/01/2011
[    1.656059] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

答案1

在从试用版迁移到付费用户的过程中,我丢失了正在运行的实例,并出现了类似的症状。但是,就我而言,删除实例时自动删除磁盘的“标志”被选中,这阻止了我使用上述方法。以下是我恢复驱动器的方法:

首先,不要删除损坏的实例。你会需要它的。

  1. 从主控制台,识别与损坏实例相对应的磁盘的名称:“gcloud 计算磁盘列表
  2. 创建看似损坏的驱动器的快照:gcloud 计算磁盘快照 my-disk-1 --snapshot-names snapshot-1
  3. 从新创建的快照创建并启动实例(确保在创建新实例时关闭自动删除标志)。新创建的实例可能会遇到与原始实例完全相同的启动问题。这次没关系,因为您现在可以关闭并删除该实例,而不会丢失现在应该在使用 gcloud compute disks list 列出时可用的驱动器(例如:new_disk)。
  4. 删除实例后,您应该会剩下一个新的可安装驱动器。为此,请创建第三个实例,其操作系统特征与原始实例相似。
  5. 从 Google Cloud 控制台,使用 gcloud 命令将驱动器附加到该新实例(例如 ubuntu-trusty-3)。gcloud 计算实例附加磁盘 ubuntu-trusty-3 --disk DISK --设备名称 new_disk 现在该实例上应该有 2 个可用驱动器。

$ sudo blkid /dev/sda1: LABEL="cloudimg-rootfs" UUID="87f65d22-c9a9-428c-b1ab-b4ad9f8e4c05" TYPE="ext4" /dev/sdb1: LABEL="cloudimg-rootfs" UUID="87f65d22-c9a9-428c-b1ab-b4ad9f8e4c05" TYPE="ext4"

  1. 如果驱动器未出现,请重新启动该实例(sudo blkid)。

以下是我所看到的样子: 仪表板

就我而言,最让我吃惊的是内核从恢复的驱动器启动(gmap-server)然后我又开始工作了。我不知道内核是如何选择这个而不是在创建实例时创建的那个。如果有人知道,请在这里发表意见。

答案2

/etc/fstab 可能存在问题,其中 UUID 与磁盘 UUID 不匹配,因此操作系统无法使用正确的 UUID 挂载磁盘。

要对启动盘上的 /etc/fstab 进行必要的更改,您可以按照以下步骤操作:

  1. 删除您的实例没有删除启动盘(最好在删除实例之前对磁盘进行快照,以便有备份可以恢复)。
  2. 创建临时实例并将相关的启动磁盘作为辅助磁盘附加。
  3. 通过 SSH 连接到此实例并运行 $ sudo blkid 以获取辅助磁盘的 UUID。
  4. 挂载辅助磁盘。
  5. 现在您可以修改辅助磁盘上的 /DISK-MOUNT-PATH/etc/fstab。
  6. 保存更改并关闭实例。
  7. 完成后,您可以删除临时实例并使用原始磁盘创建一个新实例。

我希望这能有所帮助。

相关内容