Este documento lista os erros que pode encontrar quando usa discos com a interface nonvolatile memory express (NVMe).
Pode usar a interface NVMe para SSDs locais e discos persistentes (disco persistente ou Google Cloud Hyperdisk). Apenas a série de máquinas mais recente, como Tau T2A, M3, C3, C3D e H3, usa a interface NVMe para o disco persistente. As Confidential VMs também usam NVMe para o disco persistente. Todas as outras séries de máquinas do Compute Engine usam a interface de disco SCSI para discos persistentes.
Erro de limite de tempo da operação de E/S
Se estiver a deparar-se com erros de limite de tempo de E/S, a latência pode estar a exceder o parâmetro de limite de tempo predefinido para operações de E/S enviadas para dispositivos NVMe.
Mensagem de erro:
[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 ...
Resolução:
Para resolver este problema, aumente o valor do parâmetro de tempo limite.
Veja o valor atual do parâmetro de tempo limite.
- Determine que controlador NVMe é usado pelo disco persistente ou pelo volume SSD local.
ls -l /dev/disk/by-id
Apresente a definição
io_timeout
, especificada em segundos, para o disco. Substitua o seguinte:cat /sys/class/nvme/CONTROLLER_ID/NAMESPACE/queue/io_timeout
CONTROLLER_ID
: o ID do controlador do disco NVMe, por exemplo,nvme1
NAMESPACE
: o espaço de nomes do disco NVMe, por exemplo,nvme1n1
Se tiver apenas um disco que use NVMe, use o comando:
cat /sys/class/nvme/nvme0/nvme0n1/queue/io_timeout
- Determine que controlador NVMe é usado pelo disco persistente ou pelo volume SSD local.
Para aumentar o parâmetro de tempo limite para operações de E/S enviadas para dispositivos NVMe, adicione a seguinte linha ao ficheiro
/lib/udev/rules.d/65-gce-disk-naming.rules
e, em seguida, reinicie a VM:KERNEL=="nvme*n*", ENV{DEVTYPE}=="disk", ATTRS{model}=="nvme_card-pd", ATTR{queue/io_timeout}="4294967295"
Os discos desanexados continuam a aparecer no sistema operativo de uma instância de computação
Em VMs que usam a versão 6.0 a 6.2 do kernel Linux, as operações que envolvem o método instances.detachDisk
da API Compute Engine ou o comando gcloud compute instances detach-disk
podem não funcionar como esperado.
A consola Google Cloud mostra o dispositivo como removido, os metadados da instância de computação (comando compute disks describe
) mostram o dispositivo como removido, mas o ponto de montagem do dispositivo e quaisquer links simbólicos criados pelas regras udev continuam visíveis no sistema operativo convidado.
Mensagem de erro:
A tentativa de leitura do disco desanexado na VM resulta em erros de E/S:
sudo head /dev/nvme0n3 head: error reading '/dev/nvme0n3': Input/output error
Problema:
As imagens do sistema operativo que usam um kernel Linux 6.0-6.2, mas não incluem uma porta de retorno de uma correção de NVMe não reconhecem quando um disco NVMe é separado.
Resolução:
Reinicie a VM para concluir o processo de remoção do disco.
Para evitar este problema, use um sistema operativo com uma versão do kernel do Linux que não tenha este problema:
- 5.19 ou posterior
- 6.3 ou mais recente
Pode usar o comando uname -r
no SO convidado para ver a versão do kernel do Linux.
O que se segue?
- Saiba mais acerca do Persistent Disk.
- Saiba mais sobre os SSDs locais.
- Configure os discos para cumprir os requisitos de desempenho.
- Saiba mais sobre as ligações simbólicas.