Após a análise do SSD Corsair MP700 PCIe 5.0 NVMe no Linux, com muitos leitores sendo surpreendidos por erros no sistema de arquivos ao não adicionar resfriamento extra como o dissipador de calor M.2 passivo da placa-mãe e ficando curiosos sobre a situação, aqui estão mais testes de como isso funciona A unidade atingirá de forma confiável os erros do sistema de arquivos em três minutos ou menos sem refrigeração adicional.
Depois de concluir o teste básico do Linux para o Corsair MP700 2TB, fiz alguns testes adicionais para observar os erros do sistema de arquivos ao executar sem nenhum resfriamento adicional. Já que, afinal de contas, alguém normalmente presumiria que a unidade de estado sólido NVMe iria acelerar antes de chegar ao ponto de erros do sistema de arquivos se houvesse calor excessivo.
Conforme mencionado na revisão, eu estava encontrando erros do sistema de arquivos simplesmente ao instalar testes após uma instalação limpa do Ubuntu 23.04 e nem mesmo conseguindo estressar a unidade NVMe com referências. Portanto, fiquei bastante curioso para ver quanto tempo a unidade duraria sob as cargas de trabalho de benchmarking de disco quando executada sem qualquer resfriamento pós-venda. Para encurtar a história, foram menos de 3 minutos em botas limpas antes de acertar erros de forma confiável.
Ao coletar os logs dmesg remotamente, normalmente dentro de 180 segundos após uma inicialização e simplesmente iniciar um servidor MariaDB e executar mysqlslap para exercitar o servidor de banco de dados, haveria erros no sistema de arquivos. Repetindo isso várias vezes, isso sempre aconteceria em três minutos e a temperatura da unidade NVMe relatada por meio do NVMe HWMON sysfs estava sempre em torno de 87 graus. Pelo que vale a pena, o Especificações técnicas do MP700 descrevem uma faixa de temperatura de-40C a 85C.
Dos logs coletados, pelo menos no Linux parece que o controlador NVMe cai, o que, por sua vez, está levando aos erros do sistema de arquivos EXT4. Por exemplo:
[ 177.187278] nvme nvme0: o controlador está desativado; irá redefinir: CSTS=0xffffffff, PCI_STATUS=0xffff
[177.187283] nvme nvme0: Seu dispositivo tem um modo de economia de energia ativado com falha?
[ 177.187285] nvme nvme0: Tente”nvme_core.default_ps_max_latency_us=0 pcie_aspm=off”e relate um bug
[ 177.235051] nvme 0000:19:00.0: Não é possível alterar o estado de energia de D3frio para D0, dispositivo inacessível
[ 177.235151] nvme nvme0: Desativando dispositivo após falha de reinicialização:-19
[ 177.251298] nvme0n1: alteração de capacidade detectada de 3907029168 para 0
[ 177.251308] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55194516 bloco inicial 125091905)
[ 177.251310] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 129128830
[ 177.251312] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio: 343: Erro de E/S 10 ao gravar no inode 55193889 bloco inicial 273991222)
[ 177.251316] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 124816449
[ 177.251317] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 2737157 66
[ 177.251322] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 29884642 bloco inicial 129404287)
[ 177.251327] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_ biografia:343: Erro de E/S 10 gravando no inode 55194516, bloco inicial 125091902)
[ 177.251327] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10, gravando no inode 29884642, bloco inicial 129404288)
[ 17 7.251329 ] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 124816446
[ 177.251331] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: erro de E/S 10 gravando no inode 30164735 bloco inicial 129396193)
[ 177.25 1331 ] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55194516 bloco inicial 125091875)
[ 177.251332] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 129120737
[ 177.25 1333 ] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 124816419
[ 177.251334] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: erro de E/S 10 gravando no inode 55194516 bloco inicial 125091852)
[ 177.25 1336 ] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 124816396
[ 177.251336] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: erro de E/S 10 gravando no inode 30164735 bloco inicial 129396194)
[ 177.25 1338 ] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55194516 bloco inicial 125091849)
[ 177.251339] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 124816393
[ 177.25 1341 ] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 124816371
[ 177.251343] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 124816353
[ 177.251345] Aborting journal on device nvme0n1p2-8.
[ 177.251353] Erro EXT4-fs (dispositivo nvme0n1p2) em ext4_reserve_inode_write:5906: Diário abortado
[ 177.251358] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_journal_check_start:83: comm kworker/u64:9: anulação detectada ed journal
[177.251359] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 220726066, gravação de página assíncrona perdida
[177.251360] Erro de E/S de buffer em dev nvme0n1p2, bloco lógico 243826688, gravação de página de sincronização perdida
[ 177.251362] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_dirty_inode:6110: inode #55194516: comm systemd-journal: mark_inode_dirty error
[ 177.251365] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 12114722 3, gravação de página assíncrona perdida
[ 177.251366] JBD2: Erro de E/S ao atualizar superbloco de diário para nvme0n1p2-8.
[177.251367] ERRO EXT4-FS (dispositivo NVME0N1P2) em ext4_dirty_inode: 6111: o diário abortou
[177.251369] Buffer I/O Erro no dev NVME0N1P2, bloco lógico 12117777, Lost ASNYNC PageP2, [Bloco lógico 121177777, ] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 121110852, gravação de página assíncrona perdida
[ 177.251373] Erro EXT4-fs (dispositivo nvme0n1p2) em ext4_reserve_inode_write:5906: Diário abortado
[ 177.251375] E/S de buffer erro no dev nvme0n1p2, bloco lógico 121110544, perda de gravação de página assíncrona
[177.251376] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_dirty_inode:6110: inode #55193889: comm rs:main Q:Reg: mark_inode_dirty error
[ 177.251376] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_journal_check_start:83: comm mariadbd: Detected aborted journal
[ 177.251377] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 121110529, gravação de página assíncrona perdida
[ 177.25 1378] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[177.251379] Erro de E/S de buffer em dev nvme0n1p2, bloco lógico 120587356, gravação de página assíncrona perdida
[ 177.251381] E/S de buffer erro no dev nvme0n1p2, bloco lógico 58, gravação de página assíncrona perdida
[ 177.251384] Erro EXT4-fs (dispositivo nvme0n1p2) em ext4_dirty_inode:6111: Journal has aborted
[ 177.251386] EXT4-fs (nvme0n1p2): anterior I Erro/O no superbloco detectado
[ 177.251386] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_journal_check_start:83: comm systemd-journal: Detectado diário abortado
[ 177.251391] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_journal_check_start: 83: comm rs:main Q:Reg: Detectado diário abortado
[ 177.251399] EXT4-fs (nvme0n1p2): erro de I/O anterior para superbloco detectado
[ 177.251406] EXT4-fs (nvme0n1p2): I/O erro ao gravar superbloco
[ 177.251407] EXT4-fs (nvme0n1p2): Remontagem do sistema de arquivos somente leitura
[ 177.251409] EXT4-fs (nvme0n1p2): falha ao converter extensões não gravadas em extensões gravadas–possível perda de dados! (inode 29884642, erro-30)
[ 177.251413] EXT4-fs (nvme0n1p2): falha ao converter extensões não gravadas em extensões gravadas–possível perda de dados! (inode 30164735, erro-30)
[ 177.251415] EXT4-fs (nvme0n1p2): erro de E/S ao gravar superbloco
[ 177.251415] EXT4-fs (nvme0n1p2): erro de E/S ao gravar superbloco
[ 177.251417] EXT4-fs (nvme0n1p2): erro de I/O anterior para superbloco detectado device nvme0n1p2): __ext4_find_entry:1663: inode #63307794: comm apport: lendo diretório lblock 0
[ 186.476151] buffer_io_error: 4 callbacks suprimidos
[ 186.476152] Buffer I/O error on dev nvme0n1p2, logic block 0, perdido gravação de página de sincronização
[ 186.476154] EXT4-fs: 2 retornos de chamada suprimidos
[ 186.476154] EXT4-fs (nvme0n1p2): erro de E/S ao gravar superbloco
[ 186.476170] Erro EXT4-fs (dispositivo nvme0n1p2): __ext4_find_entry:1663: inode #63307794: comm apport: leitura do diretório lblock 0
[ 186.476174] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[ 186.476174] EXT4-fs (nvme0n1p2 ): Erro de E/S ao gravar superbloco
[ 186.476184] Erro EXT4-fs (dispositivo nvme0n1p2): __ext4_find_entry:1663: inode #63307794: comm apport: lendo diretório lblock 0
[ 186.476187] Buffer I/O error no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[ 186.476188] EXT4-fs (nvme0n1p2): erro de E/S ao gravar superbloco
[ 186.476197] Erro EXT4-fs (dispositivo nvme0n1p2): __ext4_find_entry:1663: inode #63307794: apport de comunicação: lendo o diretório lblock 0
[ 186.476199] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[ 186.476200] EXT4-fs (nvme0n1p2): I/O erro ao gravar superbloco
A unidade NVMe estava ocupada com tarefas MariaDB, então não deveria estar tentando entrar em um estado de gerenciamento de baixo consumo de energia-menos de limitação térmica… Então eu também fiz tente as opções de kernel”nvme_core.default_ps_max_latency_us=0 pcie_aspm=off”recomendadas na saída dmesg. mas, em última análise, nenhuma dessas opções para desabilitar PCI Express Active State Power Management (ASPM) ou alterar a latência máxima do NVMe teve qualquer ajuda.
[ 164.581235] nvme nvme0: o controlador está desativado; irá redefinir: CSTS=0xffffffff, PCI_STATUS=0xffff
[164.581240] nvme nvme0: Seu dispositivo tem um modo de economia de energia com falha ativado?
[ 164.581241] nvme nvme0: Tente”nvme_core.default_ps_max_latency_us=0 pcie_aspm=off”e relate um bug
[ 164.641482] nvme0n1: I/O Cmd(0x2) @ LBA 203495560, 32 blocks, I/O Error (sct 0x3/sc 0x71)
[ 164.641490] Erro de E/S, dev nvme0n1, setor 203495560 op 0x0:(READ) sinalizadores 0x80700 phys_seg 4 prio classe 2
[ 164.669173] nvme 0000:19:00.0: Incapaz para alterar o estado de energia de D3cold para D0, dispositivo inacessível
[ 164.669278] nvme nvme0: Desativando dispositivo após falha de reinicialização:-19
[ 164.693186] Erro de E/S, dev nvme0n1, setor 3089104896 op 0x1:(WRITE) flags 0x0 phys_seg 1 prio class 2
[ 164.693195] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55194123 bloco inicial 386138112)
[ 164.693198] nvme0n1: alteração de capacidade detectada de 3907029168 a 0
[ 164.693200] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 385862656
[ 164.693211] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55 194123 bloco inicial 129390649)
[ 164.693213] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 129115193
[ 164.693213] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 2988 4650 bloco inicial 273996343)
[ 164.693215] Erro de buffer I/O no dispositivo nvme0n1p2, bloco lógico 129115194
[ 164.693217] Erro de buffer I/O no dispositivo nvme0n1p2, bloco lógico 129115195
[ 164.693219] Buffer I/O erro no dispositivo nvme0n1p2, bloco lógico 129115196
[ 164.693220] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: erro de E/S 10 gravando no inode 55194123 bloco inicial 129390653)
[ 164.693224] EX Aviso T4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55194123 bloco inicial 129390637)
[ 164.693226] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 129115181
[ 164.693228] EXT4-fs aviso (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55194123 bloco inicial 129390598)
[ 164.693229] Erro de E/S de buffer no dispositivo nvme0n1p2, bloco lógico 129115142
[ 164.693231] Buffer I/O erro no dispositivo nvme0n1p2, bloco lógico 129115143
[ 164.693232] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: erro de E/S 10 gravando no inode 55194123 bloco inicial 129390595)
[ 164.693234] Bu oferecer E/S erro no dispositivo nvme0n1p2, bloco lógico 129115139
[ 164.693235] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: erro de E/S 10 gravando no inode 55194123 bloco inicial 129390578)
[ 164.693236] Bu oferecer E/S erro no dispositivo nvme0n1p2, bloco lógico 129115122
[ 164.693238] Aviso EXT4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: erro de E/S 10 gravando no inode 55194123 bloco inicial 129390566)
[ 164.693240] EX Aviso T4-fs (dispositivo nvme0n1p2): ext4_end_bio:343: Erro de E/S 10 gravando no inode 55194123 bloco inicial 129390563)
[ 164.693278] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 120619365, gravação de página assíncrona perdida
[ 164.693 285 ] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 127926285, gravação de página assíncrona perdida
[164.693293] Erro de E/S de buffer em dev nvme0n1p2, bloco lógico 62, gravação de página assíncrona perdida
[ 164.693302] EXT4-fs error (dispositivo nvme0n1p2): ext4_check_bdev_write_error:223: comm mariadbd: Error while async write back metadata
[164.693323] Aborting journal on device nvme0n1p2-8.
[ 164.693329] Erro EXT4-fs (dispositivo nvme0n1p2) em ext4_dirty_inode:6111: falha de E/S
[ 164.693329] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 243826688, gravação de página de sincronização perdida
[ 164.693334] JBD2: Erro de E/S ao atualizar superbloco de diário para nvme0n1p2-8.
[ 164.693334] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[ 164.693336] EXT4-fs (nvme0n1p2): erro de E/S ao gravar superbloco
[ 164.693340] Buffer Erro de E/S no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[ 164.693341] EXT4-fs (nvme0n1p2): Erro de E/S ao gravar superbloco
[ 164.693353] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_journal_check_start:83: comm rs:main Q:Reg: Detectado diário abortado
[ 164.693364] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[ 164.693368] EXT4-fs (nvme0n1p2 ): Erro de E/S ao gravar superbloco
[ 164.693369] Erro EXT4-fs (dispositivo nvme0n1p2): ext4_journal_check_start:83: comm mariadbd: Diário interrompido detectado
[ 164.693370] EXT4-fs (nvme0n1p2): Remontando leitura do sistema de arquivos-only
[ 164.693378] Erro de E/S de buffer no dev nvme0n1p2, bloco lógico 0, gravação de página de sincronização perdida
[ 164.693380] EXT4-fs (nvme0n1p2): erro de E/S ao gravar superbloco
[ 164.693455 ] EXT4-fs (nvme0n1p2): ext4_do_writepages: jbd2_start: 13262 páginas, ino 55194123; err-30
[ 164.727715] Processo 10715(apport) tem RLIMIT_CORE definido como 1
[ 164.727716] Abortando núcleo
[ 164.915069] Processo 10732(apport) tem RLIMIT_CORE definido como 1
[ 164.915071] Abortando core
[ 164.947259] Processo 10736(apport) tem RLIMIT_CORE definido como 1
[ 164.947261] Abortando core
[ 164.981899] Processo 10747(apport) tem RLIMIT_CORE definido como 1
Eu tenho Não vi esse comportamento com o SSD Inland TD510 PCIe 5.0 NVMe, mas, novamente, essa unidade está equipada com um dissipador de calor ativo por padrão.
Depois de corrigir os erros do sistema de arquivos EXT4 e anexar um dissipador de calor NVMe passivo ao MP700, disparei 24 horas de exigentes benchmarks de I/O com MariaDB, PostgreSQL, FIO, ClickHouse e outras cargas de trabalho e funcionou sem problemas… Ainda bastante aquecido em meados dos anos 80, mas nunca nenhum erro do sistema de arquivos ou relatório do controlador NVMe no log do kernel. Será interessante ver se esse comportamento também ocorre no Windows ou se alguma diferença de driver NVMe afeta a situação.
Em qualquer caso, eu recomendo esperar para atualizar para o armazenamento do consumidor PCIe 5.0 NVMe até que haja opções mais atraentes disponíveis que sejam mais rápidas, mais confiáveis e os preços comecem a competir melhor com o PCIe 4.0 Preços da unidade NVMe. Se estiver optando por qualquer SSD PCIe 5.0 NVMe agora, como um dos primeiros a adotar, recomendo realmente garantir que você tenha um resfriamento adequado.