要解决此问题,您应该在引导磁盘上运行 fsck 命令。
要做到这一点,您可以按照以下步骤操作:
-
stop你的虚拟机实例(不要删除):
gcloud compute instances stop [INSTANCE_NAME]
在从实例分离启动磁盘之前,您必须停止
实例。无需卸载磁盘。
-
detach VM 实例的启动盘(通常 DISK_NAME 与 INSTANCE_NAME 相同):
gcloud compute instances detach-disk [INSTANCE_NAME] --disk=[DISK_NAME]
-
create调试虚拟机实例:
gcloud compute instances create debug-instance
-
attach 你的启动盘作为调试实例的非启动盘,但不要挂载它:
gcloud compute instances attach-disk debug-instance --disk [DISK_NAME] --device-name debug-disk
-
connect 调试实例:
gcloud compute ssh debug-instance
- 查找磁盘的根分区,使用命令
ls -l /dev/disk/by-id(在本例中为/dev/sdb1)以part1 表示法标识:
$ ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 Feb 13 14:56 google-debug-disk -> ../../sdb
lrwxrwxrwx 1 root root 10 Feb 13 14:56 google-debug-disk-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 11 Feb 13 14:56 google-debug-disk-part14 -> ../../sdb14
lrwxrwxrwx 1 root root 11 Feb 13 14:56 google-debug-disk-part15 -> ../../sdb15
lrwxrwxrwx 1 root root 9 Feb 13 14:56 google-persistent-disk-0 -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 13 14:56 google-persistent-disk-0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 11 Feb 13 14:56 google-persistent-disk-0-part14 -> ../../sda14
lrwxrwxrwx 1 root root 11 Feb 13 14:56 google-persistent-disk-0-part15 -> ../../sda15
lrwxrwxrwx 1 root root 9 Feb 13 14:56 scsi-0Google_PersistentDisk_debug-disk -> ../../sdb
lrwxrwxrwx 1 root root 10 Feb 13 14:56 scsi-0Google_PersistentDisk_debug-disk-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 11 Feb 13 14:56 scsi-0Google_PersistentDisk_debug-disk-part14 -> ../../sdb14
lrwxrwxrwx 1 root root 11 Feb 13 14:56 scsi-0Google_PersistentDisk_debug-disk-part15 -> ../../sdb15
lrwxrwxrwx 1 root root 9 Feb 13 14:56 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 13 14:56 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 11 Feb 13 14:56 scsi-0Google_PersistentDisk_persistent-disk-0-part14 -> ../../sda14
lrwxrwxrwx 1 root root 11 Feb 13 14:56 scsi-0Google_PersistentDisk_persistent-disk-0-part15 -> ../../sda15
- 对根分区运行文件系统检查:
sudo fsck /dev/sdb1
例如:
debug-instance:~$ sudo fsck /dev/sdb1
fsck from util-linux 2.33.1
e2fsck 1.44.5 (15-Dec-2018)
/dev/sdb1: clean, 53782/647168 files, 396250/2588667 blocks
-
stop 调试实例 VM 实例和 detach 您的启动磁盘:
gcloud compute instances stop debug-instance
gcloud compute instances detach-disk debug-instance --disk [DISK_NAME]
-
reattach VM 实例的启动盘:
gcloud compute instances attach-disk [INSTANCE_NAME] --disk=[DISK_NAME] --boot
-
start 你的虚拟机实例:
gcloud compute instances start [INSTANCE_NAME]
-
check VM 实例通过串口的启动日志。
-
delete调试实例:
gcloud compute instances delete debug-instance
此外,请查看文档 Detaching and Reattaching Boot Disks 和 Troubleshooting VM start up。