Nous venons de lancer le service. Le site et le service sont encore en cours de finition : nous vous prions d’excuser d’avance d’éventuelles imprécisions ou maladresses. Vous avez repéré une erreur ou quelque chose ne fonctionne pas comme prévu ? Écrivez-nous, nous corrigerons rapidement.

← Tous les projets
FR
Au-delà de TAKT

zfs

Un fork d’OpenZFS. Sa branche par défaut reflète master en amont ; le travail propre au projet se trouve dans des branches séparées : un prototype de remodelage de RAIDZ sur place et les éléments pour le proposer en amont.

  • OpenZFS
  • RAIDZ
  • C
Statut
Un prototype validé et non une fonctionnalité finie, selon les termes du dépôt : pas prêt pour la production, format sur disque non définitif. Testé avec des matrices de pertes de disques, des points de plantage, KASAN et des essais d’endurance ; le passage à l’échelle sur de grands pools et une exécution complète de ZTS restent à faire.
Licence
CDDL, comme OpenZFS en amont ; les exceptions sont indiquées dans certains fichiers source.
Plateformes
Linux ; testé dans une VM de laboratoire Ubuntu sous QEMU/KVM, sur des builds basés sur zfs-2.4.4 et sur le master actuel.

Le problème résolu

Sur un pool qui héberge des machines virtuelles et des conteneurs en fonctionnement, changer la redondance RAIDZ ou retirer un disque impose aujourd’hui une fenêtre de maintenance : déplacer les invités, exporter le pool, reconstruire, tout remettre en place. L’extension RAIDZ d’OpenZFS 2.3 n’a ajouté que l’élargissement en ligne. Le but de ce travail est de modifier sur place la géométrie d’un pool actif, avec le seul espace libre du pool, en conservant snapshots et clones.

Fonctionnalités principales

  • zpool reparity augmente ou réduit la parité RAIDZ sur place (raidz1 ↔ raidz2 ↔ raidz3) ; avec --online, les datasets restent montés, et avec --async, --status et --cancel, l’opération tourne en arrière-plan.
  • Une table d’époques de disposition par vdev, derrière un seul nouveau feature flag (nom de travail com.openzfs:raidz_parity_epochs) : chaque bloc est lu et reconstruit dans la géométrie avec laquelle il a été écrit.
  • Validation fail-closed : la nouvelle parité ne prend effet qu’une fois qu’un recensement ne trouve plus aucun bloc à l’ancienne ; sinon le balayage reprend, y compris après un plantage.
  • Outils hors ligne dans zhack : retirer un disque d’un vdev RAIDZ (N → N−1), remodeler avec snapshots et clones, recalculer les sommes de contrôle et recompresser les données existantes ; ces deux derniers sont expérimentaux.
  • Tests fonctionnels ZTS et pages de manuel pour les nouvelles commandes ; un RFC et une série empilée de branches préparés pour la revue en amont.

Fonctionnement

Chaque vdev RAIDZ de premier niveau reçoit une petite table, en ajout seul, d’enregistrements {start_txg, width, parity}, de même forme que les enregistrements existants de l’extension RAIDZ. La géométrie d’un bloc est choisie d’après sa txg de naissance, si bien qu’anciens et nouveaux blocs coexistent. Un balayage borné, qui reprend après un plantage, réécrit les blocs existants par un copy-on-write ordinaire. Le codage des lignes RAIDZ, le format des pointeurs de bloc et ashift ne changent pas.

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

Prérequis

  • Un pool avec des vdevs RAIDZ. Le feature flag est incompatible et devient actif au premier remodelage.
  • Se compile depuis les sources comme OpenZFS. Les branches ozfs-pr/1-parity-epochs-recon, ozfs-pr/2-reparity-command et ozfs-pr/3-reshape-toolkit sont basées sur master, feat/raidz-* sur zfs-2.4.4.
  • Le retrait d’un disque et les outils hors ligne de zhack exigent que le pool soit exporté.

Cette page résume le README et la documentation du dépôt à la date d’octobre 2026. La référence reste le dépôt lui-même.