Dieses Dokument enthält Informationen zur Fehlerbehebung bei VM-Startproblemen aufgrund von Kontingentfehlern und Bootlaufwerken.
Kontingentfehler
Wenn beim Versuch, eine Instanz zu starten, ein Kontingentfehler angezeigt wird, müssen Sie ein zusätzliches CPU-Kontingent anfordern. Weitere Informationen finden Sie im Abschnitt VM-Instanzen des Dokuments Ressourcenkontingente.
Bootlaufwerke
Wenn die Instanz nicht gestartet wird und Sie weder eine Verbindung zu ihr herstellen noch sich über die interaktive serielle Konsole anmelden können, müssen Sie ermitteln, warum das Bootlaufwerk nicht gebootet und gestartet wird.
Ermitteln, warum das Bootlaufwerk nicht gebootet wird
Prüfen Sie, ob das Bootlaufwerk voll ist.
Wenn das Bootlaufwerk voll ist und Ihr Betriebssystem die automatische Größenanpassung nicht unterstützt, können Sie keine Verbindung zur Instanz herstellen. Sie müssen eine neue Instanz erstellen und das Bootlaufwerk neu erstellen. Weitere Informationen finden Sie unter VMs oder vollständige Bootlaufwerke wiederherstellen.
Prüfen Sie die Ausgabe des seriellen Ports Ihrer VM-Instanz.
Die Debug-Meldungen des BIOS, Bootloaders und Kernels einer Instanz werden an den seriellen Port der Instanz ausgegeben und stellen dort wichtige Informationen über etwaige Fehler oder Probleme der Instanz zur Verfügung. Wenn Sie das Logging für die Ausgabe des seriellen Ports in Cloud Logging aktivieren, können Sie auch dann auf diese Informationen zugreifen, wenn die Instanz nicht ausgeführt wird.
Aktivieren Sie den interaktiven Zugriff auf die serielle Konsole.
Sie können den interaktiven Zugriff auf die serielle Konsole einer Instanz aktivieren, um sich anzumelden und Bootprobleme von der Instanz aus zu beheben, ohne dass die Instanz dafür vollständig gebootet sein muss. Weitere Informationen finden Sie unter Fehlerbehebung mit serieller Konsole.
Prüfen, ob das Klonen des Bootlaufwerks ausgeführt wird
Wenn das Klonen des Bootlaufwerks ausgeführt wird, können Sie die VM nicht starten und es wird ein Fehler wie der folgende angezeigt.
Failed to start example-vm: The instance resource 'projects/example-project/zones/us-central1-b/instances/example-vm' is already being used by 'projects/example-project/zones/us-central1-b/disks/clone'
Warten Sie, bis der Klon abgeschlossen ist, und starten Sie dann die VM.
Prüfen, ob der Snapshot des Bootlaufwerks ausgeführt wird
Wenn ein Snapshot des Bootlaufwerks ausgeführt wird, können Sie die VM nicht starten und es wird ein Fehler wie der folgende angezeigt:
The instance resource 'projects/example-project/zones/asia-east1-b/instances/example-vm' is already being used by 'projects/example-project/global/snapshots/example-vm-prod-asia-east1-b-abc'
Warten Sie, bis der Snapshot abgeschlossen ist, und starten Sie dann die VM.
Prüfen Sie, ob das Laufwerk über ein gültiges Dateisystem verfügt.
Wenn das Dateisystem beschädigt oder ungültig ist, kann die Instanz nicht gestartet werden. Prüfen Sie das Dateisystem des Laufwerks:
Trennen Sie das betreffende Laufwerk ggf. von allen Instanzen:
gcloud compute instances delete old-instance --keep-disks boot
Starten Sie eine neue Instanz mit dem neuesten von Google bereitgestellten Image:
gcloud compute instances create debug-instance
Hängen Sie das Laufwerk als Nicht-Bootlaufwerk an, stellen Sie es aber nicht bereit. Ersetzen Sie
DISK
durch den Namen des nicht bootenden Laufwerks. Notieren Sie sich den Gerätenamen, der das Laufwerk auf der Instanz identifiziert:gcloud compute instances attach-disk debug-instance \ --disk DISK \ --device-name debug-disk
Stellen Sie eine Verbindung zur Instanz her:
gcloud compute ssh debug-instance
Ermitteln Sie die Root-Partition des Laufwerks. Diese erkennen Sie an der
part1
-Notation. In diesem Fall befindet sich die Root-Partition des Laufwerks unter/dev/sdb1
:ls -l /dev/disk/by-id total 0 lrwxrwxrwx 1 root root 9 Jan 22 17:09 google-debug-disk -> ../../sdb lrwxrwxrwx 1 root root 10 Jan 22 17:09 google-debug-disk-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 Jan 22 17:02 google-persistent-disk-0 -> ../../sda lrwxrwxrwx 1 root root 10 Jan 22 17:02 google-persistent-disk-0-part1 -> ../../sda1 lrwxrwxrwx 1 root root 9 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk -> ../../sdb lrwxrwxrwx 1 root root 10 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda lrwxrwxrwx 1 root root 10 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
Führen Sie eine Dateisystemprüfung der Root-Partition aus:
sudo fsck /dev/sdb1 fsck from util-linux 2.20.1 e2fsck 1.42.5 (29-Jul-2012) /dev/sdb1: clean, 19829/655360 files, 208111/2621184 blocks
Stellen Sie das Dateisystem bereit:
sudo mkdir /mydisk
sudo mount /dev/sdb1 /mydisk
Prüfen Sie, ob das Laufwerk über Kernel-Dateien verfügt:
ls /mydisk/boot/vmlinuz-* /mydisk/boot/vmlinuz-3.2.0-4-amd64
Prüfen Sie, ob das Laufwerk über einen gültigen MBR (Master Boot Record) verfügt.
Führen Sie den folgenden Befehl für die Debug-Instanz aus, an die das nichtflüchtige Bootlaufwerk angehängt ist, zum Beispiel
/dev/sdb
:sudo parted /dev/sdb print
Wenn der MBR gültig ist, werden Informationen zum Dateisystem aufgeführt:
Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2097kB 10.7GB 10.7GB primary ext4 boot
Bootproblem beheben
Nachdem Sie die Ursache für den Fehler beim Booten und Starten ermittelt haben, können Sie das Problem mit einer der folgenden Aktionen beheben:
Verwenden Sie das importierte Image, um ein eigenständiges Bootlaufwerk zu erstellen.
Beginnen Sie von vorn und importieren Sie das Bootlaufwerk-Image noch einmal.
Eigenständiges Bootlaufwerk erstellen
Stellen Sie das importierte Image auf einem zweiten Laufwerk bereit, das einer temporären VM-Instanz hinzugefügt wurde. Verwenden Sie die Cloud Console oder díe gcloud CLI, um ein eigenständiges Laufwerk aus dem hochgeladenen Image sowie eine temporäre VM zu erstellen, an die das eigenständige Laufwerk angehängt ist. Sie können mit dieser Instanz Dateien auf dem eigenständigen Laufwerk ändern und Probleme beheben, die den Start des Images verhindern.
Console
Erstellen Sie aus dem importierten Bootlaufwerk-Image ein eigenständiges Laufwerk. Alternativ können Sie ein Bootlaufwerk von einer Instanz trennen und die Instanz mit dem frei gewordenen Bootlaufwerk erstellen.
- In the Google Cloud console, go to the Disks page.
- Click Create disk.
-
On the Create a disk page,
specify the following attributes:
-
Zone:
Select a zone near you. You must use this same zone when you create your temporary instance.
- Disk source type: Image
- Source image: Specify the name of the boot disk image that you imported.
-
Zone:
- To create the disk, click Create.
Erstellen Sie eine temporäre Instanz, der Sie das eigenständige Laufwerk hinzufügen können, und konfigurieren Sie den Bootloader so, dass er in der Umgebung der Cloud Console verwendet werden kann.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Geben Sie auf der Seite Neue Instanz erstellen einen Instanznamen und eine Zone an, in der die Instanz gespeichert wird. Die Zone muss mit der Zone identisch sein, in der Sie das eigenständige Laufwerk erstellt haben.
Erweitern Sie den Abschnitt Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten.
Klicken Sie unter dem Tab Laufwerke im Abschnitt Zusätzliche Laufwerke auf Vorhandenes Laufwerk hinzufügen. Ein neuer Abschnitt wird angezeigt.
Wählen Sie im Bereich Laufwerk das eigenständige Laufwerk aus, das Sie im Drop-down-Menü erstellt haben. Dadurch wird der Instanz das eigenständige Laufwerk hinzugefügt, sodass Sie es bereitstellen und den Inhalt des Laufwerks später ändern können.
Klicken Sie auf Fertig, um das Hinzufügen des Laufwerks abzuschließen.
Klicken Sie auf Erstellen, um die Instanz zu erstellen.
gcloud
Erstellen Sie aus dem importierten Bootlaufwerk-Image ein eigenständiges Laufwerk. Alternativ können Sie ein Bootlaufwerk von einer Instanz trennen und die Instanz mit dem frei gewordenen Bootlaufwerk erstellen.
gcloud compute disks create DISK_NAME \ --zone=ZONE \ --image=IMAGE_NAME
Dabei gilt:
DISK_NAME
ist der Name des neuen eigenständigen Laufwerks.
ist eine Zone in Ihrer Nähe. Wenn Sie die temporäre Instanz erstellen, müssen Sie dieselbe Zone verwenden.ZONE
IMAGE_NAME
ist der Name des importierten Bootlaufwerk-Images.
Erstellen Sie eine temporäre Instanz, der Sie das eigenständige Laufwerk hinzufügen können, und konfigurieren Sie den Bootloader so, dass er in der Umgebung der Cloud Console verwendet werden kann.
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --disk name=DISK_NAME
Dabei gilt:
INSTANCE_NAME
ist ein eindeutiger Name für Ihre Instanz.ZONE
ist die Zone, in der Sie das eigenständige Laufwerk erstellt haben.DISK_NAME
ist der Name des eigenständigen Laufwerks, das Sie aus dem importierten Bootlaufwerk-Image erstellt haben.
Nachdem Sie die Instanz mit dem hinzugefügten eigenständigen Laufwerk erstellt haben, ist eine virtuelle Umgebung vorhanden, in der Sie den Bootloader auf dem ursprünglichen Bootlaufwerk-Image ändern können.
Bootlaufwerk konfigurieren
Stellen Sie die Verbindung zur Instanz her, stellen Sie das eigenständige Laufwerk bereit und konfigurieren Sie den Bootloader so, dass er in Compute Engine ordnungsgemäß gebootet wird.
- Stellen Sie eine Verbindung zur temporären Instanz her. Verwenden Sie dazu den SSH-Browser oder den Befehl
gcloud compute ssh
. Identifizieren das zu ändernde Laufwerk sowie die bereitzustellenden Partitionen über den Befehl
blkid
. In diesem Beispiel ist/dev/sdb
das Laufwerk, das Sie importiert haben.lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk └─sda1 8:1 0 10G 0 part / sdb 8:16 0 100G 0 disk ├─sdb1 8:17 0 96G 0 part ├─sdb2 8:18 0 1K 0 part └─sdb5 8:21 0 4G 0 part
Stellen Sie die Root-Partition über das eigenständige Laufwerk im Verzeichnis
/tmp
bereit. In diesem Beispiel ist/dev/sdb1
die Root-Partition. Die anderen Partitionen müssen nicht geändert werden. Für Ihr Partitionsschema müssen Sie möglicherweise mehrere Partitionen bereitstellen, bevor Sie auf alle Dateien zugreifen können, die Sie ändern müssen.sudo mount /dev/sdb1 /tmp
Bearbeiten Sie Dateien, die verhindern können, dass das Laufwerk gestartet wird. Weitere Informationen finden Sie in der Anleitung zur Bootloader-Konfiguration.
Heben Sie die Bereitstellung des Bootlaufwerks über die temporäre Instanz auf.
sudo umount /tmp
Bootlaufwerk verwenden
Wenn Sie mit der Konfiguration dieses Laufwerks fertig sind, trennen Sie es und verwenden Sie es als Bootlaufwerk für die neue Instanz.
Console
Heben Sie die Bereitstellung des eigenständigen Laufwerks über die temporäre Instanz auf.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie in der Liste der Instanzen auf den Namen der temporären Instanz, in der Sie das eigenständige Bootlaufwerk geändert haben. Die Seite mit den Instanzdetails wird geöffnet.
Klicken Sie oben auf der Seite mit den Instanzdetails auf Bearbeiten.
Klicken Sie unter Zusätzliche Laufwerke neben dem eigenständigen Laufwerk auf das X, um anzugeben, dass Sie es von der temporären Instanz trennen möchten.
Klicken Sie auf Speichern, um die Änderungen zu speichern.
Verwenden Sie das getrennte eigenständige Laufwerk, um eine Instanz zu erstellen.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Geben Sie auf der Seite Neue Instanz erstellen einen Instanznamen und eine Zone an, in der die Instanz gespeichert wird. Die Zone muss mit der Zone identisch sein, in der Sie das eigenständige Laufwerk erstellt haben.
Klicken Sie unter Bootlaufwerk auf Ändern, um mit der Konfiguration Ihres Bootlaufwerks zu beginnen.
Wählen Sie auf dem Tab Vorhandene Laufwerke das eigenständige Bootlaufwerk aus, um es als Bootlaufwerk für diese neue Instanz zu verwenden.
Klicken Sie auf Erstellen, um die Instanz zu erstellen.
gcloud
Heben Sie die Bereitstellung des eigenständigen Laufwerks über die temporäre Instanz auf.
gcloud compute instances detach-disk INSTANCE_NAME \ --disk name=DISK_NAME
Dabei gilt:
INSTANCE_NAME
ist ein eindeutiger Name für Ihre Instanz.DISK_NAME
ist der Name des neuen eigenständigen Laufwerks.
Verwenden Sie das getrennte eigenständige Laufwerk, um eine Instanz zu erstellen.
gcloud compute instances create INSTANCE_NAME \ --zone ZONE \ --disk name=DISK_NAME,boot=yes
Dabei gilt:
INSTANCE_NAME
ist ein eindeutiger Name für Ihre Instanz.ZONE
ist die Zone, in der sich das eigenständige Laufwerk befindet.DISK_NAME
ist der Name des eigenständigen Laufwerks, das Sie aus dem importierten Bootlaufwerk-Image erstellt haben.
Testen Sie die erstellte Instanz mit dem geänderten Bootlaufwerk. Wenn Sie immer noch keine Verbindung zur Instanz herstellen können, prüfen Sie in der Ausgabe des seriellen Portd, wo der Bootvorgang fehlschlägt. Wiederholen Sie die Fehlerbehebung, bis die Probleme mit dem Bootlaufwerk-Image behoben sind.