Benutzerdefiniertes Image nach Google Cloud Storage exportieren

Wenn Sie Daten eines Compute Engine-Bootlaufwerks außerhalb eines Compute Engine-Projekts verschieben müssen, können Sie ein Bootlaufwerk-Image als tar.gz-Datei in Cloud Storage exportieren. Wenn Sie ein Image eines nichtflüchtigen Speichers erstellen müssen, das beim Erstellen neuer nichtflüchtiger Speicher in Compute Engine verwendet werden soll, lesen Sie Benutzerdefiniertes Image erstellen.

Sie können ein benutzerdefiniertes Image als Sicherung oder zur Freigabe exportieren. Exportieren Sie dafür das Image nach Cloud Storage. Diese Methode eignet sich ideal zur Freigabe einzelner Images für andere Projekte, die keinen Zugriff auf Ihre Images haben. Alternativ können Sie Images freigeben, indem Sie der Compute Engine Image-Nutzerrolle das Image oder das Projekt zuweisen, das sie enthält.

Das folgende Diagramm zeigt einige typische Arbeitsabläufe, um ein benutzerdefiniertes Image zu erstellen und wiederzuverwenden.

Beispiele für die Erstellung und Wiederverwendung von benutzerdefinierten Images
Abbildung 1. Beispiele für die Erstellung und Wiederverwendung von benutzerdefinierten Images

Hinweise

Images mit einem Befehl exportieren

In der Regel ist es am besten, ein Image mit dem Befehl gcloud compute images export nach Cloud Storage zu exportieren. Dieser Befehl verwendet Daisy, um die für den Export eines Images erforderlichen zahlreichen Schritte zu verknüpfen. Bei dem Befehl wird davon ausgegangen, dass Sie bereits ein Image erstellt haben, z. B. mit dem Befehl gcloud compute images create.

Führen Sie mit dem Befehlszeilentool "gcloud" den folgenden Befehl aus:

gcloud compute images export --destination-uri [DESTINATION_URI] \
    --image [IMAGE]

Dabei gilt:

  • [DESTINATION_URI] ist das Cloud Storage-URI-Ziel für die exportierte virtuelle Laufwerksdatei.
  • [IMAGE] ist der Name des zu exportierenden Laufwerk-Images.

Mit dem folgenden Befehl wird beispielsweise das Image my-image von my-project in den Cloud Storage-Bucket my-bucket exportiert. Standardmäßig wird das Image als disk.raw-Datei exportiert und als tar.gz-Datei komprimiert.

gcloud compute images export --destination-uri gs://my-bucket/my-image.tar.gz \
    --image my-image --project my-project

Eine Liste aller verfügbaren Flags finden Sie in der Referenzdokumentation zu gcloud compute images export.

Images manuell erstellen und exportieren

Wenn die Befehle gcloud compute images create und gcloud compute images export nicht Ihren Anforderungen entsprechen, können Sie ein Image aus einer Compute Engine-Instanz manuell erstellen und exportieren. Dieser Vorgang besteht aus einzelnen Schritten. Zuerst wird ein Image erstellt und dann das Image exportiert.

Beachten Sie im folgenden Beispiel, dass das erstellte Laufwerk als image-disk bezeichnet wird.

So erstellen und exportieren Sie ein Image:

  1. Gegebenenfalls ist es nötig, die Instanz zu beenden, der das Laufwerk hinzugefügt wurde, bevor Sie einen Snapshot erstellen. Durch Beenden der Instanz wird die Integrität der Festplatteninhalte im Snapshot sichergestellt.

  2. Erstellen Sie einen Snapshot des Laufwerks. Nennen Sie den Snapshot image-snapshot.

    gcloud compute disks snapshot [DISK_NAME] --snapshot-names image-snapshot
    

    Dabei ist [DISK_NAME] der Name des Laufwerks, von dem Sie den Snapshot erstellen.

  3. Verwenden Sie den Snapshot image-snapshot, um ein neues Laufwerk mit der Bezeichnung image-disk zu erstellen. Führen Sie hierfür den folgenden Befehl aus:

    gcloud compute disks create image-disk --source-snapshot image-snapshot
    
  4. Erstellen Sie für Ihre TAR-Datei ein temporäres Laufwerk mit der Bezeichnung temporary-disk und legen Sie seine Größe [SIZE] so fest, dass das Laufwerk mindestens 50 % größer als das Image-Laufwerk ist.

    Sie können das Laufwerk anschließend trennen und löschen.

    gcloud compute disks create temporary-disk --size [SIZE]
    

    Dabei ist [SIZE] die Größe des temporären Laufwerks in GB oder TB. Geben Sie beispielsweise 100GB an, um ein 100-Gigabyte-Laufwerk zu erstellen.

  5. Erstellen Sie eine neue Instanz und aktivieren Sie den Gültigkeitsbereich storage-rw in der Instanz. Hängen Sie außerdem image-disk und temporary-disk die sekundären Laufwerke mit spezifischen Attributen device-name an die Instanz an.

    gcloud compute instances create [INSTANCE_NAME] --scopes storage-rw \
        --disk name=image-disk,device-name=image-disk \
        --disk name=temporary-disk,device-name=temporary-disk
    

    [INSTANCE_NAME] ist der Name der Instanz, die Sie erstellen möchten.

    Achten Sie darauf, die Dienstkontenbereiche zu übertragen, damit Sie Ihre Datei später auf Google Cloud Storage hochladen können.

    Weitere Informationen finden Sie bei Bedarf in der Dokumentation Eine neue Instanz starten.

  6. Stellen Sie eine Verbindung zu Ihrer Instanz her:

    gcloud compute ssh [INSTANCE_NAME]
    

    [INSTANCE_NAME] ist die Instanz, mit der Sie eine Verbindung herstellen möchten.

  7. Formatieren Sie ein neues temporäres Laufwerk und stellen Sie es bereit. Der Formatierungsvorgang löscht alle Inhalte des temporären Laufwerks.

    sudo mkdir /mnt/tmp
    
    sudo mkfs.ext4 -F /dev/disk/by-id/google-temporary-disk
    
    sudo mount -o discard,defaults /dev/disk/by-id/google-temporary-disk /mnt/tmp
    
  8. Optional können Sie das Image-Laufwerk bereitstellen und zusätzliche Änderungen vornehmen, bevor Sie die TAR-Datei erstellen. Wenn Sie beispielsweise nicht möchten, dass die im Verzeichnis /home vorhandenen Daten Teil Ihres Images sind, müssen Sie diese löschen. Stellen Sie die Partitionen bereit, die Sie anpassen möchten, und ändern Sie die gewünschten Daten auf dem Laufwerk. Anschließend heben Sie die Bereitstellung des Laufwerks auf.

    1. Erstellen Sie ein Verzeichnis zum Bereitstellen Ihres Laufwerks oder Ihrer Partition.

      sudo mkdir /mnt/image-disk
      
    2. Verwenden Sie den Befehl ls, um festzustellen, welches Laufwerk oder welche Partition Sie bereitstellen müssen.

      ls /dev/disk/by-id/
      

      Der Befehl gibt eine Liste von Laufwerk-IDs und Partitionen aus. Das folgende Laufwerk verfügt beispielsweise über eine Partitionstabelle mit einer Partition. Die google-image-disk-ID verweist auf das komplette Laufwerk, von dem Sie ein Image erstellen möchten. Die google-image-disk-part1-ID verweist auf die erste Partition dieses Laufwerks. Stellen Sie die Partition bereit, wenn Sie Änderungen am Laufwerk vornehmen wollen, und erstellen Sie anschließend ein Image des kompletten Laufwerks.

      google-image-disk
      google-image-disk-part1
      
    3. Stellen Sie das Laufwerk oder die Partition bereit. Wenn Ihr Laufwerk über eine Partitionstabelle verfügt, stellen Sie die einzelnen Partitionen Ihres Laufwerks bereit. Stellen Sie z. B. google-image-disk-part1 bereit.

      sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk
      

      Wenn Ihre Festplatte im RAW-Format formatiert ist und keine Partitionstabelle besitzt, stellen Sie das komplette Laufwerk google-image-disk bereit.

      sudo mount /dev/disk/by-id/google-image-disk /mnt/image-disk
      
    4. Passen Sie die Dateien im Verzeichnis /mnt/image-disk an, um die Dateien auf dem Laufwerk zu konfigurieren. Unter Umständen möchten Sie die Datei /mnt/image-disk/home/[USER]/.ssh/authorized_keys entfernen, damit Ihre SSH-Schlüssel nicht freigegeben werden.

    5. Nachdem Sie die Dateien angepasst haben, heben Sie die Bereitstellung des Laufwerks auf.

      sudo umount /mnt/image-disk/
      
  9. Erstellen Sie eine TAR-Datei aus Ihrem Image.

    Wenn Sie mit der Anpassung Ihrer Dateien fertig sind, erstellen Sie auf Ihrem temporären Laufwerk eine Raw-Disk-Datei. Die Bezeichnung des Raw-Disk-Images muss 'disk.raw‘ lauten:

    sudo dd if=/dev/disk/by-id/google-image-disk of=/mnt/tmp/disk.raw bs=4096
    

    Wandeln Sie die Datei anschließend in eine TAR- und GZIP-Datei um.

    cd /mnt/tmp
    
    sudo tar czvf myimage.tar.gz disk.raw
    

    Dieser Befehl erstellt ein Image der Instanz am folgenden Speicherort:

    /mnt/tmp/myimage.tar.gz
    
  10. Laden Sie das Image in Google Cloud Storage hoch.

    Um eine TAR-Datei in Google Cloud Storage hochzuladen, verwenden Sie das auf Ihrer Instanz vorinstallierte Befehlszeilentool gsutil.

    1. Erstellen Sie mit gsutil einen Bucket.

      Lesen Sie sich vor Erstellung des Buckets die Bucket- und Benennungsrichtlinien durch. Anschließend erstellen Sie Ihren Bucket mit dem folgenden Befehl:

      me@example-instance:~$ gsutil mb gs://[BUCKET_NAME]

      [BUCKET_NAME] ist der Name des Buckets, den Sie erstellen möchten.

    2. Kopieren Sie die Datei in Ihren neuen Bucket.

      me@example-instance:~$ gsutil cp /mnt/tmp/myimage.tar.gz gs://[BUCKET_NAME]

      [BUCKET_NAME] ist der Bucket, in den Sie Ihre Dateien kopieren wollen.

Sie haben Ihre Datei nun erfolgreich nach Google Cloud Storage exportiert. Sie können nun Ihr Image für andere freigeben oder die TAR-Datei dazu nutzen, um ein neues Image zu Ihrem Projekt in der Google Cloud Platform Console hinzuzufügen.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation