Instanz anhalten und fortsetzen

In diesem Dokument wird beschrieben, wie Sie eine VM-Instanz anhalten bzw. fortsetzen. Informationen zum Beenden und Starten einer Instanz finden Sie unter Instanzen starten und beenden. Informationen zum Instanzlebenszyklus finden Sie in der Dokumentation zum Lebenszyklus von Instanzen.

Beim Anhalten einer Instanz wird an das Betriebssystem der Instanz ein ACPI-S3-Suspend-Signal gesendet. Das Anhalten einer Instanz ähnelt dem Schließen eines Laptops. Die Instanz erhält dabei den Status SUSPENDED. Das Anhalten einer Instanz ist ideal für:

  • Entwicklungs- und Testumgebungen, die zu bestimmten Zeiten (z. B. abends oder am Wochenende) nicht vollständig genutzt werden. So lassen sich Kosten sparen und VM-Instanzen können schneller initialisiert werden, als die Erstellung neuer Instanzen dauern würde.
  • Anwendungen, die nach dem Starten der Instanz erst einmal lange initialisiert werden müssen, bevor die Anwendung zur Verarbeitung ihrer ersten Anfrage bereit ist. Beispiele für solche Anwendungen sind virtuelle Entwickler-Workstations oder komplexe Java-Anwendungen.

Das Anhalten einer Instanz unterscheidet sich so vom Beenden einer Instanz:

Wenn Sie die Instanz anhalten, wird ihr Arbeitsspeicher in den Speicher verschoben und die Instanz wird beibehalten. Während die Instanz angehalten bleibt, wird Ihnen nur der von Ihnen genutzte Speicher in Rechnung gestellt. Die statischen IP-Adressen bleiben erhalten, damit die Netzwerkfunktionen wie erwartet fortgeführt werden, wenn Ihre Instanz neu gestartet wird. Nachdem Sie die Instanz aktiviert haben, wird ihr Arbeitsspeicher zurück in den Arbeitsspeicher der Instanz verschoben und die Abrechnung für Ihre Instanz wird fortgesetzt.

Mit Ausnahme lokaler SSD-Daten bleiben alle Ressourcen weiter mit der Instanz verknüpft und werden abgerechnet. Dies gilt für persistente Festplatten und statische bzw. reservierte externe IP-Adressen. All diese Ressourcen werden gemäß der Preisübersicht abgerechnet, auch wenn eine Instanz angehalten wurde.

Sie können eine Instanz nicht mithilfe der Standardprozesse anhalten, die in die Gastumgebung eingebunden sind. Befehle wie systemctl suspend in Ubuntu 16.04 und höher sind nicht verfügbar. Sie können zum Anhalten einer Instanz nur das gcloud-Befehlszeilentool oder die Compute Engine API verwenden.

Wenn Sie den Arbeitsspeicher- und Gerätestatus der Instanz beim Fortsetzen nicht wiederherstellen möchten, können Sie die Instanz beenden. Dabei werden Ihnen keine zusätzlichen Gebühren für das Speichern berechnet.

Hinweis

Einschränkungen der Betaversion

In der Betaphase gelten für dieses Feature folgende Einschränkungen:

  • Sie können keine Instanzen anhalten, die eine GPU verwenden.
  • Sie können eine Instanz mit einer zugehörigen lokalen SSD anhalten. Allerdings müssen Sie ein spezielles Flag zum Verwerfen lokaler SSD-Daten für die lokalen SSD-Inhalte verwenden. Weitere Informationen finden Sie unter VM-Instanz anhalten.
  • Sie können eine Instanz nicht mithilfe der Standardprozesse anhalten, die in die Gastumgebung eingebunden sind. Befehle wie systemctl suspend in Ubuntu 16.04 und höher sind nicht verfügbar. Das Gastsignal wird ignoriert.
  • Sie können eine Instanz nur bis zu 60 Tage lang anhalten, bevor die VM-Instanz automatisch beendet wird.
  • Sie können keine Instanzen mit mehr als 120 GB Arbeitsspeicher anhalten.
  • Sie können Instanzen auf Abruf anhalten. Die Instanz auf Abruf wird jedoch möglicherweise beendet, bevor sie erfolgreich angehalten wird.
  • In der Betaphase kann Compute Engine den Arbeitsspeicherstatus "Beibehalten" einer angehaltenen Instanz verwerfen. Falls dies nötig ist, wird die Instanz in den Status TERMINATED versetzt und Sie können sie mit der Methode instances.start normal neu starten.
  • Sie können eine E2-Instanz nicht anhalten.

Betriebssystemkompatibilität

Die meisten in Compute Engine angebotenen Betriebssysteme unterstützen die Funktionen zum Anhalten und Fortsetzen, einige Betriebssysteme jedoch nicht. Anhand der folgenden Tabelle können Sie feststellen, ob ein Betriebssystem das Anhalten und Fortsetzen unterstützt.

Image-Familie Versionen Status Hinweise
Unterstützte Betriebssysteme
Ubuntu 16, 18, 19 oder höher Unterstützt
Container-Optimized OS 69, 73, 77, 81 oder höher Unterstützt
RHEL 7 Unterstützt
CentOS 7 Unterstützt
Windows 2012, 2016, 2019 oder höher Unterstützt
SUSE (SLES) 12, 15 oder höher Unterstützt
Debian 8, 9 Wird unterstützt, aber eine Konfiguration ist erforderlich Anleitung zur Konfiguration von Debian 8, 9
Nicht unterstütztes Betriebssystem
CentOS 6, 8 Nicht unterstützt
RHEL 6, 8 Nicht unterstützt
SQL Server auf Windows Server Alle Nicht unterstützt
RHEL für SAP Alle Nicht unterstützt
Debian 10 Nicht unterstützt
CoreOS Alle Nicht unterstützt

Preise

Wenn Sie eine Instanz anhalten, wird Ihnen Folgendes in Rechnung gestellt:

Instanz anhalten

Verwenden Sie zum Anhalten einer Instanz die Cloud Console, das gcloud-Tool oder die Beta API.

Sie können eine Instanz nicht mithilfe der Standardprozesse anhalten, die in die Gastumgebung eingebunden sind. Sie können eine Instanz mit der Cloud Console, dem gcloud-Befehlszeilentool oder der API anhalten.

Console

  1. Gehen Sie in der Cloud Console zur Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Wählen Sie eine oder mehrere Instanzen aus, die angehalten werden sollen.

  3. Klicken Sie auf Sperren.

  4. Wenn Sie lokale SSD-Daten verwerfen möchten, wählen Sie SSD-Inhalt verwerfen aus, wenn Sie dazu aufgefordert werden. Wenn die Instanz fortgesetzt wird, sind die Daten auf der mit der Instanz verbundenen lokalen SSD nicht mehr verfügbar.

gcloud

So halten Sie eine Instanz mit dem gcloud-Befehlszeilentool an:

 gcloud beta compute instances suspend VM_NAME

Nachdem Sie eine Anfrage zum Anhalten einer Instanz gestellt haben, kann es einige Zeit dauern, bis Compute Engine alle für die Instanz notwendigen Daten für den Erhalt vorbereitet hat. Während dieser Zeit wird Ihnen die Instanz weiterhin in Rechnung gestellt, solange sie noch ausgeführt wird.

Eine angehaltene Instanz hat den Status SUSPENDED. Mit einer describe-Anfrage können Sie den Status einer Instanz prüfen:

gcloud compute instances describe VM_NAME

Zum Anhalten einer Instanz mit lokalen SSD-Daten müssen Sie das Flag --discard-local-ssd angeben, um diese zu verwerfen:

gcloud beta compute instances suspend VM_NAME --discard-local-ssd

API

Senden Sie mithilfe der Methode instances.suspend eine Anfrage in der API:

https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/suspend

Ersetzen Sie dabei Folgendes:

  • PROJECT_ID: die Projekt-ID
  • ZONE: die Zone der VM
  • VM_NAME: die Instanz, die Sie anhalten möchten

Nachdem Sie eine Anfrage zum Anhalten einer Instanz gestellt haben, kann es einige Zeit dauern, bis Compute Engine alle für die Instanz notwendigen Daten für den Erhalt vorbereitet hat. Während dieser Zeit wird Ihnen die Instanz in Rechnung gestellt, solange sie noch ausgeführt wird.

Compute Engine kennzeichnet angehaltene Instanzen mit dem Status SUSPENDED. Mit einer GET-Anfrage können Sie den Status einer Instanz prüfen:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Der Status der Instanz lässt sich am Statusfeld ablesen. Beispiel:

...
"zone": "https://content.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
"status": "SUSPENDED",
"name": "example-vm",
...

Zum Anhalten einer Instanz mit lokalen SSD-Daten müssen Sie den optionalen Abfrageparameter discardLocalSsd angeben, um diese zu verwerfen:

https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/suspend?discardLocalSsd=true

Angehaltene Instanz fortsetzen

Verwenden Sie zum Fortsetzen einer angehaltenen Instanz die Cloud Console, das gcloud-Tool oder die Beta API.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Wählen Sie eine oder mehrere Instanzen aus, die fortgesetzt werden sollen.

  3. Klicken Sie auf Starten/Fortsetzen.

gcloud

So setzen Sie eine Instanz mit dem gcloud-Befehlszeilentool fort:

 gcloud beta compute instances resume VM_NAME

Nach einer Anfrage zum Fortsetzen einer Instanz kann es einige Zeit dauern, bis Compute Engine alle für die Instanz erforderlichen Daten wiederhergestellt hat. Während dieser Zeit wird Ihnen die Instanz in Rechnung gestellt, solange sie fortgesetzt wird.

Eine Instanz wird fortgesetzt, wenn sie als RUNNING markiert ist. Über eine Anfrage "describe" prüfen Sie den Status einer Instanz:

gcloud compute instances describe VM_NAME

API

Stellen Sie eine Anfrage an die Methode instances.resume:

https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/resume

Ersetzen Sie dabei Folgendes:

  • PROJECT_ID: die Projekt-ID für diese Anfrage
  • ZONE: die Zone der VM
  • VM_NAME: die Instanz, die fortgesetzt werden soll

Nach einer Anfrage zum Fortsetzen einer Instanz kann es einige Zeit dauern, bis Compute Engine alle für die Instanz erforderlichen Daten wiederhergestellt hat. Während dieser Zeit wird Ihnen die Instanz in Rechnung gestellt, solange sie fortgesetzt wird.

In Compute Engine werden angehaltene Instanzen mit dem Status RUNNING gekennzeichnet. Mit einer GET-Anfrage können Sie den Status einer Instanz prüfen:

GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance

Der Status der Instanz lässt sich am Statusfeld ablesen. Beispiel:

...
"zone": "https://content.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
"status": "RUNNING",
"name": "example-instance",
...

Instanzen mit verschlüsselten Laufwerken fortsetzen

Wenn die Instanz, die Sie fortsetzen möchten, vom Kunden bereitgestellte Verschlüsselungsschlüssel verwendet, müssen Sie diese Schlüssel zum Fortsetzen der Instanz angeben.

Setzen Sie die Instanz mit dem gcloud-Tool oder der API fort.

gcloud

Geben Sie den Schlüssel mit dem Flag --csek-key-file und den Namen der Instanz an, die gestartet werden soll. Wenn Sie einen mit RSA verpackten Schlüssel verwenden, nutzen Sie die Komponente gcloud beta:

gcloud beta compute instances resume VM_NAME \
  --csek-key-file ENCRYPTION_KEY_FILE

Ersetzen Sie dabei Folgendes:

  • VM_NAME: der Name der Instanz
  • ENCRYPTION_KEY: der relative Pfad zu der Datei, die den Verschlüsselungsschlüssel enthält, mit dem Sie an die Instanz angehängte nichtflüchtige Speicher verschlüsselt haben

API

Erstellen Sie eine POST-Anfrage an die Methode instances.resume, um die Instanz mithilfe eines Verschlüsselungsschlüssels fortzusetzen.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/resume
{
  "disk": [
    {
       "source": "DISK_NAME",
       "diskEncryptionKey": {
         "rsaEncryptedKey": "ENCRYPTION_KEY"
       }
    }
  ]
}

Ersetzen Sie dabei Folgendes:

  • VM_NAME: der Name der Instanz
  • PROJECT_ID: die Projekt-ID für diese Anfrage
  • ZONE: die Zone für diese Instanz
  • DISK_NAME: das angehängte Laufwerk, das mit einem vom Kunden bereitgestellten Verschlüsselungsschlüssel verschlüsselt wurde
  • ENCRYPTION_KEY: der Verschlüsselungsschlüssel, mit dem Sie nichtflüchtige Speicher verschlüsseln, die an die Instanz angehängt sind

Jedes verschlüsselte Laufwerk muss mit dem passenden diskEncryptionKey aufgelistet werden, da Compute Engine diese Schlüssel nicht auf den eigenen Servern speichert, während die Instanz den Status SUSPENDED hat.

Anhaltevorgang

Wenn Sie eine Anfrage zum Anhalten stellen, senden Sie ein ACPI-Suspend-Signal an die VM-Instanz. Wenn die VM nicht innerhalb von wenigen Minuten auf das ACPI-S3-Suspend-Signal reagiert, bricht Compute Engine den Anhalteversuch ab und setzt die VM in den Status RUNNING zurück.

In der folgenden Tabelle wird beschrieben, wie sich das Anhalten einer VM-Instanz auf ihre zugehörigen Ressourcen auswirkt:

Ressource Unterstützung
Arbeitsspeicher Nur VMs mit höchstens 120 GB Arbeitsspeicher können angehalten werden.
Lokale SSD Lokale SSD-Daten werden verworfen.
Nichtflüchtiger Speicher Nichtflüchtige HDDs und SSDs bleiben erhalten.
IP-Adressen Sitzungsspezifische IP-Adressen werden während des Anhaltens freigegeben. Statische IP-Adressen bleiben jedoch mit den VM-Instanzen verbunden. Wenn Sie Ihre sitzungsspezifische ID behalten möchten, können Sie sie hochstufen.
VM-Konfiguration (z. B. Maschinentyp, Metadaten, Labels usw.) Alle VM-Konfigurationen (mit Ausnahme sitzungsspezifischer IP-Adressen) bleiben erhalten und werden wiederhergestellt, wenn die Instanz fortgesetzt wird.

Lokale SSDs und VMs auf Abruf

Lokale SSD-Daten bleiben beim Anhalten einer Instanz nicht erhalten. Beim Anhalten einer Instanz mit einer lokalen SSD wird standardmäßig ein Fehler zurückgegeben. Sie können dieses Standardverhalten jedoch ändern, indem Sie ein Flag zum Verwerfen lokaler SSD-Daten festlegen. So kann die Instanz angehalten und später fortgesetzt werden, wobei jedoch die Daten auf der lokalen SSD verloren gehen. In diesem Szenario setzt Compute Engine die Instanz mit der gleichen Anzahl von angehängten lokalen SSD-Volumes fort. Die Volumes sind jedoch leer und nicht initialisiert.

Sie können eine VM auf Abruf anhalten. Wenn jedoch das vorzeitige Beenden (nicht die Vorabwarnung, die vor dem vorzeitigen Beenden angezeigt wird) vor Abschluss des Anhaltevorgangs ausgeführt wird, wird der Anhaltevorgang abgebrochen und die Instanz vorzeitig beendet.

Debian-VM zur Unterstützung von Anhalten und Fortsetzen konfigurieren

VMs, auf denen Debian 8 und 9 ausgeführt wird, können angehalten und fortgesetzt werden. Allerdings müssen sie zuvor entsprechend konfiguriert werden. Führen Sie zum Konfigurieren der Debian-Instanz eine der Anleitungen unter Option A oder Option B aus. Wir empfehlen, nach Möglichkeit ACPID zu konfigurieren (Option A).

Option A

Mit dieser Option wird ACPID so konfiguriert, dass das Schaltflächenereignis für den Ruhemodus verarbeitet wird. Darüber hinaus wird ein Shell-Skript für die Verarbeitung des Ruhemodusereignisses hinzugefügt.

  1. Stellen Sie eine SSH-Verbindung zur VM-Instanz her:

    gcloud compute ssh VM_NAME
    
  2. Erstellen Sie auf der VM-Instanz ein Verzeichnis im Ordner acpi:

    sudo mkdir -p /etc/acpi/events/
    
  3. Konfigurieren Sie ACPID so, dass das Schaltflächenereignis für den Ruhemodus verarbeitet wird:

    cat <<EOF | sudo tee /etc/acpi/events/sleepbtn-acpi-support
    event=button[ /]sleep
    action=/etc/acpi/sleepbtn-acpi-support.sh
    EOF
    
  4. Erstellen Sie das Skript zur Verarbeitung von Ruhemodusereignissen:

    cat <<EOF | sudo tee /etc/acpi/sleepbtn-acpi-support.sh
    #!/bin/sh
    echo mem > /sys/power/state
    EOF
    
  5. Legen Sie die Berechtigungen für das Skript fest:

    sudo chmod 755 /etc/acpi/sleepbtn-acpi-support.sh
    
  6. Starten Sie ACPID neu:

    sudo systemctl restart acpid.service
    

Option B

  1. Stellen Sie eine SSH-Verbindung zur VM-Instanz her:

    gcloud compute ssh VM_NAME
    
  2. Installieren Sie dbus auf der VM-Instanz:

    sudo apt-get install dbus
    
  3. Starten Sie logind neu:

    sudo systemctl restart systemd-logind.service
    

Nächste Schritte