In diesem Dokument wird beschrieben, wie Sie auf Ihrer Linux-VM nichtflüchtige Gerätenamen verwenden.
Bei VMs mit einem Linux-Betriebssystem können sich Gerätenamen wie /dev/sda
nach den folgenden Verfahren ändern:
- VM starten und anhalten
- Laufwerke trennen und neu anhängen
- Maschinentypen ändern
Die Änderung des Gerätenamens tritt auf, weil Gerätenamen aus einem verfügbaren Bereich zugewiesen werden, sobald eine VM gestartet oder ein Gerät angehängt wird. Wenn Sie ein Gerät trennen oder die VM beenden, wird der Gerätename freigegeben. Wenn das Gerät wieder angehängt wird oder die VM neu gestartet wurde, wird aus dem verfügbaren Bereich ein neuer Gerätename zugewiesen. Der Linux-Kernel garantiert nicht die Gerätereihenfolge bei allen Startvorgängen.
Die Änderung eines Gerätenamens kann dazu führen, dass alle Anwendungen oder Skripts, die vom ursprünglichen Gerätenamen abhängig sind, nicht ordnungsgemäß funktionieren oder dass die VM nach einem Neustart nicht startet.
Sie sollten die Benennung von nichtflüchtigen Geräten verwenden, wenn Sie auf Laufwerke und Partitionen auf Ihren Linux-VMs verweisen. So lässt sich dieses Problem vermeiden. Sie können auch Symlinks verwenden.
Vorbereitung
- Prüfen Sie die Geräteverwaltung für Ihr Linux-Betriebssystem:
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
nvme0n1
: Persistent Disknvme0n1p1
nvme0n1p2
nvme0n2
: Hyperdisknvme0n2p1
nvme0n2p2
nvme1n1
: erste lokale SSDnvme2n1
: zweite lokale SSD- Mit einem Label Für diese Option ist erforderlich, dass das Dateisystem Labels unterstützt und dass Sie den Laufwerkpartitionen ein Label hinzufügen.
- Durch Verwendung einer Partitions- oder eines Laufwerk-UUID. Eine UUID wird generiert, wenn ein Laufwerk mit einer Partitionstabelle erstellt wird. Die UUID ist für jede Partition eindeutig.
- Durch Verwendung einer ID des nichtflüchtigen Speichers (
/dev/disk/by-id
) für Persistent Disk oder Google Cloud Hyperdisk oder eines symlinks, der auf dem Namen der Laufwerksressource basiert. - Mit VM verbinden.
Wenn Sie den Gerätenamen des Laufwerks nicht kennen, können Sie den Gerätenamen des Laufwerks über den Symlink finden.
ls -l /dev/disk/by-id/google-*
Die Ausgabe sieht in etwa so aus:
lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm -> ../../sda lrwxrwxrwx 1 root root 10 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm-app-data -> ../../nvme0n1
Rufen Sie die UUID der Partition für das Laufwerk mit einem der folgenden Befehle ab:
blkid
sudo blkid -s UUID
Die Ausgabe sieht in etwa so aus:
/dev/sda1: UUID="4f570f2d-fffe-4c7d-8d8f-af347af7612a" /dev/sda15: UUID="E0B2-DFAF" /dev/nvme0n1: UUID="9e617251-6a92-45ff-ba40-700a9bdeb03e"
ls -l
sudo ls -l /dev/disk/by-uuid/
Die Ausgabe sieht in etwa so aus:
lrwxrwxrwx 1 root root 10 Sep 22 18:12 4f570f2d-fffe-4c7d-8d8f-af347af7612a -> ../../sda1 lrwxrwxrwx 1 root root 13 Sep 22 18:15 9e617251-6a92-45ff-ba40-700a9bdeb03e -> ../../nvme0n1 lrwxrwxrwx 1 root root 11 Sep 22 18:12 E0B2-DFAF -> ../../sda15
Fügen Sie in der Datei
/etc/fstab
einen Eintrag für die UUID für Ihr Gerät hinzu.UUID=9e617251-6a92-45ff-ba40-700a9bdeb03e /data ext4 defaults 0 0
In diesem Beispiel ist
/data
der Bereitstellungspunkt undext4
der Dateisystemtyp.Prüfen Sie, ob das Gerät ordnungsgemäß bereitgestellt wurde. Führen Sie dazu
mount -av
aus.sudo mount -av
Wenn das Gerät bereitgestellt wurde, sieht die Ausgabe in etwa so aus:
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this filesystem. For more details see restorecon(8) and mount(8). /data : successfully mounted
- Mit VM verbinden.
Rufen Sie die ID auf dem Laufwerk ab, indem Sie den folgenden Befehl ausführen:
sudo ls -lh /dev/disk/by-id/google-*
Die Ausgabe sieht in etwa so aus:
lrwxrwxrwx. 1 root root 9 May 16 17:34 google-disk-2 -> ../../sdb lrwxrwxrwx. 1 root root 9 May 16 09:09 google-persistent-disk-0 -> ../../sda lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part2 -> ../../sda2
Bei
NVME
-Laufwerken sieht die Ausgabe in etwa so aus:lrwxrwxrwx 1 root root 13 Jun 1 10:27 google-disk-3 -> ../../nvme0n2 lrwxrwxrwx 1 root root 13 Jun 1 10:25 google-t2a -> ../../nvme0n1 lrwxrwxrwx 1 root root 15 Jun 1 10:25 google-t2a-part1 -> ../../nvme0n1p1 lrwxrwxrwx 1 root root 16 Jun 1 10:25 google-t2a-part15 -> ../../nvme0n1p15
Fügen Sie der Datei
/etc/fstab
den Symlink hinzu./dev/disk/by-id/google-disk-2 /data ext4 defaults 0 0
Prüfen Sie, ob das Gerät ordnungsgemäß bereitgestellt wurde. Führen Sie dazu
mount -av
aus.sudo mount -av
Wenn das Gerät bereitgestellt wurde, sieht die Ausgabe in etwa so aus:
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this file system. For more details see restorecon(8) and mount(8). /data : successfully mounted
Gerätebenennung auf Linux-VMs
Die Linux-Gerätenamen für die an Ihre VM angehängten Laufwerke hängen von der Schnittstelle ab, die Sie beim Erstellen der Laufwerke auswählen. Wenn Sie den Betriebssystembefehl
lsblk
verwenden, um Ihre Geräte aufzurufen, wird das Präfixnvme
für Laufwerke angezeigt, die mit der NVMe-Schnittstelle verbunden sind, und das Präfixsd
für Laufwerke, die mit der SCSI-Schnittstelle verbunden sind.Die Reihenfolge der Laufwerknummern oder NVMe-Controller ist nicht vorhersehbar oder konsistent bei VM-Neustarts. Beim ersten Start kann ein nichtflüchtiger Speicher
nvme0n1
(odersda
für SCSI) sein. Beim zweiten Start kann der Gerätename für denselben nichtflüchtigen Speichernvme2n1
odernvme0n3
(odersdc
für SCSI) lauten.Verwenden Sie für den Zugriff auf angeschlossene Laufwerke stattdessen die in
/dev/disk/by-id/
erstellten symbolischen Links. Diese Namen bleiben auch nach einem Neustart bestehen. Weitere Informationen zu Symbollinks finden Sie unter Symbolische Links für an eine VM angeschlossene Laufwerke.SCSI-Gerätenamen
Das Format eines SCSI-angehängten Laufwerks ist
sda
für das erste angehängte Laufwerk. Die Laufwerkpartitionen werden alssda1
angezeigt. Jedes zusätzliche Laufwerk verwendet einen sequenziellen Buchstaben wiesdb
undsdc
. Wennsdz
erreicht ist, haben die nächsten hinzugefügten Laufwerke Namen wiesdaa
,sdab
undsdac
bis zusddx
NVMe-Gerätenamen
Das Format eines NVMe-angebundenen Laufwerkgeräts in Linux-Betriebssystemen ist
nvmenumbernnamespace
.number
steht für die Nummer des NVMe-Laufwerks-Controllers und namespace ist eine NVMe-Space-ID, die vom NVMe-Laufwerks-Controller zugewiesen wird. Bei Partitionen wird pn an den Gerätenamen angehängt, wobei n eine Zahl ist, die mit 1 beginnt und die n-te Partition angibt.Die Controllernummer beginnt bei
0
. Ein einzelnes NVMe-Laufwerk, das mit Ihrer Compute-Instanz verbunden ist, hat den Gerätenamennvme0n1
. Die meisten Maschinentypen verwenden einen einzelnen NVMe-Laufwerks-Controller. Die Namen der NVMe-Geräte sind dannnvme0n1
,nvme0n2
,nvme0n3
usw.Lokale SSD-Laufwerke, die an Maschinen der dritten Generation oder höher angeschlossen sind, haben einen separaten NVMe-Controller für jedes Laufwerk. Auf diesen VMs sehen die Namen der lokalen SSD-NVMe-angehängten-Geräte so aus:
nvme0n1
,nvme1n1
undnvme2n1
. Die Anzahl der angehängten lokalen SSD-Laufwerke hängt vom Maschinentyp Ihrer VM ab.Compute-Instanzen, die auf Maschinenserien der dritten Generation oder höher basieren, verwenden NVMe sowohl für Persistent Disk als auch für Google Cloud Hyperdisk sowie auch für lokale SSD-Laufwerke. Jede VM hat einen NVMe-Controller für Persistent Disk und Hyperdisk sowie einen NVMe-Controller für jedes lokale SSD-Laufwerk. Der NVMe-Controller für Persistent Disk und Hyperdisk hat einen einzelnen NVMe-Namespace für alle angehängten Laufwerke. Eine Instanz einer Maschinenserie der dritten Generation mit einem Persistent Disk und einem Hyperdisk (jeweils mit zwei Partitionen) und zwei nicht formatierten lokalen SSD-Laufwerken verwendet daher die folgenden Gerätenamen:
Benennung nichtflüchtiger Geräte verwenden
Um einen nichtflüchtigen Gerätenamen zu konfigurieren, weisen Sie dem Laufwerkgerät einen Namen für den Bereitstellungspunkt in der Datei
fstab
zu. Es gibt drei Möglichkeiten, einen nichtflüchtigen Gerätenamen zu konfigurieren.Wir empfehlen die Verwendung der Partitions-UUID oder des Symlinks für Linux-VMs.
Partitions-UUID
So ermitteln Sie die UUID für ein Laufwerk:
ID des nichtflüchtigen Speichers
Führen Sie die folgenden Schritte aus, um den Namen des Laufwerks mithilfe der ID des nichtflüchtigen Speichers oder des Symlinks zu ermitteln:
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-22 (UTC).
-