Questo documento elenca gli errori che potresti riscontrare quando utilizzi i dischi con l'interfaccia NVMe (non-volatile memory express).
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. Confidential VM utilizzano anche NVMe per i 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 I/O, la latenza potrebbe superare il parametro di timeout predefinito per le operazioni 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 timeout.
Visualizza il valore corrente del parametro timeout.
- Determina quale controller NVMe viene utilizzato dal disco permanente o dal volume SSD locale.
ls -l /dev/disk/by-id
Mostra 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
: il nome del namespace 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
Nelle VM che utilizzano il kernel Linux dalla versione 6.0 alla 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 Google Cloud console 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 gli eventuali 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ù sui dischi permanenti.
- Scopri di più sulle unità SSD locali.
- Configurare i dischi per soddisfare i requisiti di prestazioni.
- Scopri di più sui link simbolici.