Questo documento elenca gli errori che potresti riscontrare quando utilizzi dischi con non volatile Memory express (NVMe).
Puoi utilizzare l'interfaccia NVMe per gli SSD locali e i dischi permanenti (Persistent Disk o Google Cloud Hyperdisk). Solo il serie di macchine più recenti, come Tau T2A, M3, C3, C3D e H3 utilizzano Interfaccia NVMe per Persistent Disk. Le Confidential VM usano NVMe anche per Persistent Disk. Tutti gli altri Compute Engine utilizza Interfaccia disco SCSI per dei dischi permanenti standard.
Errore di timeout dell'operazione I/O
Se si verificano errori di timeout I/O, la latenza potrebbe essere superiore 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 di timeout.
- Determina quale controller NVMe viene utilizzato dal disco permanente o dal server
volume SSD.
ls -l /dev/disk/by-id
Visualizza l'impostazione
io_timeout
, specificata in secondi, per il disco.cat /sys/class/nvme/CONTROLLER_ID/NAMESPACE/queue/io_timeout
Sostituisci quanto segue:CONTROLLER_ID
: l'ID del disco NVMe un controller, ad esempionvme1
NAMESPACE
: lo spazio dei nomi del disco NVMe, per esempio,nvme1n1
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 server
volume SSD.
Per aumentare il parametro di timeout per le operazioni di I/O inviate a NVMe dispositivi, aggiungi la riga seguente alla
/lib/udev/rules.d/65-gce-disk-naming.rules
, quindi riavvia la VM:KERNEL=="nvme*n*", ENV{DEVTYPE}=="disk", ATTRS{model}=="nvme_card-pd", ATTR{queue/io_timeout}="4294967295"
I dischi scollegati vengono ancora visualizzati nel sistema operativo di un'istanza di computing
Sulle VM che utilizzano la versione del kernel Linux dalla 6.0 alla 6.2, le operazioni
che coinvolgono il metodo dell'API Compute Engine instances.detachDisk
o
Il comando gcloud compute instances detach-disk
potrebbe non funzionare come previsto.
La console Google Cloud mostra il dispositivo come rimosso e i metadati dell'istanza di calcolo
(comando compute disks describe
) mostra il dispositivo come rimosso, ma il dispositivo
ed eventuali collegamenti simbolici creati dalle regole udev sono ancora visibili
come un sistema operativo guest.
Messaggio di errore:
Se provi a leggere dal disco scollegato sulla VM si verificano errori di I/O:
sudo head /dev/nvme0n3 head: error reading '/dev/nvme0n3': Input/output error
Problema:
Immagini del sistema operativo che utilizzano un kernel Linux 6.0-6.2 ma non includono un backport di una correzione di NVMe non vengono riconosciuti quando un disco NVMe viene scollegato.
Risoluzione:
Riavvia la VM per completare il processo di rimozione del disco.
Per evitare questo problema, utilizza un sistema operativo con un Versione kernel Linux che non presenta questo problema:
- 5.19 o più
- 6.3 o versioni successive
Puoi utilizzare il comando uname -r
nel sistema operativo guest per visualizzare il kernel Linux
completamente gestita.
Symlink non creati su VM C3 e C3D con SSD locale
Se colleghi dischi SSD locali a una VM C3 o C3D, potresti dover passaggi aggiuntivi per creare i collegamenti simbolici per i dischi SSD locali. Questi passaggi sono obbligatorio solo se utilizzi una delle seguenti immagini pubbliche offerte da Google Cloud:
- SLES 15 SP4 e SP5
- SLES 12 SP4
Questi passaggi aggiuntivi si applicano solo ai dischi SSD locali. non devi fare per i volumi Persistent Disk.
Le immagini Linux pubbliche elencate in precedenza non hanno il corretto
Configurazione di udev
per creare collegamenti simbolici per i dispositivi SSD locali collegati a
VM C3 e C3D. Le immagini personalizzate potrebbero inoltre non includere le regole udev
obbligatorie
necessari per creare collegamenti simbolici per i dispositivi SSD locali collegati alle VM C3 e C3D.
Utilizza queste istruzioni per aggiungere regole udev
per SUSE o immagini personalizzate.
- Individua la directory delle regole udev. In genere è
/lib/udev/rules.d
o/usr/lib/udev/rules.d
. L'immagine potrebbe avere regoleudev
diverse . - Individua il file
65-gce-disk-naming.rules
nella directory delle regole udev. Se il file
65-gce-disk-naming.rules
contiene la seguente riga, il tuo supporta le nuove regole, ma puoi fermarti qui:KERNEL=="nvme*n*", ATTRS{model}=="nvme_card[0-9]*",IMPORT{program}="google_nvme_id -d $tempnode"
Se la riga precedente non è presente o se il file
65-gce-disk-naming.rules
non esiste, sostituisci il file esistente o crea un nuovo file, con i contenuti del file da questo URL: https://raw.githubusercontent.com/GoogleCloudPlatform/guest-configs/20230630.00/src/lib/udev/rules.d/65-gce-disk-naming.rules. Questo file include i contenuti aggiornati di65-gce-disk-naming.rules
inclusa la riga del passaggio precedente e altre regole richieste per Denominazione dei dischi di Compute Engine. Ad esempio:sudo curl -o 65-gce-disk-naming.rules https://raw.githubusercontent.com/GoogleCloudPlatform/guest-configs/20230630.00/src/lib/udev/rules.d/65-gce-disk-naming.rules
Vai alla directory
udev
.Individua il file
google_nvme_id
nella directoryudev
.Sostituisci i contenuti del file
google_nvme_id
esistente o creane uno nuovo , con i contenuti a questo URL:sudo curl -o google_nvme_id https://raw.githubusercontent.com/GoogleCloudPlatform/guest-configs/20230630.00/src/lib/udev/google_nvme_id
Assicurati che il file
google_nvme_id
sia eseguibile.sudo chmod 755 google_nvme_id
Riavvia la VM.
Verifica che i collegamenti simbolici siano stati creati correttamente.
ls -l /dev/disk/by-id/google-local-nvme-ssd*
L'output dovrebbe indicare lo stesso numero di link degli SSD locali collegato all'istanza e ogni link deve indirizzare a un Percorso dispositivo
/dev/nvme
. Ad esempio:lrwxrwxrwx 1 root root 13 Jul 19 22:52 /dev/disk/by-id/google-local-nvme-ssd-0 -> ../../nvme0n1 lrwxrwxrwx 1 root root 13 Jul 19 22:52 /dev/disk/by-id/google-local-nvme-ssd-1 -> ../../nvme1n1
Per ulteriori informazioni sui nomi dei dispositivi, vedi Denominazione dei dispositivi.
Puoi verificare che i percorsi dei dispositivi
/dev/nvme
siano SSD locali dispositivi eseguendolsblk
. I dispositivi NVMe con dimensioni pari a375G
sono locali Dispositivi SSD.
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 link simbolici.