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
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Cloud de Confiance by S3NS Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren:
Wählen Sie den Tab aus, der Ihrer geplanten Verwendung der Beispiele auf dieser Seite entspricht:
Console
Wenn Sie über die Cloud de Confiance Console auf Cloud de Confiance by S3NS Dienste und APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.
gcloud
-
Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an. Nach der Anmeldung initialisieren Sie die Google Cloud CLI mit dem folgenden Befehl:
gcloud init
-
- Legen Sie eine Standardregion und -zone fest.
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an.
Weitere Informationen finden Sie in der Dokumentation zur Cloud de Confiance -Authentifizierung unter Für die Verwendung von REST authentifizieren.
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.architecturedisks.descriptiondisks.labelsdisks.lockeddisks.multiWriterdisks.onUpdateActiondisks.provisionedIopsdisks.shieldedInstanceInitialStatedisks.sourceImagedisks.sourceImageEncryptionKeydisks.sourceInstantSnapshotdisks.sourceSnapshotdisks.sourceSnapshotEncryptionKeyprivateIpv6GoogleAccessresourceManagerTagsresourcePoliciessecure_tagshieldedInstanceConfig
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
Rufen Sie in der Cloud de Confiance Console die Seite Maschinen-Images auf.
Klicken Sie auf Maschinen-Image erstellen.
Geben Sie unter Name einen Namen für Ihr Maschinen-Image an.
Optional: Geben Sie eine Beschreibung ein.
Wählen Sie die Quell-VM-Instanz aus.
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.
Optional: Wählen Sie eine Verschlüsselungsmethode aus.
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 namensmy-instancein einem Projekt namensmyProject. Dementsprechend sind die folgenden URLs gültig:https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instanceprojects/myProject/global/instances/my-instanceglobal/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/fstabauf Linux-Quell-Compute Engine-Instanzen die Optionnofailfü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/fstabaufgeführten Laufwerke zu mounten. Wenn ein erwartetes Laufwerk fehlt und die Optionnofailnicht 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/fstabdirekt zu bearbeiten und den fehlenden Festplatteneintrag zu entfernen oder die Optionnofailhinzuzufü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/fstabohne die Optionnofailaufgeführt ist, folgen Sie der Anleitung unten, um die Konfiguration mit der Google Cloud CLI zu reparieren.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.
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.
Hängen Sie das Laufwerk mit dem Befehl
gcloud compute instances attach-diskals 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.
Stellen Sie das Laufwerk bereit und bearbeiten Sie die Datei
/etc/fstab, um den problematischen Eintrag zu korrigieren. Gehen Sie dazu so vor: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.
Ermitteln Sie das angehängte Laufwerk, in der Regel
/dev/sdboder ähnlich, mitlsblk:lsblk
Erstellen Sie einen temporären Bereitstellungspunkt:
sudo mkdir /mnt/repair
Stellen Sie die Root-Partition bereit:
sudo mount /dev/DEVICE_PARTITION /mnt/repair
Ersetzen Sie
DEVICE_PARTITIONdurch den Gerätenamen und die Partitionsnummer des angehängten sekundären Laufwerks auf der sekundären Compute Engine-Instanz (z. B.sdb1).Öffnen Sie die Datei
fstab.sudo nano /mnt/repair/etc/fstab
Fügen Sie entweder die Option
nofailin den Eintrag der fehlenden Festplatte ein oder kommentieren Sie die Zeile vollständig aus, indem Sie am Anfang ein#hinzufügen.Speichern Sie die Datei und beenden Sie den Vorgang.
Heben Sie die Bereitstellung des Laufwerks auf:
sudo umount /mnt/repair
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.
Hängen Sie das Laufwerk mit dem Befehl
gcloud compute instances attach-diskals 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.
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.