Recuperação zpool com falha - posso inserir alguns discos em novos discos para que eu possa buscar os doadores?

3

Estou no processo de tentar recuperar um pool que foi degradado e negligenciado e, em seguida, falhou um segundo membro de espelho, resultando em um pool com falha. Por alguma razão, o sobressalente nunca foi automaticamente colocado, mesmo que essa opção tenha sido definida para essa piscina, mas isso não é do ponto.

Isso está em um servidor OmniOS. As informações do pool são as seguintes:

  pool: dev-sata1
 state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://illumos.org/msg/ZFS-8000-JQ
  scan: resilvered 1.53T in 21h6m with 0 errors on Sat Jun 17 13:18:04 2017
config:

        NAME                       STATE     READ WRITE CKSUM
        dev-sata1                  UNAVAIL    227   623     0  insufficient replicas
          mirror-0                 ONLINE       0     0     0
            c1t5000C5003ECEEC42d0  ONLINE       0     0     0
            c1t5000C5003ED6D008d0  ONLINE       0     0     0
          mirror-1                 ONLINE       0     0     0
            c1t5000C500930358EAd0  ONLINE       0     0     0
            c1t5000C500930318E1d0  ONLINE       0     0     0
          mirror-3                 ONLINE       0     0     0
            c1t5000C5003F362DA7d0  ONLINE       0     0     0
            c1t5000C5003F365D94d0  ONLINE       0     0     0
          mirror-4                 ONLINE       0     0     0
            c1t5000C50064D11652d0  ONLINE       0     0     0
            c1t5000C500668EC894d0  ONLINE       0     0     0
          mirror-5                 ONLINE       0     0     0
            c1t5000C5007A2DBE23d0  ONLINE       0     0     0
            c1t5000C5007A2DF29Cd0  ONLINE       0     0     0
          mirror-6                 UNAVAIL    457 1.22K     5  insufficient replicas
            15606980839703210365   UNAVAIL      0     0     0  was /dev/dsk/c1t5000C5007A2E1359d0s0
            c1t5000C5007A2E1BAEd0  FAULTED     37 1.25K     5  too many errors
          mirror-7                 ONLINE       0     0     0
            c1t5000C5007A34981Bd0  ONLINE       0     0     0
            c1t5000C5007A3929B6d0  ONLINE       0     0     0
        logs
          mirror-2                 ONLINE       0     0     0
            c1t55CD2E404B740DD3d0  ONLINE       0     0     0
            c1t55CD2E404B7591BEd0  ONLINE       0     0     0
        cache
          c1t50025388A0952EB0d0    ONLINE       0     0     0
        spares
          c1t5000C5002CD7AFB6d0    AVAIL

O disco "c1t5000C5007A2E1BAEd0" está atualmente em um recurso de recuperação de dados, mas eles esgotaram o suprimento de cabeçotes de substituição, incluindo os de discos de doadores que fornecemos. O disco marcado como ausente acabou sendo encontrado e poderia ser recuperado, mas é o último resultado porque não tenho idéia de como ele está desatualizado comparado ao resto e o que isso significaria para consistência. Para ser considerado um doador, as primeiras 3 letras da série precisam corresponder, assim como o código do site. Eu tenho 4 outros discos na piscina que correspondem a esse critério e eram saudáveis no momento em que a piscina caiu.

Então, para minha pergunta: é possível substituir os outros 4 discos compatíveis com o doador (com base no número de série) por 4 novos discos depois de usar o dd para copiar todo o disco doador para o novo disco? para cada?

Não estou claro se o pool exige que o WWN ou a série correspondam ao que ele armazenou (se armazenar algo além do cache) ao importar um disco ou se ele procura metadados em cada disco para determinar se pode importar um pool. Se este último for verdadeiro, a minha estratégia é obter mais 4 discos de doadores viáveis?

    
por Dirk 04.10.2018 / 19:16

1 resposta

2

Definitivamente, não use dd ! O ZFS tem um comando interno para isso, que é descrito razoavelmente bem nos documentos da Oracle . Você deve poder usar zpool replace tank <old device> <new device> para fazer a parte principal da operação, mas também existem alguns outros comandos auxiliares:

The following are the basic steps for replacing a disk:

  • Offline the disk, if necessary, with the zpool offline command.
  • Remove the disk to be replaced.
  • Insert the replacement disk.
  • Run the zpool replace command. For example: zpool replace tank c1t1d0
  • Bring the disk online with the zpool online command.

A página man também tem algumas informações adicionais:

zpool replace [-f]  pool device [new_device]

 Replaces old_device with new_device.  This is equivalent to attaching
 new_device, waiting for it to resilver, and then detaching
 old_device.

 The size of new_device must be greater than or equal to the minimum
 size of all the devices in a mirror or raidz configuration.

 new_device is required if the pool is not redundant. If new_device is
 not specified, it defaults to old_device.  This form of replacement
 is useful after an existing disk has failed and has been physically
 replaced. In this case, the new disk may have the same /dev path as
 the old device, even though it is actually a different disk.  ZFS
 recognizes this.

 -f  Forces use of new_device, even if its appears to be in use.
     Not all devices can be overridden in this manner.

Naturalmente, é provavelmente melhor tentar isso primeiro em uma VM que tenha discos virtuais em um zpool de configuração semelhante, em vez de tentar pela primeira vez no pool com dados que você se preocupa em recuperar.

A propósito, esta outra parte dos documentos explica um pouco mais sobre peças de reposição e talvez inclua ponteiros para explicar por que o seu não foi usado. Pode ser valioso mexer um pouco para ter certeza de que não vai sair novamente da próxima vez: (.

    
por 05.10.2018 / 00:50