Como o zfs raidz-2 se recupera de 3 unidades inativas?

Como o zfs raidz-2 se recupera de 3 unidades inativas?

Estou me perguntando o que aconteceu, como o ZFS conseguiu se recuperar completamente ou se meus dados ainda estão realmente intactos.
Quando cheguei ontem à noite, vi isso para minha consternação e depois confusão.

zpool status
  pool: san
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-9P
  scan: resilvered 392K in 0h0m with 0 errors on Tue Jan 21 16:36:41 2020
config:

        NAME                                          STATE     READ WRITE CKSUM
        san                                           DEGRADED     0     0     0
          raidz2-0                                    DEGRADED     0     0     0
            ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346  ONLINE       0     0     0
            ata-ST2000DM001-9YN164_W1E07E0G           DEGRADED     0     0    38  too many errors
            ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332  DEGRADED     0     0    63  too many errors
            ata-ST2000NM0011_Z1P07NVZ                 ONLINE       0     0     0
            ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344  ONLINE       0     0     0
            wwn-0x50014ee20949b6f9                    DEGRADED     0     0    75  too many errors

errors: No known data errors 

Como é possível que não haja erros de dados e que todo o pool não esteja com falhas?

Uma unidade sdfapresenta uma falha no teste smartctl para SMART read fail, as outras apresentam um problema um pouco menor; setores incorrigíveis/pendentes ou erros UDMA CRC.

Tentei alternar cada unidade com falha off-line e, em seguida, on-line novamente, uma de cada vez, mas isso não ajudou.

    $ zpool status
  pool: san
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-9P
  scan: resilvered 392K in 0h0m with 0 errors on Tue Jan 21 16:36:41 2020
config:

        NAME                                          STATE     READ WRITE CKSUM
        san                                           DEGRADED     0     0     0
          raidz2-0                                    DEGRADED     0     0     0
            ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346  ONLINE       0     0     0
            ata-ST2000DM001-9YN164_W1E07E0G           DEGRADED     0     0    38  too many errors
            ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332  OFFLINE      0     0    63
            ata-ST2000NM0011_Z1P07NVZ                 ONLINE       0     0     0
            ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344  ONLINE       0     0     0
            wwn-0x50014ee20949b6f9                    DEGRADED     0     0    75  too many errors

Então, sentindo-me extremamente sortudo ou um pouco confuso se meus dados ainda poderiam estar lá, após uma inspeção para encontrar a pior unidade, fiz uma substituição pela minha única unidade sobressalente.

    $ zpool status
  pool: san
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Tue Jan 21 17:33:15 2020
        467G scanned out of 8.91T at 174M/s, 14h10m to go
        77.6G resilvered, 5.12% done
config:

        NAME                                              STATE     READ WRITE CKSUM
        san                                               DEGRADED     0     0     0
          raidz2-0                                        DEGRADED     0     0     0
            ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346      ONLINE       0     0     0
            replacing-1                                   DEGRADED     0     0     0
              ata-ST2000DM001-9YN164_W1E07E0G             OFFLINE      0     0    38
              ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1171516  ONLINE       0     0     0  (resilvering)
            ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332      DEGRADED     0     0    63  too many errors
            ata-ST2000NM0011_Z1P07NVZ                     ONLINE       0     0     0
            ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344      ONLINE       0     0     0
            wwn-0x50014ee20949b6f9                        DEGRADED     0     0    75  too many errors

O resilver foi concluído com sucesso.

$ zpool status
  pool: san
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-9P
  scan: resilvered 1.48T in 12h5m with 0 errors on Wed Jan 22 05:38:48 2020
config:

        NAME                                            STATE     READ WRITE CKSUM
        san                                             DEGRADED     0     0     0
          raidz2-0                                      DEGRADED     0     0     0
            ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346    ONLINE       0     0     0
            ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1171516  ONLINE       0     0     0
            ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332    DEGRADED     0     0    63  too many errors
            ata-ST2000NM0011_Z1P07NVZ                   ONLINE       0     0     0
            ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344    ONLINE       0     0     0
            wwn-0x50014ee20949b6f9                      DEGRADED     0     0    75  too many errors

Estou em uma encruzilhada agora. Normalmente eu ddzero os primeiros 2 MB da unidade com falha e substituo por ela mesma, o que estou bem em fazer, no entanto, se realmente houver dados faltando, posso precisar desses dois últimos volumes para recuperar as coisas.

Eu tenho isso sdfna minha mesa agora, removido. Sinto que posso, na pior das hipóteses, usar este para ajudar na recuperação.

Enquanto isso, acho que vou dev/zerar os primeiros dois MB da unidade degradada agora e substituí-la por ela mesma, e acho que as coisas devem funcionar, enxaguar e repetir para a segunda unidade com falha, até que eu consiga algumas substituições na mão.

Pergunta O que aconteceu, como o pool conseguiu aguentar ou posso estar faltando alguns dados (duvidoso, dada a integridade do zfs e seus relatórios)

Poderia ter sido devido a uma ordem de falha de sorte, por exemplo, não foi a unidade superior da pilha que falhou?

Pergunta Este é apenas para sua informação e não está relacionado ao tópico. O que fez com que todos os 3 falhassem ao mesmo tempo? Acho que foi um esfoliante o catalisador. Verifiquei na noite anterior e todas as unidades estavam online.

Observe que o cabeamento tem sido um problema no passado recente, o escritório fica frio à noite, mas esses problemas acabaram de ocorrer drive unavailable, em oposição aos erros de soma de verificação. Estou pensando que isso não é cabeamento, mas talvez unidades antigas, que têm 5 anos de idade. Mas 3 falhas em um dia? Vamos lá, isso é o suficiente para assustar muitos de nós!

Responder1

RAID-Z2 é paridade dupla, redundância semelhante ao RAID 6. Dois discos podem falhar completamente e os dados podem ser recuperados da paridade. Supondo que o resto da matriz esteja íntegro.

Você não teve necessariamente erros de E/S.DEGRADADO significa que o ZFS continuou usando o disco, apesar dos erros de soma de verificação. Talvez por causa de algumas reviravoltas, mas a unidade ainda funciona. Pora ligaçãodessa saída:

Execute 'zpool status -x' para determinar qual pool apresentou erros.

Encontre o dispositivo com uma contagem de erros diferente de zero para READ, WRITE ou CKSUM. Isso indica que o dispositivo apresentou um erro de leitura de E/S, um erro de gravação de E/S ou um erro de validação de soma de verificação. Como o dispositivo faz parte de um espelho ou dispositivo RAID-Z, o ZFS conseguiu se recuperar do erro e, posteriormente, reparar os dados danificados.

Se esses erros persistirem por um período de tempo, o ZFS poderá determinar que o dispositivo está com defeito e marcá-lo como tal. No entanto, essas contagens de erros podem ou não indicar que o dispositivo está inutilizável.

Em relação à saúde da unidade:

talvez unidades antigas, que têm 5 anos. Mas 3 falhas em um dia? Vamos lá, isso é o suficiente para assustar muitos de nós!

A restauração de backup testa dados importantes agora. De diferentes mídias, não desta matriz.

Substitua as unidades que continuam degradadas. Definitivamente, se o kernel relatar erros de E/S no syslog. Se estiver sob garantia ou contrato de suporte, aproveite isso. Se a garantia for aprovada, o fabricante apostou que eles não durarão tanto, então leve isso em consideração.

informação relacionada