Nicht zugängliche VM wiederherstellen


Wenn Ihre Linux-VM aus irgendeinem Grund nicht zugänglich ist, können Sie sie möglicherweise mit den folgenden Schritten wiederherstellen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die benötigten Berechtigungen zum Wiederherstellen einer VM zu erhalten:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Wiederherstellen einer VM erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind für das Wiederherstellen einer VM erforderlich:

  • compute.instances.create für das Projekt
  • compute.disks.create für das Projekt
  • compute.instances.get für das Projekt
  • compute.disks.createSnapshot für Laufwerke
  • compute.instances.attachDisk auf der neuen VM
  • compute.disks.use auf dem Laufwerk
  • compute.instances.start auf der neuen und nicht zugänglichen VM
  • compute.instances.stop auf der neuen und nicht zugänglichen VM

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

VM wiederherstellen

Wenn Sie keine Verbindung zu Ihrer VM herstellen können oder Ihr Bootlaufwerk voll ist, müssen Sie eine temporäre VM erstellen, um die nicht zugängliche VM wiederherzustellen.

  1. (Optional) Beenden Sie die nicht zugängliche VM.
  2. Erstellen Sie einen Snapshot vom Bootlaufwerk der nicht zugänglichen VM. Wenn das Stammdateisystem auf mehrere Laufwerke verteilt ist, müssen Sie für jedes Laufwerk einen Snapshot erstellen.
  3. Erstellen Sie eine temporäre VM mit einem öffentlichen Image, das dem Betriebssystem der nicht zugänglichen VM am ähnlichsten ist. In einigen Fällen können Sie aufgrund einer Richtlinie für vertrauenswürdige Images keine Bootlaufwerke aus öffentlichen Images erstellen. In solchen Fällen müssen Sie einen Administrator bitten, diese Einschränkung vorübergehend aufzuheben, bevor Sie eine Rettungs-VM erstellen können. Weitere Informationen finden Sie unter Einschränkungen für den Image-Zugriff festlegen.
  4. Erstellen Sie für jeden der zuvor erstellten Snapshots der Bootlaufwerke der nicht zugänglichen VM ein neues Laufwerk aus dem Snapshot und hängen Sie es an die Rettungs-VM an. Gehen Sie dazu so vor:

    1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

      Zur Seite „VM-Instanzen“

    2. Klicken Sie auf den Namen der temporären VM, die Sie erstellt haben.

    3. Klicken Sie auf  Bearbeiten.

    4. Klicken Sie unter Zusätzliche Laufwerke auf  Neues Laufwerk hinzufügen und gehen Sie dann so vor:

      1. Fügen Sie den Namen des Laufwerks hinzu, z. B. my-recovery-disk.
      2. Wählen Sie als Quelltyp den Tab Snapshot aus.
      3. Wählen Sie im Drop-down-Menü Quell-Snapshot den Snapshot der Quell-VM aus, die Sie zuvor erstellt haben.
      4. Klicken Sie auf Fertig.
    5. Klicken Sie auf Speichern.

  5. Stellen Sie eine SSH-Verbindung zur temporären VM her.

  6. Ermitteln Sie den Namen jedes Laufwerks, das Sie zuvor an die VM angehängt haben, indem Sie den folgenden Befehl ausführen:

    lsblk -d -o NAME,SERIAL

    Die Ausgabe sieht in etwa so aus:

     NAME SERIAL
     sda  rescue-vm
     sdb  my-recovery-disk
     

    In diesem Beispiel ist rescue-vm das Bootlaufwerk der Rettungs-VM und my-recovery-disk das Bootlaufwerk aus dem Snapshot der nicht zugänglichen VM. Notieren Sie sich die NAME der VM, auf die Sie nicht zugreifen können, für den nächsten Schritt.

  7. Führen Sie für jedes der Laufwerke, die Sie zuvor an die VM angeschlossen haben, die folgenden Schritte aus:

    1. Ermitteln Sie das Dateisystem jeder Partition mit dem folgenden Befehl:

      fdisk -l /dev/NAME -o Device,Size,Type
      

      Ersetzen Sie NAME durch den Namen des Bootlaufwerks der nicht zugänglichen VM aus dem vorherigen Schritt. In diesem Beispiel wäre das sdb.

      Die Ausgabe sieht in etwa so aus:

      Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
      Disk model: PersistentDisk
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 4096 bytes
      Disklabel type: gpt
      Disk identifier: B31430F1-F041-4555-96B9-B2F43DC057AD
      
      Device     Size Type
      /dev/sdb1    2M BIOS boot
      /dev/sdb2   20M EFI System
      /dev/sdb3   10G Linux filesystem
      

      In der Spalte Type wird das Dateisystem jeder Partition aufgeführt. Wenn der Dateisystemtyp für eine Partition fehlt, führen Sie den folgenden Befehl aus:

      file -sL /dev/PARTITION_NAME
      

      Ersetzen Sie NAME durch den Namen der Partition.

      Die Ausgabe unterscheidet sich je nach Dateisystemtyp:

      • Kein Dateisystem: Wenn in der Ausgabe nur data angezeigt wird, enthält die Partition kein Dateisystem. Beispielausgabe:

        /dev/sdb1: data
        
      • EFI-Dateisystem: Wenn in der Ausgabe ein DOS/MBR-Bootsektor beschrieben wird, hat die Partition ein EFI-Dateisystem. Beispielausgabe:

        dev/sdb2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors
        4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/
        track 32, heads 64, serial number 0xf2af2664, label: "EFI        ", FAT (16 bit)
        
      • Linux-Dateisystem: Wenn die Ausgabe Dateisystemdaten beschreibt, ist die Partition ein Linux-Dateisystem. Beispielausgabe:

        /dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
        

      Notieren Sie sich den Partitionsnamen des Linux-Dateisystems.

    2. Erstellen Sie einen Bereitstellungspunkt unter /rescue:

      sudo mkdir /rescue
    3. Stellen Sie die Linux-Dateisystempartition unter /rescue bereit:

      sudo mount PARTITION_NAME /rescue
      

      Ersetzen Sie PARTITION_NAME durch den Namen des zuvor notierten Linux-Dateisystems.

    4. Wenn Sie das Stammverzeichnis des Dateisystems mit dem Befehl chroot ändern möchten, müssen Sie zusätzlich das virtuelle Dateisystem und die Geräte bereitstellen. Führen Sie dazu die folgenden Befehle aus:

      sudo mount -t proc /proc /rescue/proc
      sudo mount -t sysfs /sys /rescue/sys
      sudo mount -o bind /dev /rescue/dev
      sudo mount -o bind /dev/pts /rescue/dev/pts
      sudo mount -o bind /run /rescue/run
      

    Das Dateisystem des nicht zugänglichen Bootlaufwerks wird jetzt unter /rescue bereitgestellt. Sie können durch das Dateisystem navigieren, Konfigurationsdateien ändern, Probleme beheben oder die Daten abrufen.

Änderungen rückgängig machen und die nicht zugängliche VM neu starten

Nachdem das Problem behoben wurde oder die Daten abgerufen wurden, müssen Sie die eigentliche VM wiederherstellen. Führen Sie die folgenden Schritte aus, um die ursprüngliche VM wiederherzustellen:

  1. Heben Sie die Bereitstellung des zusätzlichen Laufwerks unter /rescue in der temporären VM auf:

     cd ~
     sudo umount /rescue

  2. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

    1. Wählen Sie die temporäre VM aus, die Sie erstellt haben.

    2. Klicken Sie auf Bearbeiten.

    3. Klicken Sie unter Zusätzliche Laufwerke für das in den vorherigen Schritten erstellte Laufwerk auf , um das zusätzliche Laufwerk von der temporären VM zu trennen.

    4. Klicken Sie auf Speichern.

  3. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

    1. Wenn die nicht zugängliche VM noch ausgeführt wird, beenden Sie die VM.

    2. Klicken Sie auf den Namen der VM, die Sie gerade beendet haben, und dann auf  Bearbeiten.

    3. Klicken Sie unter Bootlaufwerk auf Bootlaufwerk trennen, um das vorhandene Bootlaufwerk von der nicht zugänglichen VM zu trennen.

    4. Klicken Sie als Nächstes auf BOOTLAUFWERK KONFIGURIEREN, um das Laufwerk anzuhängen, das Sie zuvor auf dieser Seite unter VM wiederherstellen erstellt und repariert haben.

      1. Klicken Sie im Abschnitt Bootlaufwerk auf den Tab Vorhandene Laufwerke.
      2. Wählen Sie in der Drop-down-Liste das Laufwerk aus, das Sie im vorherigen Abschnitt erstellt haben, z. B. my-recovery-disk.
      3. Klicken Sie auf Auswählen und anschließend auf Speichern.
    5. Starten Sie die VM.

  4. Nun sollten Sie eine Verbindung zur VM über SSH herstellen können.