Questo documento elenca gli errori che potresti riscontrare quando utilizzi i dischi con l'interfaccia Nonvolatile Memory Express (NVMe).
Puoi utilizzare l'interfaccia NVMe per le unità SSD locali e i dischi permanenti (Persistent Disk o Google Cloud Hyperdisk). Solo le serie di macchine più recenti, come Tau T2A, M3, C3, C3D e H3, utilizzano l'interfaccia NVMe per Persistent Disk. Le Confidential VM utilizzano NVMe anche per il Persistent Disk. Tutte le altre serie di macchine Compute Engine utilizzano l'interfaccia del disco SCSI per i dischi permanenti.
Errore di timeout dell'operazione I/O
Se riscontri errori di timeout di I/O, la latenza potrebbe superare il parametro di timeout predefinito per le operazioni di I/O inviate ai dispositivi NVMe.
Messaggio di errore:
[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 ...
Risoluzione:
Per risolvere il problema, aumenta il valore del parametro di timeout.
Visualizza il valore attuale del parametro timeout.
- Determina quale controller NVMe viene utilizzato dal disco permanente o dal volume SSD locale.
ls -l /dev/disk/by-id
Visualizza l'impostazione
io_timeout
, specificata in secondi, per il disco. Sostituisci quanto segue:cat /sys/class/nvme/CONTROLLER_ID/NAMESPACE/queue/io_timeout
CONTROLLER_ID
: l'ID del controller del disco NVMe, ad esempionvme1
NAMESPACE
: lo spazio dei nomi del disco NVMe, ad esempionvme1n1
Se hai un solo disco che utilizza NVMe, utilizza il comando:
cat /sys/class/nvme/nvme0/nvme0n1/queue/io_timeout
- Determina quale controller NVMe viene utilizzato dal disco permanente o dal volume SSD locale.
Per aumentare il parametro di timeout per le operazioni di I/O inviate ai dispositivi NVMe, aggiungi la seguente riga al file
/lib/udev/rules.d/65-gce-disk-naming.rules
e riavvia la VM:KERNEL=="nvme*n*", ENV{DEVTYPE}=="disk", ATTRS{model}=="nvme_card-pd", ATTR{queue/io_timeout}="4294967295"
I dischi scollegati vengono comunque visualizzati nel sistema operativo di un'istanza di calcolo
Sulle VM che utilizzano la versione del kernel Linux da 6.0 a 6.2, le operazioni che coinvolgono il metodo instances.detachDisk
dell'API Compute Engine o il comando gcloud compute instances detach-disk
potrebbero non funzionare come previsto.
La console Google Cloud mostra il dispositivo come rimosso, i metadati dell'istanza di calcolo
(comando compute disks describe
) mostrano il dispositivo come rimosso, ma il punto di montaggio del dispositivo e tutti i link simbolici creati dalle regole udev sono ancora visibili nel sistema operativo guest.
Messaggio di errore:
Il tentativo di lettura dal disco scollegato sulla VM genera errori di I/O:
sudo head /dev/nvme0n3 head: error reading '/dev/nvme0n3': Input/output error
Problema:
Le immagini del sistema operativo che utilizzano un kernel Linux 6.0-6.2 ma non includono un backport di una correzione NVMe non riescono a riconoscere quando un disco NVMe viene scollegato.
Risoluzione:
Riavvia la VM per completare la procedura di rimozione del disco.
Per evitare questo problema, utilizza un sistema operativo con una versione del kernel Linux che non presenta questo problema:
- 5.19 o versioni successive
- 6.3 o versioni successive
Puoi utilizzare il comando uname -r
nel sistema operativo guest per visualizzare la versione del kernel Linux.
Passaggi successivi
- Scopri di più su Persistent Disk.
- Scopri di più sulle unità SSD locali.
- Configura i dischi per soddisfare i requisiti di prestazioni.
- Scopri di più sui collegamenti simbolici.