Dois pools ZFS Emaranhados?

1

Estou tentando limpar uma bagunça em um sistema de servidor Ubuntu 12.04 LTS usando o ZFS. Veja o que o zpool status mostra:

  pool: TB2
 state: UNAVAIL
status: One or more devices could not be used because the label is missing
        or invalid.  There are insufficient replicas for the pool to continue
        functioning.
action: Destroy and re-create the pool from
        a backup source.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    TB2         UNAVAIL      0     0     0  insufficient replicas
      sdd       ONLINE       0     0     0
      sde       ONLINE       0     0     0
      sdf       ONLINE       0     0     0
      sdg       ONLINE       0     0     0
      sdh       ONLINE       0     0     0
      sdi       ONLINE       0     0     0
      sdj       ONLINE       0     0     0
      sds       ONLINE       0     0     0
      sdt       UNAVAIL      0     0     0

  pool: TB4
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: resilvered 2.52T in 16h41m with 0 errors on Tue Feb  6 09:27:46 2018
config:

    NAME                                              STATE     READ WRITE CKSUM
    TB4                                               DEGRADED     0     0     0
      raidz2-0                                        DEGRADED     0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG9MBVS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG8G71M    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGH0LHV    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAG8MV3T    ONLINE       0     0     0
        spare-4                                       DEGRADED     0     0     0
          ata-Hitachi_HDS724040ALE640_PK2311PAG614MM  UNAVAIL      0     0     0
          ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV  ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAGH2XRW    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG7TGDS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGG3K0V    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG59PYM    ONLINE       0     0     0
    spares
      ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV      INUSE     currently in use

errors: No known data errors

Eu quero fazer duas coisas:   1. Substitua a unidade defeituosa na piscina TB4. Isso eu sei fazer.   2. Completamente destrua e recrie o pool TB2.

Normalmente, eu apenas faço um zpool destroy TB2 e começo de novo. No entanto, o administrador anterior usou nomes sd * para TB2 e id de disco para TB4. Ao olhar para / dev / disk / by-id, descobri que duas das unidades TB4 (... 71M e ... EAV) são vinculadas a / dev / sdj e / dev / sds, respectivamente. Mas esses sdj e sds estão listados como parte do pool TB2. Eu tenho medo que fazendo um zpool destruir TB2 irá corromper as unidades no pool TB4, uma vez que os documentos dizem que destruir gravações nos discos membros. Existe alguma maneira de fazer com que o ZFS simplesmente esqueça o TB2 sem realmente escrever?

Perguntei ao administrador anterior por que ele usou dois métodos diferentes (/ dev / sd * e by-id). Ele disse que a atribuição de letras de unidade para discos rígidos específicos não parecia ser repetida do boot para o boot, então quando ele criou o TB4, ele usou by-id. Eu acho que esse emaranhamento de TB2 e TB4 é um resultado disso.

Meu pensamento atual é fazer isso:

  1. desligue a máquina
  2. puxe todas as unidades.
  3. Reinicialize.
  4. zpool destroy -f TB2
  5. desligue e reinstale as unidades TB4
  6. reformatar as unidades TB2 em outra máquina
  7. Reinstale as unidades TB2 e crie um novo pool usando id do disco (não sd *)

Isso parece razoável? Existe uma maneira mais fácil?

Obrigado a qualquer um que possa me ajudar com essa bagunça.

Michael

    
por Michael 06.06.2018 / 09:47

1 resposta

0

Seu método proposto parece que funcionaria. No entanto, também é desnecessariamente complexo. Em vez disso, gostaria de sugerir:

  1. %código%. Isso desmontará todos os recursos associados ao pool e seu sistema não tentará remontá-los (e possivelmente escrever para eles), a menos que você execute zpool export TB2 primeiro.
  2. Repare o TB4. (Ou você pode fazer isso mais tarde.)
  3. zpool import (referenciando os discos por id para evitar sobreposição novamente). Você pode ter que forçar a criação, pois pode perceber que esses discos estavam em uso por um pool não importado.

Se você quiser fazer uma execução do procedimento, acho que pode criar alguns volumes no TB4 ( zpool create <new pool> ... ) e criar dois "pools aninhados" ( zfs create -V 5gb TB4/volume1 ) com um volume sobreposto. Todo o resto deve funcionar da mesma forma acima.

    
por 06.06.2018 / 18:40

Tags