In diesem Dokument werden Fehler aufgeführt, die bei der Verwendung von Laufwerken mit der NVMe-Schnittstelle (Persistent Express) auftreten können.
Sie können die NVMe-Schnittstelle für lokale SSDs und nichtflüchtige Speicher (Persistent Disk oder Google Cloud Hyperdisk) verwenden. Nur die neuesten Maschinenserien, wie Tau T2A, M3, C3, C3D und H3, verwenden die NVMe-Schnittstelle für Persistent Disk. Confidential VMs verwenden auch NVMe for Persistent Disk. Alle anderen Compute Engine-Maschinen verwenden die SCSI-Laufwerksschnittstelle für nichtflüchtige Speicher.
E/A-Vorgangszeitüberschreitungsfehler
Wenn E/A-Zeitüberschreitungsfehler auftreten, kann die Latenz den Standardzeitüberschreitungsparameter für E/A-Vorgänge überschreiten, die an NVMe-Geräte gesendet werden.
Fehlermeldung:
[1369407.045521] nvme nvme0: I/O 252 QID 2 timeout, aborting [1369407.050941] nvme nvme0: I/O 253 QID 2 timeout, aborting [1369407.056354] nvme nvme0: I/O 254 QID 2 timeout, aborting [1369407.061766] nvme nvme0: I/O 255 QID 2 timeout, aborting [1369407.067168] nvme nvme0: I/O 256 QID 2 timeout, aborting [1369407.072583] nvme nvme0: I/O 257 QID 2 timeout, aborting [1369407.077987] nvme nvme0: I/O 258 QID 2 timeout, aborting [1369407.083395] nvme nvme0: I/O 259 QID 2 timeout, aborting [1369407.088802] nvme nvme0: I/O 260 QID 2 timeout, aborting ...
Lösung:
Erhöhen Sie den Wert des Zeitüberschreitungsparameters, um dieses Problem zu beheben.
Rufen Sie den aktuellen Wert des Zeitüberschreitungsparameters auf.
- Bestimmen Sie, welcher NVMe-Controller vom nichtflüchtigen Speicher oder der lokalen SSD verwendet wird.
ls -l /dev/disk/by-id
Rufen Sie die in Sekunden angegebene Einstellung
io_timeout
für das Laufwerk auf. Ersetzen Sie Folgendes:cat /sys/class/nvme/CONTROLLER_ID/NAMESPACE/queue/io_timeout
CONTROLLER_ID
: die ID des NVMe-Disk-Controllers, z. B.nvme1
NAMESPACE
: der Namespace des NVMe-Laufwerks, z. B.nvme1n1
Wenn Sie nur eine einzelne NVMe-Festplatte haben, verwenden Sie den folgenden Befehl:
cat /sys/class/nvme/nvme0/nvme0n1/queue/io_timeout
- Bestimmen Sie, welcher NVMe-Controller vom nichtflüchtigen Speicher oder der lokalen SSD verwendet wird.
Um den Zeitüberschreitungsparameter für E/A-Vorgänge zu erhöhen, die an NVMe-Geräte gesendet wurden, fügen Sie der Datei
/lib/udev/rules.d/65-gce-disk-naming.rules
die folgende Zeile hinzu und starten Sie dann die VM neu:KERNEL=="nvme*n*", ENV{DEVTYPE}=="disk", ATTRS{model}=="nvme_card-pd", ATTR{queue/io_timeout}="4294967295"
Abgetrennte Laufwerke werden weiterhin im Betriebssystem einer Compute-Instanz angezeigt
Bei VMs, auf denen die Linux-Kernelversionen 6.0 bis 6.2 verwendet werden, funktionieren Vorgänge, die die Compute Engine API-Methode instances.detachDisk
oder den gcloud compute instances detach-disk
-Befehl verwenden, möglicherweise nicht wie erwartet.
In der Google Cloud -Konsole wird das Gerät als entfernt angezeigt, in den Compute-Instanz-Metadaten (Befehl compute disks describe
) wird das Gerät als entfernt angezeigt, aber der Geräte-Mount-Point und alle von udev-Regeln erstellten Symlinks sind weiterhin im Gastbetriebssystem sichtbar.
Fehlermeldung:
Wenn Sie versuchen, Daten von dem getrennten Laufwerk auf der VM zu lesen, treten E/A-Fehler auf:
sudo head /dev/nvme0n3 head: error reading '/dev/nvme0n3': Input/output error
Problem:
Betriebssystem-Images, die einen Linux-Kernel der Version 6.0 bis 6.2 verwenden, aber keinen Backport eines NVMe-Fix enthalten, erkennen nicht, wenn eine NVMe-Festplatte getrennt wird.
Lösung:
Starten Sie die VM neu, um das Entfernen des Laufwerks abzuschließen.
Verwenden Sie ein Betriebssystem mit einer Linux-Kernelversion, die dieses Problem nicht aufweist, um es zu vermeiden:
- 5.19 oder älter
- 6.3 oder höher
Mit dem Befehl uname -r
im Gastbetriebssystem können Sie die Linux-Kernelversion aufrufen.
Nächste Schritte
- Weitere Informationen zu nichtflüchtigen Speichern.
- Weitere Informationen zu lokalen SSDs.
- Laufwerke so konfigurieren, dass sie die Leistungsanforderungen erfüllen.
- Weitere Informationen zu Symlinks.