Nichtflüchtigen Speicher zu Instanz hinzufügen

Erstellen Sie ein Nicht-Bootlaufwerk und hängen Sie es an Ihre VM an. Folgen Sie dazu der Anleitung auf dieser Seite.

Hinweise

Wenn Sie die Befehlszeilenbefehle (Command-Line Interface, CLI) von gdcloud verwenden möchten, müssen Sie die gdcloud-CLI heruntergeladen, installiert und konfiguriert haben. Für alle Befehle für Distributed Cloud wird die gdcloud- oder kubectl-CLI verwendet. Außerdem ist eine Betriebssystemumgebung erforderlich.

Pfad der kubeconfig-Datei abrufen

Damit Sie Befehle für den Management API-Server ausführen können, benötigen Sie die folgenden Ressourcen:

  1. Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.

  2. Verwenden Sie den Pfad zur kubeconfig-Datei des Management API-Servers, um MANAGEMENT_API_SERVER in dieser Anleitung zu ersetzen.

Berechtigungen und Zugriff anfordern

Zum Ausführen der auf dieser Seite aufgeführten Aufgaben benötigen Sie die Rolle „ProjectVirtualMachine Admin“. Prüfen Sie, ob Sie die Rolle „Project VirtualMachine Admin“ (project-vm-admin) im Namespace des Projekts haben, in dem sich die VM befindet.

Wenn Sie VM-Vorgänge über die GDC-Konsole oder die gdcloud-CLI ausführen möchten, bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die Rolle „Project VirtualMachine Admin“ und die Rolle „Project Viewer“ (project-viewer) zuzuweisen.

Laufwerk an eine VM anhängen

Erstellen Sie Nicht-Bootlaufwerke und hängen Sie sie an Ihre VM an. Für jedes zusätzliche Laufwerk kann ein benutzerdefiniertes Image oder ein leeres Laufwerk angegeben werden. Sie können einer VM mehrere Laufwerke gleichzeitig hinzufügen.

Console

  1. Klicken Sie im Navigationsmenü auf Virtuelle Maschinen > Instanzen.

  2. Klicken Sie in der Liste der VMs auf einen VM-Namen, um die Details aufzurufen.

  3. Klicken Sie auf Neues Laufwerk hinzufügen.

  4. Klicken Sie im Bestätigungsdialogfeld auf Beenden, um die VM zu beenden.

  5. Warten Sie einige Minuten, bis die VM beendet wurde.

  6. Klicken Sie auf Aktualisieren.

  7. Wenn sich die VM im Status „Beendet“ befindet, klicken Sie noch einmal auf Neues Laufwerk hinzufügen.

  8. Wählen Sie im Dialogfeld „Laufwerk hinzufügen“ ein neues oder ein vorhandenes Laufwerk aus.

    • Klicken Sie zum Bereitstellen eines neuen Laufwerks auf den Tab Neues Laufwerk.

      1. Geben Sie im Feld Laufwerksname einen neuen Laufwerksnamen ein, der für das Projekt eindeutig ist.
      2. Geben Sie im Feld Größe eine Laufwerkgröße zwischen 10 und 65.536 GiB ein. Beispiel: 10 GiB.
      3. Klicken Sie im Abschnitt Löschregel auf Laufwerk behalten oder Laufwerk löschen.
    • Wenn Sie ein vorhandenes Laufwerk auswählen möchten, klicken Sie auf den Tab Vorhandenes Laufwerk.

      1. Wählen Sie in der Liste Laufwerk ein Laufwerk aus.
      2. Klicken Sie im Abschnitt „Löschregel“ auf Laufwerk behalten oder Laufwerk löschen.
  9. Klicken Sie auf Speichern. Das Laufwerk wird in der Liste der Laufwerke für die VM angezeigt.

  10. Starten Sie die VM neu.

API

  1. Erstellen Sie ein VirtualMachineDisk:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: NON_BOOT_BLANK_DISK
    spec:
      size: NON_BOOT_BLANK_DISK_SIZE
    EOF
    
  2. Beenden Sie die VM.

  3. Fügen Sie VirtualMachineDisk dem vorhandenen VirtualMachine spec.disks hinzu:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Bearbeiten Sie Folgendes in Ihrem Texteditor:

    ...
    disks:
    - virtualMachineDiskRef:
        name: VM_BOOT_DISK_NAME
        boot: true
    - virtualMachineDiskRef:
        name: NON_BOOT_BLANK_DISK
        autoDelete: false
    ...
    

    Ersetzen Sie die Variablen anhand der folgenden Definitionen.

    VariableDefinition
    MANAGEMENT_API_SERVER Die kubeconfig-Datei des Management API-Servers.
    PROJECT Das Google Distributed Cloud Air-Gapped-Projekt (GDC), in dem die VM erstellt werden soll.
    VM_NAMEDer Name der neuen VM.
    VM_BOOT_DISK_NAMEDer Name des neuen VM-Bootlaufwerks.
    NON_BOOT_BLANK_DISKDer Name Ihres zusätzlichen Laufwerks.
    NON_BOOT_BLANK_DISK_SIZEDie Größe Ihrer zusätzlichen Laufwerke, z. B. 20G.
  4. Starten Sie die VM.

Nicht-Bootlaufwerk formatieren und bereitstellen

Nachdem Sie ein Laufwerk an die VM angehängt haben, führen Sie die folgenden erforderlichen Schritte aus, um es in der VM zugänglich zu machen.

Verbindung zur VM herstellen

Stellen Sie eine SSH-Verbindung zur VM her.

Laufwerk formatieren

  1. Listen Sie die Laufwerke auf, die an Ihre Instanz angehängt sind, und suchen Sie das Laufwerk, das Sie formatieren und bereitstellen möchten.

    ls -l /dev/disk/by-id/
    

    In dieser Beispielausgabe werden die Laufwerksnamen als Seriennummern angezeigt:

       total 0
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 ata-QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda
       lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-1ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda
       lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
    

    Die Informationen, die auf jeder Zeile nach dem Pfeil (->) stehen, geben den Namen des Laufwerkgeräts an. Im Beispiel scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb ist die Seriennummer scsi-SQEMU_QEMU_HARDDISK_vm-disk-data und der Gerätename sdb.

  2. Suchen Sie in dieser Liste nach der Seriennummer Ihrer Festplatte.

    Wichtiges situationsbedingtes Featureverhalten, das sich auf die Liste der Seriennummern auswirken kann:

    • Wenn der virtualMachineDiskRef.name-Wert länger als 20 Zeichen ist, werden nur die ersten 20 Zeichen als Seriennummer verwendet.
    • Wenn zwei Festplatten die gleichen ersten 20 Zeichen haben, hat nur die erste Festplatte eine Seriennummer.
  3. Formatieren Sie das Laufwerk:

   sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/DISK_ID
  • Ersetzen Sie DISK_ID durch die Seriennummer des Laufwerks, das Sie gerade formatieren.
  • In diesem Beispiel formatieren Sie mit scsi-SQEMU_QEMU_HARDDISK_vm-disk-data das gesamte Laufwerk ohne Partitionstabelle.

Verwenden Sie die empfohlenen Formatierungsoptionen für das Flag -E zur Optimierung der Leistung des Laufwerks. Da Sie auf Ihrem Sekundärlaufwerk keinen Speicherplatz für das Root-Volume reservieren müssen, geben Sie -m 0 an, um den gesamten verfügbaren Speicherplatz zu verwenden.

Laufwerk bereitstellen

  1. Erstellen Sie ein Verzeichnis als Bereitstellungspunkt für das neue Laufwerk. Sie können ein beliebiges Verzeichnis verwenden. Im folgenden Beispiel wird ein Verzeichnis in /mnt/disks/ erstellt:

    sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    Ersetzen Sie MOUNT_DIR durch das Verzeichnis, in dem Sie das Laufwerk bereitstellen möchten.

  2. Stellen Sie das Laufwerk für die Instanz bereit und aktivieren Sie die Option „discard“:

    sudo mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
    

    Ersetzen Sie Folgendes:

    • DISK_ID mit der Seriennummer des bereitzustellenden Datenträgers.
    • MOUNT_DIR durch das Verzeichnis, in dem Sie das Laufwerk bereitstellen möchten.
  3. Optional: Konfigurieren Sie Lese- und Schreibberechtigungen auf dem Laufwerk. Mit dem folgenden Befehl wird allen Nutzern Schreibzugriff (a+w) auf das Laufwerk gewährt:

    sudo chmod a+w /mnt/disks/MOUNT_DIR
    
  4. Optional: Automatische Bereitstellung beim Neustart der VM konfigurieren – mit der universellen eindeutigen Kennung (UUID) oder dem Startskript.

Automatische Bereitstellung beim Neustart der VM konfigurieren – UUID der Festplatte

Fügen Sie das Laufwerk Ihrer /etc/fstab-Datei hinzu, damit das Laufwerk automatisch bereitgestellt wird, wenn die VM neu gestartet wird. In einem Betriebssystem ändert sich der Gerätename bei jedem Neustart, die Geräte-UUID verweist jedoch immer auf dasselbe Volume, auch wenn Sie Laufwerke zwischen Systemen verschieben. Verwenden Sie daher immer die Geräte-UUID, um die automatische Bereitstellung beim Neustart der VM zu konfigurieren.

  1. Erstellen Sie eine Sicherungskopie Ihrer aktuellen /etc/fstab-Datei:

      sudo cp /etc/fstab /etc/fstab.backup
    
  2. UUID für das Laufwerk auflisten:

      sudo blkid /dev/DEVICE_NAME
    

    Die Beispielausgabe zeigt die UUID von accc19c5-d0d6-4157-9672-37d4e1d48eb5 für die Festplatte.

      /dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"
    

    DEVICE_NAME ist der Gerätename des Laufwerks, das Sie automatisch bereitstellen möchten. Wenn Sie eine Partitionstabelle auf dem Laufwerk erstellt haben, geben Sie die Partition an, die Sie bereitstellen möchten. Fügen Sie dazu das Suffix an den Gerätenamen an: Wenn beispielsweise sdb der Gerätename des Laufwerks ist und Sie Partition 1 bereitstellen möchten, wird DEVICE_NAME zu sdb1.

  3. Öffnen Sie die Datei /etc/fstab in einem Texteditor und erstellen Sie einen Eintrag mit der UUID:

      UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

    Ersetzen Sie Folgendes:

    • UUID_VALUE mit dem Laufwerk UUID, das als Ausgabe des Befehls UUID auflisten aufgeführt ist.
    • Ersetzen Sie MOUNT_DIR durch das Verzeichnis, in dem Sie das Laufwerk bereitgestellt haben.
    • MOUNT_OPTION mit dem MOUNT_OPTION-Wert für Ihr Betriebssystem. Dieser Wert gibt an, was das Betriebssystem tun soll, wenn es das Laufwerk beim Booten nicht bereitstellen kann.
  4. Prüfen Sie, ob Ihre /etc/fstab-Einträge korrekt sind:

      cat /etc/fstab
    

    Im Folgenden finden Sie ein Beispiel für die Ausgabe:

      LABEL=cloudimg-rootfs /    ext4   defaults    0 1
      LABEL=UEFI    /boot/efi   vfat    umask=0077  0 1
      UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

Wenn Sie dieses Laufwerk trennen oder einen Snapshot von dem Bootlaufwerk für diese VM erstellen, bearbeiten Sie die Datei /etc/fstab und entfernen den Eintrag für dieses Laufwerk. Auch wenn MOUNT_OPTION auf nofail oder nobootwait gesetzt ist, müssen Sie die Datei /etc/fstab mit den Geräten synchronisiert halten, die an Ihre VM angehängt sind. Entfernen Sie diese Einträge, bevor Sie den Snapshot des Bootlaufwerks erstellen oder das Laufwerk trennen.

Automatische Bereitstellung beim Neustart der VM konfigurieren – VM-Startskript

Sie können auch ein Startskript verwenden, um das Laufwerk bei jedem Neustart zu mounten. Fügen Sie dazu die Befehle aus Laufwerk mounten in ein Startskript ein. Bevor Sie das Skript zum Bereitstellen des Laufwerks hinzufügen, formatieren Sie das Laufwerk mit den Befehlen unter Laufwerk formatieren.

  1. Erstellen Sie das Secret für das Startskript.

    cat <<EOF >>mount-disk-script
    #!/bin/bash
    mkdir -p /mnt/disks/MOUNT_DIR
    mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
    EOF
    
    kubectl create secret -n PROJECT generic VM_NAME-mount-script --from-file=script=mount-disk-script
    
    rm mount-disk-script
    
  2. Fügen Sie das Startskript der VM hinzu.

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Bearbeiten Sie spec.startupScripts, um den Namen des Secrets einzufügen.

    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
    name: VM_NAME
    namespace: PROJECT
    spec:
    …
    startupScripts:
    - name: mount-script
      scriptSecretRef:
        name: VM_NAME-mount-script
    

Weitere Informationen zum Konfigurieren von Startskripts