O resilvering do zfs pode destruir dados com falhas de dispositivos incorretos?

3

Eu tive uma situação em que estou movendo dados para um novo pool zid raidz com quatro dispositivos, alguns deles virtuais para facilitar a migração. O sistema ficou completamente suspenso no meio de uma substituição de dispositivo de um dispositivo baseado em arquivo em um dispositivo físico.

O sistema nem sequer respondeu ao SysRq e teve que ser reposto fisicamente. Quando voltou a ficar online, o zfs decidiu que apenas 2 de 4 dispositivos estavam online e começaram a fazer o resilvering e a reportar um monte de erros. Eu não sabia como parar com isso, ele continua no backround mesmo quando a piscina é desmontada.

No momento em que consegui obter o dispositivo totalmente ok faltando on-line, ele relatou muitos erros.

Isso significa que o zfs destruiu dados durante o resilvering devido ao dispositivo ausente? Ou agora é possível fazer o resilver corretamente de volta agora que tem seus dispositivos originais no lugar?

Quando foi feito o resilver com apenas 2 dispositivos, ele foi resilvering em sda3 abaixo:

        NAME                             STATE     READ WRITE CKSUM
    zfs_raid                         DEGRADED     0     0 38.5K
      raidz1-0                       DEGRADED     0     0  129K
        sda3                         ONLINE       0     0     0
        sdc2                         ONLINE       0     0     0
        replacing-2                  DEGRADED     0     0     3
          /zfs_jbod2/zfs_raid/zfs.1  OFFLINE      0     0     0
          sdb1                       ONLINE       0     0     0  (resilvering)
        /zfs_jbod/zfs_raid/zfs.2     ONLINE       0     0     0  (resilvering)

erros: 25852 erros de dados, use '-v' para uma lista

    
por barrymac 01.09.2013 / 17:16

1 resposta

1

Não tendo inspecionado o código, isso é apenas especulação, mas eu diria "não". O ZFS raidz é aproximadamente equivalente ao RAID-5, e qualquer implementação competente do RAID-5 interromperá um reparo quando perder dois drives.

Essa é a chave aqui: você perdeu duas unidades. Isso eliminará qualquer sistema de redundância de disco único, seja ZFS raidz1 , 2-disco RAID-1 ou RAID-5 sem peças sobressalentes.

Sim, você substituiu a primeira unidade com falha, mas, de acordo com sua pergunta, a matriz ainda não havia se reconstruído, portanto, ela ainda estava efetivamente ausente.

Siga a lição: use redundância de disco duplo, adicione um hot spare ou ambos. Os discos são muito grandes hoje em dia para reconstruir rápido o suficiente para que a redundância de disco único seja boa o suficiente.

    
por 01.09.2013 / 17:35