O que acontece se eu forçar o ZFS a desanexar um hot spare sem réplicas válidas?

9

Eu tenho um pool ZFS composto por 6 RAIDZs. Um dos RAIDZ está degradado, devido à perda de dois discos no RAIDZ único o suficiente para que o ZFS não pudesse se recuperar da primeira falha antes da falha do segundo disco. Aqui está a saída do "status do zpool" logo após a reinicialização:

  pool: pod2
 state: DEGRADED
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
 scrub: resilver in progress for 0h6m, 0.05% done, 237h17m to go
config:

        NAME                                                 STATE     READ WRITE CKSUM
        pod2                                                 DEGRADED     0     0 29.3K
          raidz1-0                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F165XG    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1660X    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1678R    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1689F    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16AW9    ONLINE       0     0     0
          raidz1-1                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16C6E    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16C9F    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16FCD    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16JDQ    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17M6V    ONLINE       0     0     0
          raidz1-2                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17MSZ    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17MXE    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17XKB    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17XMW    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17ZHY    ONLINE       0     0     0
          raidz1-3                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18BM4    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18BRF    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18XLP    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09880    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F098BE    ONLINE       0     0     0
          raidz1-4                                           DEGRADED     0     0 58.7K
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09B0M    ONLINE       0     0     0
            spare-1                                          DEGRADED     0     0     0
              disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BEN  UNAVAIL      0     0     0  cannot open
              disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49M01  ONLINE       0     0     0  837K resilvered
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6LC    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWD1    ONLINE       0     0     0
            spare-4                                          DEGRADED     0     0     0
              disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09C8G  UNAVAIL      0     0     0  cannot open
              disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F4A7ZE  ONLINE       0     0     0  830K resilvered
          raidz1-5                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-1CH_Z1F2KNQP    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BML0    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPV4    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPZP    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ78    ONLINE       0     0     0
          raidz1-6                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ9G    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQDF    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQFQ    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CW1A    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BV7M    ONLINE       0     0     0
        spares
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49M01      INUSE     currently in use
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F4A7ZE      INUSE     currently in use
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49MB1      AVAIL   
          disk/by-id/scsi-SATA_ST3000DM001-1ER_Z5001SS2      AVAIL   
          disk/by-id/scsi-SATA_ST3000DM001-1ER_Z5001R0F      AVAIL   

errors: 37062187 data errors, use '-v' for a list

Quando o primeiro disco falhou, substituí-o por um hot spare e ele começou a resilver. Antes da conclusão do resilver, um segundo disco falhou, então substituí o segundo por outro hot spare. Desde então, ele começará a resilver, concluirá cerca de 50% e começará a devorar memória até consumir tudo e causar a falha do sistema operacional.

Atualizar a RAM no servidor não é uma opção direta neste momento, e não está claro para mim que isso garantiria uma solução. Entendo que haverá perda de dados nesse estágio, mas se eu puder sacrificar o conteúdo deste RAIDZ para preservar o restante do pool, esse é um resultado perfeitamente aceitável. Estou no processo de fazer o backup do conteúdo deste servidor para outro servidor, mas o problema de consumo de memória força uma reinicialização (ou falha) a cada 48 horas, o que interrompe meu backup do rsync e reiniciar o rsync leva tempo (pode retomar assim que descobrir onde parou, mas isso leva muito tempo).

Penso que o ZFS que tenta lidar com duas operações de substituição sobressalente está na raiz do problema de consumo de memória, por isso quero remover um dos hot spares para que o ZFS possa trabalhar um de cada vez. No entanto, quando tento desanexar uma das peças de reposição, recebo "não é possível desanexar / dev / disk / by-id / scsi-SATA_ST3000DM001-1CH_W1F49M01: sem réplicas válidas". Talvez eu possa usar a opção -f para forçar a operação, mas não está claro para mim exatamente qual será o resultado disso, então eu queria ver se alguém tem alguma entrada antes de prosseguir.

Se eu conseguir colocar o sistema em um estado estável, onde ele possa permanecer operacional por tempo suficiente para a conclusão do backup, planejo retirá-lo para revisão, mas com as condições atuais, ele fica preso em um loop de recuperação.

jasongullickson
fonte
Você marcou isso zfs-fuse. Este é realmente o ZFS Fuse? Forneça detalhes do sistema operacional.
ewwhite
Você apostou ewwhite. Debian 6.0.6
jasongullickson
Quanta RAM esse sistema possui? Quantas vezes você esfregou a matriz?
Chris S
Por que você estava usando o FUSE e não uma implementação real do ZFS? Especialmente considerando que há muito hardware aqui. Eu estou pensando que esta matriz está concluída ...
ewwhite 14/07/2014
Na época em que o sistema foi construído, não havia implementação nativa do ZFS para Linux.
Jasongullickson

Respostas:

1

No momento, você pode desanexar os discos UNAVAIL, o ZFS não os usa mais.

Você tem dois discos com falha em uma instalação do RAIDZ-1. É muito provável que você esteja observando alguma perda de dados e esteja pronto para restaurar a partir do backup.

Como observação lateral, o RAIDZ provou ser muito instável em minha experiência com o OpenSolaris / Solaris11. Eu desaconselharia usá-lo em QUALQUER tipo de carga de trabalho de produção.

Além disso, para reforçar o que o ewwhite disse, o FUSE não é sua melhor opção. Aproveito a oportunidade para migrar para algo mais estável (talvez FreeBSD 10).

Giovanni Tirloni
fonte