Maschinen-Images erstellen

Ein Maschinen-Image dient dazu, alle Konfigurationen, Metadaten, Berechtigungen und Daten von mehreren Laufwerken für eine Compute Engine-Instanz zu speichern. Die Instanz, die Sie zum Erstellen eines Maschinen-Images verwenden, wird als Quellinstanz bezeichnet.

Informationen dazu, wann und wie Maschinen-Images verwendet werden, finden Sie unter Maschinen-Images.

In diesem Dokument werden die Schritte zum Erstellen eines Maschinen-Images aus einer Quellinstanz beschrieben.

Hinweis

Limits und Einschränkungen

  • Sie können maximal sechsmal pro Stunde ein Maschinen-Image einer bestimmten Instanz erstellen.
  • Sie können ein Maschinen-Image mit dem Cloud Key Management Service (Cloud KMS) oder einem vom Kunden bereitgestellten Verschlüsselungsschlüssel (Customer-Supplied Encryption Key, CSEK) schützen. Der Verschlüsselungsschlüssel schützt den Inhalt der Laufwerke. Metadaten sind jedoch nicht geschützt.
  • Wenn Sie Ihr Maschinen-Image mit einem CSEK schützen, wird während der Erstellung des Maschinen-Images eine vollständige Kopie aller Daten des Laufwerks gespeichert. In allen anderen Szenarien werden Daten des Laufwerks in differenziellen Kopien gespeichert.
  • Sie können keine Maschinen-Images aus Compute Engine-Quellinstanzen erstellen, die:

    • Eingebundene Laufwerke mit einer Gesamtkapazität von mehr als 200 TiB haben.
    • Keine angehängten Laufwerke haben
    • Angehängte Hyperdisk-Volumes haben
    • Verwenden Sie den Z3-Maschinentyp, mit Ausnahme von z3-highmem-192-highlssd-metal.
    • Verwenden Sie einen Maschinentyp vom Typ C3D, H3 oder A3.

    Für Instanzen, die das Erstellen von Maschinen-Images nicht unterstützen, können Sie stattdessen ein Betriebssystem-Image aus dem Bootlaufwerk der Instanz erstellen, wie unter Benutzerdefinierte Images erstellen beschrieben.

  • Sie können nicht gleichzeitig anzugebende und auszuschließende Laufwerke angeben.

Instanz- und Laufwerkattribute werden vom Maschinen-Images nicht unterstützt.

Wenn Sie Maschinen-Images aus Instanzen oder Instanzen aus Maschinen-Images erstellen, werden die folgenden Instanz- und Laufwerkattribute weder beibehalten noch wiederhergestellt:

  • disks.architecture
  • disks.description
  • disks.labels
  • disks.locked
  • disks.multiWriter
  • disks.onUpdateAction
  • disks.provisionedIops
  • disks.shieldedInstanceInitialState
  • disks.sourceImage
  • disks.sourceImageEncryptionKey
  • disks.sourceInstantSnapshot
  • disks.sourceSnapshot
  • disks.sourceSnapshotEncryptionKey
  • privateIpv6GoogleAccess
  • resourceManagerTags
  • resourcePolicies
  • secure_tag
  • shieldedInstanceConfig

Maschinen-Image aus einer Instanz erstellen

Standardmäßig enthält ein Maschinen-Image das Bootlaufwerk und alle anderen Laufwerke, die an die Compute Engine-Quellinstanz angehängt sind. Sie können optional angeben, welche Nicht-Bootlaufwerke ein- oder ausgeschlossen werden sollen. Das Bootlaufwerk kann jedoch nicht ausgeschlossen werden.

Maschinen-Image aus einer Instanz erstellen und alle angehängten Laufwerke einbeziehen

Sie können Maschinen-Images entweder mit der Cloud de Confiance Console, der Google Cloud CLI oder mit REST erstellen.

Zum Erstellen eines Maschinen-Images benötigen Sie die folgenden Informationen:

  • einen Namen für das Maschinen-Image, das Sie erstellen möchten;
  • den Namen der Quellinstanz;
  • die Zone, in der sich die Quellinstanz befindet;
  • eine optionale Beschreibung;
  • eine optionale storageLocation. Wenn Sie keinen Speicherort angeben, ist der Standardspeicherort der multiregionale Cloud Storage-Speicherort der Quellinstanz.
  • einen optionalen Verschlüsselungsschlüssel. Sie können zwischen einem Google Cloud-powered encryption key, einem Cloud Key Management Service (Cloud KMS)-Schlüssel oder einem vom Kunden bereitgestellten Verschlüsselungsschlüssel (CSEK) wählen. Wenn kein Verschlüsselungsschlüssel angegeben ist, werden die Maschinen-Images mit einem Google Cloud-powered encryption keyverschlüsselt.
  • Wenn Sie ein Maschinen-Image zum Erstellen von Klonen und Snapshots von Instanzen verwenden möchten, entfernen Sie die für die Instanz spezifischen Betriebssystem- und Anwendungsinformationen, bevor Sie das Maschinen-Image aus einer Instanz erstellen. Verwenden Sie beispielsweise für Windows-VM-Instanzen GCESysprep, um das System für die Replikation vorzubereiten.

Console

  1. Rufen Sie in der Cloud de Confiance Console die Seite Maschinen-Images auf.

    Zur Seite „Maschinen-Images“

  2. Klicken Sie auf Maschinen-Image erstellen.

  3. Geben Sie unter Name einen Namen für Ihr Maschinen-Image an.

  4. Optional: Geben Sie eine Beschreibung ein.

  5. Wählen Sie die Quell-VM-Instanz aus.

  6. Optional: Geben Sie an, wo das Maschinen-Image gespeichert werden soll. Wählen Sie entweder Multiregional oder Regional Storage aus. Weitere Informationen zum Speicherort finden Sie unter Storage-Speicherort des Maschinen-Images.

  7. Optional: Wählen Sie eine Verschlüsselungsmethode aus.

  8. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Befehl gcloud compute machine-images create, um ein Maschinen-Image aus einer Instanz zu erstellen.

gcloud compute machine-images create MACHINE_IMAGE_NAME \
    --source-instance=SOURCE_INSTANCE_NAME

Dabei gilt:

  • MACHINE_IMAGE_NAME: Name des Maschinen-Images, das Sie erstellen möchten.
  • SOURCE_INSTANCE_NAME: Name der Quellinstanz, aus der Sie das Image erstellen möchten.

Beispiel

Sie können beispielsweise mit dem folgenden gcloud-Befehl ein Maschinen-Image namens my-machine-image aus einer Quellinstanz namens my-instance erstellen:

gcloud compute machine-images create my-machine-image  \
    --source-instance=my-instance

Der Vorgang dauert einige Minuten. Nachdem das Maschinen-Image erstellt wurde, sieht die Ausgabe in etwa so aus:

Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image].
NAME               STATUS
my-machine-image   READY

REST

Erstellen Sie mit der API eine POST-Anfrage an die Methode machineimages.insert. Geben Sie im Anfragetext die folgende POST-Anfrage an:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages

{
  "name": "MACHINE_IMAGE_NAME",
  "sourceInstance": "SOURCE_INSTANCE_URL"
}

Dabei gilt:

  • PROJECT_ID: Projekt-ID.
  • MACHINE_IMAGE_NAME: Name des Maschinen-Images, das Sie erstellen möchten.
  • SOURCE_INSTANCE_URL: Vollständige oder Teil-URL der Quellinstanz, die Sie zum Erstellen des Maschinen-Images verwenden möchten. Beispiel: Sie haben eine Quellinstanz namens my-instance in einem Projekt namens myProject. Dementsprechend sind die folgenden URLs gültig:

    • https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instance
    • projects/myProject/global/instances/my-instance
    • global/instances/my-instance

Maschinen-Image erstellen und bestimmte Laufwerke einfügen (Vorabversion)

Mit der selektiven Laufwerksicherung können Sie ein Maschinen-Image erstellen, das bestimmte Nicht-Bootlaufwerke enthält oder ausschließt.

Mit selektiven Datenträger-Back-ups können Sie beim Erstellen eines Maschinen-Images die folgenden Aufgaben ausführen:

  • Bestimmte Nicht-Bootlaufwerke einbeziehen: Sie können ein Maschinen-Image erstellen, mit dem nur das Bootlaufwerk und eine bestimmte Liste von Nicht-Bootlaufwerken gesichert werden, die Sie angeben.

  • Bestimmte Nicht-Bootlaufwerke ausschließen: Sie können ein Maschinen-Image erstellen, mit dem das Bootlaufwerk und alle angehängten Nicht-Bootlaufwerke mit Ausnahme der in einer Ausschlussliste angegebenen Laufwerke gesichert werden.

Best Practices für Linux-Instanzen

Für Linux-Instanzen empfehlen wir die folgenden Best Practices:

  • Wenn Sie ein Maschinen-Image erstellen, in dem bestimmte Nicht-Boot-Laufwerke ausgeschlossen oder mithilfe einer Einschlussliste ausgelassen werden, muss in der Datei /etc/fstab auf Linux-Quell-Compute Engine-Instanzen die Option nofail für diese Laufwerke verwendet werden. So wird verhindert, dass die wiederhergestellte Compute Engine-Instanz nicht gestartet werden kann, wenn ein erwartetes Laufwerk fehlt.

  • Beim Booten einer Compute Engine-Instanz, die aus einem Maschinen-Image wiederhergestellt wurde, versucht das Betriebssystem, alle in /etc/fstab aufgeführten Laufwerke zu mounten. Wenn ein erwartetes Laufwerk fehlt und die Option nofail nicht angegeben ist, wird der Bootvorgang angehalten und die Instanz kann nicht gebootet werden. Informationen zu Workarounds für Bootfehler finden Sie unter Workarounds für Bootfehler, die durch das Ausschließen bestimmter Festplatten verursacht werden.

Nur bestimmte Festplatten einbeziehen

So erstellen Sie ein Maschinen-Image nur aus bestimmten Laufwerken: Sie müssen immer das Bootlaufwerk angeben. Sie können mit der Cloud de Confiance Console kein Maschinenimage aus bestimmten Laufwerken erstellen. Sie müssen die Google Cloud CLI oder REST verwenden.

Google Cloud CLI

Verwenden Sie den Befehl gcloud beta compute machine-images create, um ein Maschinen-Image nur aus bestimmten Laufwerken zu erstellen.

gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
    --source-instance=SOURCE_INSTANCE_NAME \
    --source-instance-zone=ZONE \
    --include-disks=BOOT_DISK,DISK_NAME_1,DISK_NAME_2

Ersetzen Sie Folgendes:

  • MACHINE_IMAGE_NAME: Der Name des Maschinen-Images, das Sie erstellen möchten.
  • SOURCE_INSTANCE_NAME: der Name der Quellinstanz, aus der Sie das Image erstellen möchten.
  • ZONE: Die Zone, in der sich die Quellinstanz befindet.
  • BOOT_DISK, DISK_NAME_1,DISK_NAME_2: Eine durch Kommas getrennte Liste des Bootlaufwerks und der Nicht-Bootlaufwerke, die an die Quellinstanz angehängt sind und die Sie in das Maschinen-Image aufnehmen möchten.

Mit dem folgenden gcloud-Befehl können Sie beispielsweise ein Maschinen-Image namens my-gmi-include aus einer Quellinstanz namens my-instance erstellen, die sich in us-central1-a befindet und nur data-disk-1 und data-disk-2 enthält:

gcloud beta compute machine-images create my-gmi-include \
    --source-instance=my-instance \
    --source-instance-zone=us-central1-a \
    --include-disks=boot-disk,data-disk-1,data-disk-2

REST

Erstellen Sie mit der API eine POST-Anfrage an die Methode machineimages.insert. Geben Sie im Anfragetext die folgende POST-Anfrage an:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages

{
  "name": "MACHINE_IMAGE_NAME",
  "sourceInstance": "SOURCE_INSTANCE_URL",
  "params": {
    "includedDisks": ["BOOT_DISK", "DISK_NAME_1", "DISK_NAME_2"]
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Projekts, das das Maschinen-Image enthält, z. B. my-project.
  • MACHINE_IMAGE_NAME: Name des Maschinen-Images, das Sie erstellen möchten.
  • SOURCE_INSTANCE_URL: Vollständige oder Teil-URL der Quellinstanz, die Sie zum Erstellen des Maschinen-Images verwenden möchten.
  • BOOT_DISK, DISK_NAME_1, DISK_NAME_2: Liste der Bootlaufwerke und Nicht-Bootlaufwerke, die an die Quellinstanz angehängt sind und die Sie in das Maschinen-Image aufnehmen möchten.

Maschinen-Image erstellen und bestimmte Laufwerke ausschließen (Vorabversion)

Gehen Sie nach der folgenden Anleitung vor, um ein Maschinen-Image zu erstellen und bestimmte Festplatten aus der Sicherung auszuschließen. Sie können das Bootlaufwerk nicht ausschließen. Sie können kein Maschinen-Image erstellen und bestimmte Laufwerke ausschließen, wenn Sie die Cloud de Confiance Console verwenden. Sie können die Google Cloud CLI oder REST verwenden.

gcloud

Verwenden Sie den Befehl gcloud beta compute machine-images create, um ein Maschinen-Image zu erstellen und bestimmte Laufwerke auszuschließen.

gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
    --source-instance=SOURCE_INSTANCE_NAME \
    --source-instance-zone=ZONE \
    --exclude-disks=DISK_NAME_1,DISK_NAME_2

Ersetzen Sie Folgendes:

  • MACHINE_IMAGE_NAME: Name des Maschinen-Images, das Sie erstellen möchten.
  • SOURCE_INSTANCE_NAME: Name der Quellinstanz, aus der Sie das Image erstellen möchten.
  • ZONE: Zone, in der sich die Quellinstanz befindet.
  • DISK_NAME_1,DISK_NAME_2: Durch Kommas getrennte Liste der Nicht-Bootlaufwerke, die an die Quellinstanz angehängt sind und die Sie aus dem Maschinen-Image ausschließen möchten.

Beispiel

Mit dem folgenden gcloud-Befehl können Sie beispielsweise ein Maschinen-Image namens my-gmi-exclude aus einer Quellinstanz namens my-instance erstellen, die sich in us-central1-a befindet, wobei temp-disk-1 und scratch-disk ausgeschlossen werden:

 gcloud beta compute machine-images create my-gmi-exclude \
    --source-instance=my-instance \
    --source-instance-zone=us-central1-a \
    --exclude-disks=temp-disk-1,scratch-disk

REST

Erstellen Sie mit der API eine POST-Anfrage an die Methode machineimages.insert. Geben Sie im Anfragetext die folgende POST-Anfrage an:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages

{
  "name": "MACHINE_IMAGE_NAME",
  "sourceInstance": "SOURCE_INSTANCE_URL",
  "params": {
    "excludedDisks": ["DISK_NAME_1", "DISK_NAME_2"]
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Projekts, das das Maschinen-Image enthält.
  • MACHINE_IMAGE_NAME: Name des Maschinen-Images, das Sie erstellen möchten.
  • SOURCE_INSTANCE_URL: Vollständige oder Teil-URL der Quellinstanz, die Sie zum Erstellen des Maschinen-Images verwenden möchten.
  • DISK_NAME_1, DISK_NAME_2: Liste der Nicht-Bootlaufwerke, die an die Quellinstanz angehängt sind und die Sie aus dem Maschinen-Image ausschließen möchten.

Problemumgehungen für Bootfehler, die durch das Ausschließen bestimmter Laufwerke verursacht werden

Wenn Sie eine Instanz aus einem Maschinen-Image erstellen, bei dem ein ausgeschlossenes Laufwerk einen Bootfehler verursacht, können Sie die Instanz mit einer der folgenden Problemumgehungen wiederherstellen:

  • Verbindung zur seriellen Konsole herstellen: Aktivieren Sie die interaktive serielle Konsole der nicht bootfähigen Compute Engine-Instanz und stellen Sie eine Verbindung zu ihr her. Melden Sie sich an, um die Datei /etc/fstab direkt zu bearbeiten und den fehlenden Festplatteneintrag zu entfernen oder die Option nofail hinzuzufügen.

  • Laufwerk tauschen: Wenn eine Compute Engine-Instanz nicht gestartet werden kann, weil ein Laufwerk aus dem Maschinen-Image ausgeschlossen wurde, aber weiterhin in /etc/fstab ohne die Option nofail aufgeführt ist, folgen Sie der Anleitung unten, um die Konfiguration mit der Google Cloud CLI zu reparieren.

    1. Beenden Sie die nicht bootfähige Compute Engine-Instanz mit dem Befehl gcloud compute instances stop:

      gcloud compute instances stop UNBOOTABLE_INSTANCE_NAME \
       --zone=ZONE
      

      Ersetzen Sie Folgendes:

      • UNBOOTABLE_INSTANCE_NAME: Name der nicht bootfähigen Compute Engine-Instanz.
      • ZONE: Zone, in der sich die Compute Engine-Instanzen befinden.
    2. Trennen Sie das Bootlaufwerk mit dem Befehl gcloud compute instances detach-disk:

      gcloud compute instances detach-disk UNBOOTABLE_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --zone=ZONE
      

      Ersetzen Sie Folgendes:

      • UNBOOTABLE_INSTANCE_NAME: Name der nicht bootfähigen Compute Engine-Instanz.
      • BOOT_DISK_NAME: Name des Bootlaufwerks, das an die nicht bootfähige Compute Engine-Instanz angehängt ist.
      • ZONE: Zone, in der sich die Compute Engine-Instanzen befinden.
    3. Hängen Sie das Laufwerk mit dem Befehl gcloud compute instances attach-disk als sekundäres Laufwerk an eine andere funktionierende Compute Engine-Instanz an:

      gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --zone=ZONE
      

      Ersetzen Sie Folgendes:

      • SECONDARY_INSTANCE_NAME: Name der sekundären Compute Engine-Arbeitsinstanz, die zum Reparieren des Laufwerks verwendet wird.
      • BOOT_DISK_NAME: Name des Bootlaufwerks, das an die nicht bootfähige Compute Engine-Instanz angehängt ist.
      • ZONE: Zone, in der sich die Compute Engine-Instanzen befinden.
    4. Stellen Sie das Laufwerk bereit und bearbeiten Sie die Datei /etc/fstab, um den problematischen Eintrag zu korrigieren. Gehen Sie dazu so vor:

      1. Stellen Sie eine SSH-Verbindung zur sekundären Compute Engine-Instanz her:

        gcloud compute ssh SECONDARY_INSTANCE_NAME \
        --zone=ZONE
        

        Ersetzen Sie Folgendes:

        • SECONDARY_INSTANCE_NAME: Name der sekundären Compute Engine-Arbeitsinstanz, die zum Reparieren des Laufwerks verwendet wird.
        • ZONE: Zone, in der sich die Compute Engine-Instanzen befinden.
      2. Ermitteln Sie das angehängte Laufwerk, in der Regel /dev/sdb oder ähnlich, mit lsblk:

        lsblk
        
      3. Erstellen Sie einen temporären Bereitstellungspunkt:

        sudo mkdir /mnt/repair
        
      4. Stellen Sie die Root-Partition bereit:

        sudo mount /dev/DEVICE_PARTITION /mnt/repair
        

        Ersetzen Sie DEVICE_PARTITION durch den Gerätenamen und die Partitionsnummer des angehängten sekundären Laufwerks auf der sekundären Compute Engine-Instanz (z. B. sdb1).

      5. Öffnen Sie die Datei fstab.

        sudo nano /mnt/repair/etc/fstab
        
      6. Fügen Sie entweder die Option nofail in den Eintrag der fehlenden Festplatte ein oder kommentieren Sie die Zeile vollständig aus, indem Sie am Anfang ein # hinzufügen.

      7. Speichern Sie die Datei und beenden Sie den Vorgang.

      8. Heben Sie die Bereitstellung des Laufwerks auf:

        sudo umount /mnt/repair
        
    5. Trennen Sie die Verbindung des Laufwerks zur sekundären Compute Engine-Instanz mit dem Befehl gcloud compute instances detach-disk:

      gcloud compute instances detach-disk SECONDARY_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --zone=ZONE
      

      Ersetzen Sie Folgendes:

      • SECONDARY_INSTANCE_NAME: Name der sekundären Compute Engine-Instanz, die zum Reparieren des Laufwerks verwendet wird.
      • BOOT_DISK_NAME: Name des Bootlaufwerks, das an die nicht bootfähige Compute Engine-Instanz angehängt ist.
      • ZONE: Zone, in der sich die Compute Engine-Instanzen befinden.
    6. Hängen Sie das Laufwerk mit dem Befehl gcloud compute instances attach-disk als Bootlaufwerk an die ursprüngliche Compute Engine-Instanz an:

      gcloud compute instances attach-disk UNBOOTABLE_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --boot \
       --zone=ZONE
      

      Ersetzen Sie Folgendes:

      • UNBOOTABLE_INSTANCE_NAME: Name der nicht bootfähigen Compute Engine-Instanz.
      • BOOT_DISK_NAME: Name des Bootlaufwerks, das an die nicht bootfähige Compute Engine-Instanz angehängt ist.
      • ZONE: Zone, in der sich die Compute Engine-Instanzen befinden.
    7. Starten Sie die reparierte Compute Engine-Instanz:

      gcloud compute instances start UNBOOTABLE_INSTANCE_NAME \
       --zone=ZONE
      

      Ersetzen Sie Folgendes:

      • UNBOOTABLE_INSTANCE_NAME: Name der nicht bootfähigen Compute Engine-Instanz.
      • ZONE: Zone, in der sich die Compute Engine-Instanzen befinden.

Nächste Schritte