Bom dia.
Eu queria chamar a atenção da comunidade para um recurso característico do Linux ao trabalhar com vários SSDs NVMe em um sistema. Será especialmente relevante para quem gosta de criar arrays RAID de software a partir de NVMe.
Espero que as informações abaixo ajudem a proteger seus dados e a eliminar erros irritantes.
Estamos todos acostumados com a seguinte lógica do Linux ao trabalhar com dispositivos de bloco:
Se o dispositivo for chamado /dev/sda então as partições nele serão /dev/sda1, /dev/sda2, etc.
Para visualizar os atributos SMART, usamos algo como smartctl -a /dev/sda, formatamos e adicionamos partições aos arrays, como /dev/sda1.
Estamos todos acostumados com o axioma de que /dev/sda1 está localizado em /dev/sda. E, se um dia a SMART mostrar que /dev/sda está quase morto, é /dev/sda1 que iremos descartar do array RAID para substituição.
Acontece que esta regra não funciona ao trabalhar com Namespaces NVMe. Prova:
nvme list && ( smartctl -a /dev/nvme0 && smartctl -a /dev/nvme1 && smartctl -a /dev/nvme2 ) | grep Serial
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S466NX0K72XX06M Samsung SSD 970 EVO 500GB 1 96.92 GB / 500.11 GB 512 B + 0 B 1B2QEXE7
/dev/nvme1n1 S466NX0K43XX48W Samsung SSD 970 EVO 500GB 1 91.00 GB / 500.11 GB 512 B + 0 B 1B2QEXE7
/dev/nvme2n1 S466NX0K72XX01A Samsung SSD 970 EVO 500GB 1 0.00 B / 500.11 GB 512 B + 0 B 1B2QEXE7
Serial Number: S466NX0K72XX06M
Serial Number: S466NX0K72XX01A
Serial Number: S466NX0K43XX48W
Um leitor astuto da comparação do número de série notará que /dev/nvme1n1 está na verdade localizado em /dev/nvme2 e vice-versa.
PS
Desejo que você nunca remova o último SSD NVMe vivo da matriz RAID.
Fonte: habr.com