¿Crecer ZFS RAID-Z[123] sin degradación?

¿Crecer ZFS RAID-Z[123] sin degradación?

Sé que en ZFS, la única forma de hacer crecer un vdev RAID-Z (o RAID-Z2 o RAID-Z3) es reemplazar los discos por otros más grandes; No hay manera de cambiar la geometría. Sin embargo, ¿es posible hacerlo sin degradar la matriz en el proceso?

Como ejemplo, supongamos que tengo una matriz RAID-Z con 4 discos: 1x2TB y 3x1TB generan 3 TB de espacio utilizable. Con todas las unidades funcionando, compro 3 unidades más de 2 TB para ampliar la matriz (a 6 TB utilizables). Si elimino y reemplazo cada uno de los 1 TB con 2 TB, uno a la vez, para forzar cada recuperación, entonces estaría degradando innecesaria y repetidamente la matriz y aumentando el riesgo de falla en el proceso.

Lo que espero que sea posible es reflejar cada disco antes de reemplazarlo. es decir, agregue los primeros 2 TB a una bahía de repuesto, refleje el primer disco de 1 TB, luego retire el 1 TB y coloque los 2 TB en la ranura de la unidad extraída; luego repita para el segundo y tercer disco de 1 TB. Potencialmente, esto podría incluso obviar la necesidad de recuperar la plata o, al menos, de recalcular la paridad.

¿Es posible tal cosa?

Respuesta1

La solución propuesta es posible, pero existen algunos inconvenientes importantes:

  • No puede escribir nada en el grupo ( zpool import -o readonly=on ${YOUR_ZFS_POOL}) mientras se realiza una clonación de disco.
  • Debe exportar el grupo ( zpool export ${YOUR_ZFS_POOL}) para cada disco que cambie.

Después de clonar un disco vdev, debes:

  1. Exporte el grupo ( zpool export ${YOUR_ZFS_POOL}).
  2. Zap ( zpool labelclear ${OLD_DISK_DEVICE}) o retire físicamente el disco antiguo.
    Advertencia:No hay forma de deshacer si eliminas el disco.
  3. Si es necesario, haga crecer la partición vdev en el nuevo disco.
  4. Importe el grupo ( zpool import ${YOUR_ZFS_POOL}).
    Advertencia:No se puede deshacer después de este punto. El disco antiguo ya no puede estar en línea en el mismo grupo.
  5. Expanda el disco ( zpool online -e ${NEW_DISK_VDEV}).

Una vez que haya repetido estos pasos para cada disco que esté reemplazando, la nueva capacidad debería surtir efecto.


La función de reemplazo incorporada de ZFS está diseñada para evitar toda esta complejidad adicional descrita en la sección anterior. Si tiene miedo de corromper su RAID-Z zpool durante una recuperación, tal vez debería:

  • ha creado el grupo con más redundancia (RAID-Z2, RAID-Z3), o
  • haga una copia de seguridad de su grupo en otro lugar mientras hace crecer su matriz.

Además, si un disco realmente falla, ¿seguiría contento con RAID-Z?

Si tiene un presupuesto ajustado y realmente no puede permitirse un lugar para realizar copias de seguridad de sus conjuntos de datos, de hecho es más seguro ejecutar su plan porque los clones serían operaciones transaccionales de todo o nada, pero recuerde que su grupo será de sólo lectura. o sin conexión por un tiempo, y también corre el riesgo de cometer un error durante los pasos posteriores a la clonación.

Usando zpool replacesería:

  • será más rápido*, porque solo se copiará el almacenamiento usado, en lugar de todo el dispositivo de bloque
    * si tiene elfunción de fregado secuencial/replateado
  • no tendrá tiempo de inactividad, porque la piscina estaría en pleno funcionamiento mientras se realiza la recuperación de la plata.
  • eliminar el error humano, porque estaría utilizando el flujo de trabajo esperado por ZFS para reemplazar un disco

información relacionada