En este documento, se enumeran los errores que pueden surgir cuando se usan discos con la interfaz de memoria rápida no volátil (NVMe).
Puedes usar la interfaz NVMe para SSD locales y discos persistentes (Persistent Disk o Google Cloud Hyperdisk). Solo la serie de máquina más reciente, como Tau T2A, M3, C3, C3D y H3, usan la interfaz NVMe para Persistent Disk. Las Confidential VMs también usan Persistent Disk NVMe. Todas las demás series de máquinas de Compute Engine usan la interfaz de disco SCSI para los discos persistentes.
Error de tiempo de espera de operación de E/S
Si te encuentras con errores de tiempo de espera de E/S, la latencia podría superar el parámetro de tiempo de espera predeterminado para las operaciones de E/S enviadas a dispositivos NVMe.
Mensaje de error:
[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 ...
Solución:
Para resolver este problema, aumenta el valor del parámetro de tiempo de espera.
Visualiza el valor actual del parámetro de tiempo de espera.
- Determina qué controlador NVMe usa el disco persistente o la SSD local.
ls -l /dev/disk/by-id
Muestra la configuración
io_timeout
, especificada en segundos, para el disco. Reemplaza lo siguiente:cat /sys/class/nvme/CONTROLLER_ID/NAMESPACE/queue/io_timeout
CONTROLLER_ID
: el ID del controlador de disco NVMe, por ejemplo,nvme1
NAMESPACE
: el espacio de nombres del disco NVMe, por ejemplo,nvme1n1
Si solo tienes un único disco que usa NVMe, usa el siguiente comando:
cat /sys/class/nvme/nvme0/nvme0n1/queue/io_timeout
- Determina qué controlador NVMe usa el disco persistente o la SSD local.
A fin de aumentar el parámetro de tiempo de espera para las operaciones de E/S enviadas a dispositivos NVMe, agrega las siguientes líneas al archivo
/lib/udev/rules.d/65-gce-disk-naming.rules
y, luego, reinicia la VM:KERNEL=="nvme*n*", ENV{DEVTYPE}=="disk", ATTRS{model}=="nvme_card-pd", ATTR{queue/io_timeout}="4294967295"
Los discos desconectados aún aparecen en el sistema operativo de una instancia de procesamiento
En las VMs que usan la versión 6.0 a 6.2 del kernel de Linux, las operaciones que involucran el método instances.detachDisk
de la API de Compute Engine o el comando gcloud compute instances detach-disk
pueden no funcionar como se espera.
La consola de Google Cloud muestra el dispositivo como quitado, los metadatos de la instancia de procesamiento (comando compute disks describe
) muestran el dispositivo como quitado, pero el punto de activación del dispositivo y los symlinks creados por reglas udev aún son visibles en el sistema operativo invitado.
Mensaje de error:
Intentar leer desde el disco desconectado en la VM da como resultado errores de E/S:
sudo head /dev/nvme0n3 head: error reading '/dev/nvme0n3': Input/output error
Problema:
Las imágenes del sistema operativo que usan un kernel de Linux 6.0-6.2, pero no incluyen un backport de una corrección NVMe, no reconocen cuando se desconecta un disco NVMe.
Solución:
Reinicia la VM para completar el proceso de eliminación del disco.
Para evitar este problema, usa un sistema operativo con una versión de kernel de Linux que no tenga este problema:
- 5.19 o una versión posterior
- 6.3 o una versión posterior
Puedes usar el comando uname -r
en el SO invitado para ver la versión de kernel de Linux.
Próximos pasos
- Obtén información sobre Persistent Disk.
- Obtén más información sobre los SSD locales
- Configurar los discos para cumplir con los requisitos de rendimiento
- Obtén más información sobre los symlinks.