¿Dos grupos ZFS entrelazados?

¿Dos grupos ZFS entrelazados?

Estoy intentando limpiar un desastre en un sistema de servidor Ubuntu 12.04 LTS usando ZFS. Esto es lo que muestra el estado de zpool:

  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

Quiero hacer dos cosas: 1. Reemplazar la unidad defectuosa en el grupo TB4. Esto lo sé hacer. 2. Destruya y vuelva a crear completamente el grupo TB2.

Normalmente, simplemente haría un zpool, destruiría TB2 y comenzaría de nuevo. Sin embargo, el administrador anterior usó nombres sd* para TB2 y ID de disco para TB4. Al observar /dev/disk/by-id, descubrí que dos de las unidades TB4 (...71M y ...EAV) están vinculadas simbólicamente a /dev/sdj y /dev/sds respectivamente. Pero estos sdj y sds figuran como parte del grupo TB2. Me temo que hacer un zpool destroy TB2 corromperá las unidades en el grupo TB4, ya que los documentos dicen que la destrucción escribe en los discos miembros. ¿Hay alguna manera de hacer que ZFS simplemente se olvide de TB2 sin tener que escribir?

Le pregunté al administrador anterior por qué usaba dos métodos diferentes (/dev/sd* y by-id). Dijo que la asignación de letras de unidad a discos duros específicos no parecía repetible de un arranque a otro, por lo que cuando creó TB4, usó by-id. Supongo que este entrelazamiento de TB2 y TB4 es el resultado de eso.

Mi pensamiento actual es hacer esto:

  1. apagar la máquina
  2. tire de todas las unidades.
  3. Reiniciar.
  4. zpool destruir -f TB2
  5. apague y reinstale las unidades TB4
  6. reformatear las unidades TB2 en otra máquina
  7. Reinstale las unidades TB2 y cree un nuevo grupo utilizando la identificación del disco (no sd*)

¿Parece esto razonable? hay una manera mas facil?

Gracias a quien pueda ayudarme a salir de este lío.

Miguel

Respuesta1

El método propuesto parece funcionar. Sin embargo, también es innecesariamente complejo. En cambio, sugeriría:

  1. zpool export TB2. Esto desmontará todos los recursos asociados con el grupo y su sistema no intentará volver a montarlos (y posiblemente escribir en ellos) a menos que lo ejecute zpool importprimero.
  2. Reparar TB4. (O puedes hacerlo más tarde).
  3. zpool create <new pool> ...(haciendo referencia a los discos por id para evitar superposiciones nuevamente). Es posible que tengas que forzar la creación, ya que es posible que notes que esos discos estaban en uso en un grupo no importado.

Si desea realizar un ensayo del procedimiento, creo que puede crear algunos volúmenes en TB4 ( zfs create -V 5gb TB4/volume1) y crear dos "grupos anidados" a partir de ellos ( zpool create testpool1 ...) con un volumen superpuesto. Todo lo demás debería funcionar igual que arriba.

información relacionada