Acabamos de lanzar. El sitio y el servicio aún se están puliendo: le pedimos disculpas de antemano por posibles imprecisiones o fallos. ¿Ha visto un error o algo no funciona como esperaba? Escríbanos y lo corregiremos enseguida.

← Todos los proyectos
ES
Más allá de TAKT

zfs

Un fork de OpenZFS. Su rama por defecto replica la rama master de upstream; el trabajo propio del proyecto está en ramas aparte: un prototipo de reconfiguración de RAIDZ in situ y el material para proponerlo upstream.

  • OpenZFS
  • RAIDZ
  • C
Estado
Un prototipo validado, no una función terminada, según el propio repositorio: no está listo para producción y el formato en disco no es definitivo. Probado con matrices de pérdida de dispositivos, puntos de interrupción por caída, KASAN y pruebas de resistencia prolongadas; la escala de pools grandes y una ejecución completa de ZTS siguen pendientes.
Licencia
CDDL, como OpenZFS upstream; las excepciones se indican en los archivos fuente correspondientes.
Plataformas
Linux; probado en una VM de laboratorio Ubuntu con QEMU/KVM sobre compilaciones basadas en zfs-2.4.4 y en el master actual.

Qué resuelve

En un pool que da servicio a máquinas virtuales y contenedores en marcha, cambiar la redundancia de RAIDZ o retirar un disco exige hoy una ventana de mantenimiento: mover los invitados, exportar el pool, reconstruir y volver a ponerlo todo en marcha. La expansión de RAIDZ de OpenZFS 2.3 solo añadió el aumento de ancho en línea. El objetivo de este trabajo es cambiar la geometría de un pool activo in situ, usando solo el espacio libre del propio pool y conservando instantáneas y clones.

Funciones principales

  • zpool reparity sube o baja la paridad de RAIDZ in situ (raidz1 ↔ raidz2 ↔ raidz3); con --online los datasets siguen montados, y --async, --status y --cancel lo ejecutan en segundo plano.
  • Una tabla de épocas de disposición por vdev tras un único feature flag nuevo (nombre provisional com.openzfs:raidz_parity_epochs): cada bloque se lee y se reconstruye con la geometría con la que se escribió.
  • Confirmación en modo fail-closed: la nueva paridad entra en vigor solo cuando un censo no encuentra ningún bloque con la antigua; si no, el barrido se reanuda, también tras una caída.
  • Herramientas zhack fuera de línea: retirar un disco de un vdev RAIDZ (N → N−1), reconfigurar con instantáneas y clones, recalcular checksums y recomprimir los datos existentes; las dos últimas son experimentales.
  • Pruebas funcionales ZTS y páginas man para los nuevos comandos; un RFC y una serie apilada de ramas preparadas para la revisión upstream.

Cómo funciona

Cada vdev RAIDZ de nivel superior recibe una pequeña tabla de solo anexado con registros {start_txg, width, parity}, con la misma forma que los registros existentes de la expansión de RAIDZ. La geometría de un bloque se elige por su txg de nacimiento, de modo que los bloques antiguos y los nuevos coexisten. Un barrido acotado y reanudable tras una caída reescribe los bloques existentes mediante el copy-on-write ordinario. La codificación de filas de RAIDZ, el formato de los punteros de bloque y el ashift no cambian.

zpool reparity [--online | --async | --status | --cancel] [--target N] pool

Requisitos

  • Un pool con vdevs RAIDZ. El feature flag es incompatible y se activa con la primera reconfiguración.
  • Se compila desde el código fuente como OpenZFS. Las ramas ozfs-pr/1-parity-epochs-recon, ozfs-pr/2-reparity-command y ozfs-pr/3-reshape-toolkit parten de master; feat/raidz-*, de zfs-2.4.4.
  • Retirar un disco y las herramientas zhack fuera de línea requieren exportar el pool.

Esta página resume el README y la documentación del repositorio a octubre de 2026. La fuente de referencia es el propio repositorio.