Como Diagnosticar e Testar Discos NVMe em Servidores Linux: Guia Completo

nvme

Discos NVMe Linux. Vamos criar um guia completo sobre como diagnosticar e testar discos NVMe em servidores Linux, incluindo identificação de problemas, monitoramento de saúde e testes de desempenho. Vou detalhar passo a passo, de forma prática.


1️⃣ Identificando discos NVMe no sistema

Para listar os NVMe disponíveis:

lsblk -d -o NAME,MODEL,SIZE,ROTA

Exemplo de saída:

NAME   MODEL            SIZE ROTA
nvme0n1 Samsung_NVMe_1  1T   0
nvme1n1 Samsung_NVMe_2  2T   0
sda    ST1000DM003      1T   1
  • ROTA = 0 indica SSD/NVMe (sem partes móveis).
  • ROTA = 1 indica HDD tradicional.

Para ver detalhes mais técnicos do NVMe:

sudo nvme list

Saída típica:

Node         SN             Model             Namespace Usage    Format           FW Rev
----------  -------------  ----------------  ---------  -----    ------           -------
/dev/nvme0n1  S3XXXXXXXX   Samsung SSD 980   1         500G     512   B + 0E      4B2QEXM7

2️⃣ Verificando a saúde do NVMe

Discos NVMe têm SMART próprio (nvme-cli) que fornece informações detalhadas de saúde.

sudo nvme smart-log /dev/nvme0n1

Exemplo de saída:

Smart Log for NVME device:nvme0n1
Critical Warning: 0x0
Temperature: 35 C
Available Spare: 100%
Percentage Used: 5%
Data Units Written: 12345
Power Cycles: 10
Power On Hours: 200
Unsafe Shutdowns: 0
Media Errors: 0

✅ Indicadores importantes:

  • Percentage Used: Quanto do ciclo de vida do SSD foi utilizado.
  • Media Errors / Unsafe Shutdowns: Problemas críticos ou desligamentos incorretos.
  • Temperature: Ideal abaixo de 70 °C em uso contínuo.

3️⃣ Testando desempenho de leitura/escrita

Usando fio (testes profissionais de I/O):

  1. Instale fio:
sudo apt install fio       # Debian/Ubuntu
sudo dnf install fio       # RHEL/AlmaLinux
  1. Teste de leitura sequencial:
sudo fio --name=seq_read --filename=/dev/nvme0n1 --rw=read --bs=1M --size=1G --numjobs=1 --time_based --runtime=30 --group_reporting
  1. Teste de escrita sequencial:

⚠️ Isso sobrescreve dados. Use em disco vazio ou de teste:

sudo fio --name=seq_write --filename=/dev/nvme0n1 --rw=write --bs=1M --size=1G --numjobs=1 --time_based --runtime=30 --group_reporting
  1. Teste de IOPS aleatório 4K (importante para bancos de dados):
sudo fio --name=rand_readwrite --filename=/dev/nvme0n1 --rw=randrw --bs=4k --size=1G --numjobs=4 --time_based --runtime=60 --group_reporting

4️⃣ Monitoramento contínuo (opcional)

Para servidores em produção, é melhor monitorar a saúde dos NVMe continuamente:

  • Com nvme-cli e smartctl via cron ou systemd timer.
  • Integração com Zabbix ou Prometheus:
# Exemplo: coletar % used
nvme smart-log /dev/nvme0n1 | grep 'Percentage Used' | awk '{print $4}'
  • Alertas: ≥80 % de uso ou erros repetidos devem gerar alerta imediato.

5️⃣ Testes de integridade (opcional)

O NVMe suporta self-test interno:

sudo nvme device-self-test /dev/nvme0n1 --start --self-test-code=1  # curta duração
sudo nvme device-self-test /dev/nvme0n1 --start --self-test-code=2  # longa duração
sudo nvme device-self-test /dev/nvme0n1 --result
  • Teste curto: ~2 min
  • Teste longo: pode levar horas, verifica todos os blocos do SSD.

6️⃣ Diagnóstico de problemas comuns

SintomaPossível causaComando útil
Lentidão intermitenteAlto uso do % used, temperatura altanvme smart-log
Erros de leitura/escritaFalha física do SSD`dmesg
Desconexão ou travamentoProblema de driver, PCIe ou cabo`lspci -vv
Alto I/O WaitSaturação de NVMe por aplicaçõesiostat -x 1

FAQ

Como identificar discos NVMe no Linux?

Use o comando lsblk ou nvme list para listar todos os NVMe conectados e verificar suas capacidades e namespaces.

Como verificar a saúde de um SSD NVMe?

Ferramentas como nvme-cli ou smartctl permitem verificar temperatura, ciclos de vida (% used), erros e status de integridade do disco.

Como testar a performance de um NVMe?

O fio é a ferramenta mais recomendada para testar leitura/escrita sequencial e aleatória, além de medir IOPS e throughput.

É seguro rodar testes de escrita em NVMe de produção?

Não. Testes de escrita sobrescrevem dados. Execute apenas em discos de teste ou backups completos.

Como monitorar NVMe continuamente?

É possível criar scripts periódicos ou integrar com Zabbix/Prometheus para alertas de % used, temperatura e erros

Quais sinais indicam problemas em discos NVMe?

Alta temperatura, aumento de % used, erros de leitura/escrita no dmesg, lentidão intermitente ou travamentos podem indicar falha iminente.