In diesem Dokument finden Sie eine Anleitung zum Anhängen eines nichtflüchtigen VM-Laufwerks an eine Instanz in Google Distributed Cloud (GDC) mit Air Gap.
Hängen Sie Nicht-Bootlaufwerke an Ihre VM an, um Ihre spezifischen Arbeitslastanforderungen zu erfüllen. Durch die Entkopplung des Speichers von der VM-Instanz bleiben Ihre kritischen Daten unabhängig vom VM-Lebenszyklus erhalten. Gleichzeitig werden Leistung und Kapazität automatisch an die Anforderungen Ihrer Arbeitslast angepasst.
Dieses Dokument richtet sich an Entwickler in Plattformadministrator- oder Anwendungsoperatorgruppen, die VM-Laufwerke in einer Distributed Cloud-Umgebung hinzufügen und konfigurieren. Weitere Informationen finden Sie unter Zielgruppen für die Dokumentation zu GDC mit Air Gap.
Hinweis
Wenn Sie gdcloud-Befehle der Befehlszeile (CLI) verwenden möchten, müssen Sie die gdcloud-Befehlszeile heruntergeladen, installiert und konfiguriert haben.
Alle Befehle für Distributed Cloud verwenden die gdcloud- oder kubectl-Befehlszeile und erfordern eine Betriebssystemumgebung.
Pfad der kubeconfig-Datei abrufen
Wenn Sie Befehle auf dem Management API-Server ausführen möchten, benötigen Sie die folgenden Ressourcen:
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.
Verwenden Sie den Pfad zur kubeconfig-Datei des Management API-Servers, um
MANAGEMENT_API_SERVERin dieser Anleitung zu ersetzen.
IAM-Rollen anfordern
Bitten Sie Ihren IAM-Projektadministrator, Ihnen die folgenden Rollen für Ihr Projekt zuzuweisen:
Virtual Machine Project Admin (
project-vm-admin): VMs im Projekt-Namespace erstellen, ändern, auflisten und löschen.Project Viewer(
project-viewer): Kann alle Ressourcen in den Projekt-Namespaces aufrufen.
Alle VM-Rollen müssen an den Namespace des Projekts gebunden sein, in dem sich die VM befindet. Folgen Sie der Anleitung, um Ihren Zugriff zu bestätigen.
Laufwerk an eine VM anhängen
Nicht-Bootlaufwerke erstellen und an die VM anhängen 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
Klicken Sie im Navigationsmenü auf Virtuelle Maschinen > Instanzen.
Klicken Sie in der Liste der VMs auf einen VM-Namen, um die Details aufzurufen.
Klicken Sie auf Neues Laufwerk hinzufügen.
Klicken Sie im Bestätigungsdialogfeld auf Beenden, um die VM zu beenden.
Warten Sie einige Minuten, bis die VM beendet wurde.
Klicken Sie auf Aktualisieren.
Wenn die VM beendet ist, klicken Sie noch einmal auf Neues Laufwerk hinzufügen.
Wählen Sie im Dialogfeld „Laufwerk hinzufügen“ ein neues oder ein vorhandenes Laufwerk aus.
Klicken Sie auf den Tab Neues Laufwerk, um ein neues Laufwerk bereitzustellen.
- Geben Sie im Feld Laufwerksname einen neuen Laufwerksnamen ein, der im Projekt eindeutig ist.
- Geben Sie im Feld Größe eine Laufwerksgröße zwischen 10 und 65.536 GiB ein. Beispiel: 10 GiB.
- 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.
- Wählen Sie in der Liste Laufwerk ein Laufwerk aus.
- Klicken Sie im Abschnitt „Löschregel“ auf Laufwerk behalten oder Laufwerk löschen.
Klicken Sie auf Speichern. Das Laufwerk wird in der Liste der Laufwerke für die VM angezeigt.
API
Erstellen Sie ein
VirtualMachineDisk:kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ apply -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineDisk metadata: name: NON_BOOT_BLANK_DISK spec: size: NON_BOOT_BLANK_DISK_SIZE EOFFügen Sie die
VirtualMachineDiskdem vorhandenenVirtualMachinespec.diskshinzu:kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAMEBearbeiten 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.
Variable Definition MANAGEMENT_API_SERVERDie kubeconfig-Datei des Management API-Servers. PROJECTDas Google Distributed Cloud mit Air Gap-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 des zusätzlichen Laufwerks. NON_BOOT_BLANK_DISK_SIZEDie Größe Ihrer zusätzlichen Laufwerke, z. B. 20G.
Nicht-Bootlaufwerk formatieren und bereitstellen
Nachdem Sie ein Laufwerk an die VM angehängt haben, führen Sie die folgenden 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
Listen Sie die Laufwerke, die an Ihre Instanz angehängt sind, nach Seriennummer auf 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 -> ../../sdbDie Informationen nach dem Pfeil
->in jeder Zeile geben den Namen des Laufwerks an. Inscsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdblautet die Seriennummer beispielsweisescsi-SQEMU_QEMU_HARDDISK_vm-disk-dataund der Gerätename istsdb.Suchen Sie in dieser Liste nach der Seriennummer Ihres Laufwerks.
Wichtiges Verhalten von situationsabhängigen Funktionen, 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 Laufwerke dieselben ersten 20 Zeichen haben, hat nur das erste Laufwerk eine Seriennummer.
- Wenn der
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_IDdurch die Seriennummer des Laufwerks, das Sie gerade formatieren. - In diesem Beispiel formatieren Sie mit
scsi-SQEMU_QEMU_HARDDISK_vm-disk-datadas gesamte Laufwerk ohne Partitionstabelle.
Verwenden Sie die empfohlenen Formatierungsoptionen im Flag -E, um die Laufwerkleistung zu maximieren. Da Sie keinen Speicherplatz für das Root-Volume auf Ihrem sekundären Laufwerk reservieren müssen, geben Sie -m 0 an, um den gesamten verfügbaren Speicherplatz zu verwenden.
Laufwerk bereitstellen
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_DIRErsetzen Sie
MOUNT_DIRdurch das Verzeichnis, in dem Sie das Laufwerk bereitstellen möchten.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_DIRErsetzen Sie Folgendes:
DISK_IDdurch die Seriennummer des bereitzustellenden Laufwerks.MOUNT_DIRdurch das Verzeichnis, in dem Sie das Laufwerk bereitstellen möchten.
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_DIROptional: Automatische Bereitstellung beim Neustart der VM konfigurieren – mit der UUID (Universally Unique Identifier) oder dem Startskript.
Automatische Bereitstellung beim Neustart der VM konfigurieren – Laufwerk-UUID
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, aber die Geräte-UUID verweist 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.
Erstellen Sie eine Sicherung Ihrer aktuellen
/etc/fstab-Datei:sudo cp /etc/fstab /etc/fstab.backupListen Sie die UUID für das Laufwerk auf:
sudo blkid /dev/DEVICE_NAMEIn der Beispielausgabe wird die UUID
accc19c5-d0d6-4157-9672-37d4e1d48eb5für das Laufwerk angezeigt./dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"DEVICE_NAMEist der Gerätename des Laufwerks, das Sie automatisch bereitstellen möchten. Wenn Sie eine Partitionstabelle auf dem Laufwerk erstellt haben, geben Sie die Partition, die Sie bereitstellen möchten, als Suffix des Gerätenamens an. Wennsdbbeispielsweise der Name des Laufwerks ist und Sie Partition 1 bereitstellen möchten, wirdDEVICE_NAMEzusdb1.Öffnen Sie die Datei
/etc/fstabin einem Texteditor und erstellen Sie einen Eintrag, der die UUID enthält:UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2Ersetzen Sie Folgendes:
UUID_VALUEdurch das LaufwerkUUID, das in der Ausgabe des Befehls UUID auflisten aufgeführt ist.MOUNT_DIRdurch das Verzeichnis, in dem Sie das Laufwerk bereitgestellt haben.MOUNT_OPTIONdurch den WertMOUNT_OPTIONfür Ihr Betriebssystem, der angibt, was das Betriebssystem tut, wenn es das Laufwerk beim Booten nicht bereitstellen kann.
Prüfen Sie, ob Ihre
/etc/fstab-Einträge korrekt sind:Mit dem folgenden Befehl werden die
/etc/fstab-Einträge mit den vorhandenen Laufwerken und Partitionen verglichen, die an die VM angehängt sind:findmnt --verifyDas folgende Beispiel zeigt eine erfolgreiche Überprüfung. Sie können die erwartete Warnung ignorieren:
[W] your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload 0 parse errors, 0 errors, 1 warningWenn Fehler auftreten, prüfen Sie, ob die
fstab-Einträge gültig sind. Ein häufiges Problem ist, dass dem Eintrag ungültige nicht druckbare Zeichen hinzugefügt werden. Mit dem folgenden Befehl können Sie alle Sonderzeichen in der Datei/etc/fstabanzeigen lassen:cat --show-nonprinting /etc/fstabIm Folgenden finden Sie ein Beispiel für eine gültige 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 2Achten Sie darauf, dass keine unerwarteten Zeichen vorhanden sind, z. B. nicht druckbare Zeichen, die mit
M-oder^beginnen.
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, halten Sie die Datei /etc/fstab mit den Geräten synchronisiert, die mit Ihrer VM verbunden 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 bereitzustellen. Fügen Sie dazu die Befehle aus Laufwerk bereitstellen einem Startskript hinzu. Bevor Sie das Skript zum Bereitstellen des Laufwerks hinzufügen, formatieren Sie das Laufwerk mit den Befehlen aus Laufwerk formatieren.
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 EOFkubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ create secret generic VM_NAME-mount-script \ --from-file=script=mount-disk-scriptrm mount-disk-scriptFügen Sie das Startskript der VM hinzu.
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAMEBearbeiten Sie
spec.startupScriptsso, dass der Secret-Name enthalten ist.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 finden Sie hier.