![Google 计算引擎无法正常启动,无法 SSH](https://linux22.com/image/666947/Google%20%E8%AE%A1%E7%AE%97%E5%BC%95%E6%93%8E%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%90%AF%E5%8A%A8%EF%BC%8C%E6%97%A0%E6%B3%95%20SSH.png)
我的 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
在从试用版迁移到付费用户的过程中,我丢失了正在运行的实例,并出现了类似的症状。但是,就我而言,删除实例时自动删除磁盘的“标志”被选中,这阻止了我使用上述方法。以下是我恢复驱动器的方法:
首先,不要删除损坏的实例。你会需要它的。
- 从主控制台,识别与损坏实例相对应的磁盘的名称:“gcloud 计算磁盘列表“
- 创建看似损坏的驱动器的快照:gcloud 计算磁盘快照 my-disk-1 --snapshot-names snapshot-1
- 从新创建的快照创建并启动实例(确保在创建新实例时关闭自动删除标志)。新创建的实例可能会遇到与原始实例完全相同的启动问题。这次没关系,因为您现在可以关闭并删除该实例,而不会丢失现在应该在使用 gcloud compute disks list 列出时可用的驱动器(例如:new_disk)。
- 删除实例后,您应该会剩下一个新的可安装驱动器。为此,请创建第三个实例,其操作系统特征与原始实例相似。
- 从 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"
- 如果驱动器未出现,请重新启动该实例(sudo blkid)。
以下是我所看到的样子: 仪表板
就我而言,最让我吃惊的是内核从恢复的驱动器启动(gmap-server)然后我又开始工作了。我不知道内核是如何选择这个而不是在创建实例时创建的那个。如果有人知道,请在这里发表意见。
答案2
/etc/fstab 可能存在问题,其中 UUID 与磁盘 UUID 不匹配,因此操作系统无法使用正确的 UUID 挂载磁盘。
要对启动盘上的 /etc/fstab 进行必要的更改,您可以按照以下步骤操作:
- 删除您的实例没有删除启动盘(最好在删除实例之前对磁盘进行快照,以便有备份可以恢复)。
- 创建临时实例并将相关的启动磁盘作为辅助磁盘附加。
- 通过 SSH 连接到此实例并运行 $ sudo blkid 以获取辅助磁盘的 UUID。
- 挂载辅助磁盘。
- 现在您可以修改辅助磁盘上的 /DISK-MOUNT-PATH/etc/fstab。
- 保存更改并关闭实例。
- 完成后,您可以删除临时实例并使用原始磁盘创建一个新实例。
我希望这能有所帮助。