ZFS offre des fonctionnalités avancées de stockage, telles que la vérification de l’intégrité, les instantanés et la gestion de volumes, aussi bien sous Linux que sous FreeBSD. Cependant, leur intégration diffère selon chaque système : sur de nombreuses distributions Linux, le module OpenZFS reste séparé du noyau et peut nécessiter une recompilation après chaque mise à jour ; en revanche, FreeBSD intègre ZFS directement dans son processus de développement et de publication. Cette différence impacte la maintenance, sans pour autant faire pencher la balance en faveur de l’une ou l’autre plateforme comme étant la meilleure option pour tous les serveurs.
Les fondamentaux de ZFS sous Linux et FreeBSD en 30 secondes
- Linux utilise un module séparé. Sur des systèmes comme Debian, le paquet
zfs-dkmspermet de compiler le module pour le noyau installé. - La différence de licence en explique une partie. OpenZFS utilise la licence CDDL, tandis que le noyau Linux est distribué sous GPL v2. La compatibilité entre ces deux licences reste sujette à diverses interprétations juridiques.
- FreeBSD intègre ZFS dans sa version du système. Ceci permet de coordonner mises à jour du système et OpenZFS, tout en nécessitant aussi de maintenir les deux composants.
- Les versions comptent. Un noyau récent peut nécessiter une version d’OpenZFS adaptée, avec les modifications requises pour une compilation et un fonctionnement optimaux.
- Le choix dépend de l’environnement. Linux bénéficie d’un large écosystème de distributions et d’outils, tandis que FreeBSD offre une intégration plus directe de ZFS dans le système de base.
Ce débat n’est pas nouveau. En janvier 2019, une discussion sur la liste de diffusion du noyau Linux a révélé un désaccord entre certains mainteneurs et ceux souhaitant conserver certaines interfaces nécessaires à ZFS. Christoph Hellwig a conseillé à un utilisateur de migrer vers FreeBSD. La réponse mettait en lumière un souci technique et une problématique liée aux licences, qui continuent de conditionner la façon dont OpenZFS est distribué sous Linux.
Pourquoi ZFS nécessite une intégration spécifique sous Linux
OpenZFS est un système de fichiers et un gestionnaire de volumes né originellement sous Solaris, maintenant maintenu par une communauté de développeurs. Son code est utilisé à la fois sous Linux et sous FreeBSD. Le problème ne réside pas dans le fait que le système de fichiers soit propre à une plateforme, mais dans la manière dont il s’intègre au cœur de chaque système d’exploitation.
Linux est distribué sous la licence GPL v2, tandis que OpenZFS utilise la licence CDDL. La Free Software Foundation (FSF) considère que ces licences sont incompatibles lorsqu’il s’agit de combiner leur code comme l’exige l’intégration de ZFS dans le noyau Linux. Canonical, pour sa part, a publié en 2016 une interprétation juridique affirmant que distribuer ZFS comme un module séparé était compatible avec les deux licences.
Il est donc important de distinguer les aspects techniques des questions juridiques. Aucune décision judiciaire n’a encore tranché définitivement cette incompatibilité globale. La documentation officielle d’OpenZFS précise que les licences empêchent la distribution d’OpenZFS intégré dans le binaire du noyau Linux, mais n’interdisent pas la distribution du code source ou d’un module binaire séparé.
En Debian, le système de fichiers est disponible via le paquet zfs-dkms, qui se trouve dans la section contrib. DKMS, pour Dynamic Kernel Module Support, est une méthode permettant de compiler des modules externes pour les noyaux installés. Lorsqu’un noyau est mis à jour, le module ZFS doit éventuellement être recompilé pour s’adapter à la nouvelle version.
Cela constitue une étape supplémentaire pour l’administrateur. Si la compilation échoue parce que le module n’est pas encore compatible avec le nouveau noyau, le problème doit être résolu avant de lancer l’utilisation de cette nouvelle configuration. Sur un système utilisant ZFS pour la racine, cette problématique est encore plus critique, car le noyau doit pouvoir accéder au système de fichiers lors du démarrage.
Toutes les distributions ne gèrent pas ZFS de la même manière. Ubuntu propose des paquets spécifiques, et les systèmes utilisant des noyaux avec support à long terme changent moins souvent, ce qui peut réduire la fréquence des incompatibilités récentes. Toutefois, cela n’élimine pas le besoin de maintenir une version compatible entre le noyau et OpenZFS.
Le conflit avec les développeurs Linux
Le 15 janvier 2019, lors du développement de Linux 5.0, une modification relative à l’exportation de fonctions internes a affecté du code utilisé par ZFS on Linux. La discussion, menée sur la liste du noyau, a abouti à la recommandation de Christoph Hellwig : l’utilisateur devrait migrer vers FreeBSD.
Greg Kroah-Hartman a également pris la parole. Tout en soulignant que ZFS est une excellente option de système de fichiers, il a rappelé que sa licence était incompatible avec celle de Linux. La position des mainteneurs est motivée par des enjeux légaux et la gestion des interfaces internes exploitées par des modules externes.
En janvier 2020, Linus Torvalds a exprimé une position similaire dans une discussion relayée par Real World Technologies. Il a précisé que tout module comme ZFS ne bénéficierait pas du même niveau de maintenance qu’une fonction intégrée dans le noyau.
Ces déclarations n’interdisent pas l’utilisation de ZFS sous Linux ni ne signifient que l’OpenZFS est abandonné. Le dépôt officiel continue de publier des versions et précise la compatibilité avec certaines distributions et versions de noyaux. La réalité est que l’équipe Linux ne considère pas comme de sa responsabilité la gestion de toutes les interfaces internes utilisées par ZFS.
Lorsqu’une nouvelle version du noyau est publiée, OpenZFS doit ajuster son code aux changements affectant ses modules externes. Le projet maintient des branches stables et des versions à support prolongé. La rapidité de mise à jour dépend des modifications apportées et du travail des développeurs.
Une étude de Vivian Voss analyse cette réactivité en calculant le délai entre la sortie d’un noyau et la disponibilité d’une version compatible d’OpenZFS. Selon l’article, le délai varie entre 5 et 88 jours pour 17 versions principales, de Linux 6.6 à 7.2, avec une médiane de 38 jours. Ces mesures, provenant de l’analyse initiale, ne garantissent pas que toutes les futures mises à jour suivront le même rythme. La situation dépend aussi de la distribution, de la version d’OpenZFS et de leur politique de mise à jour.
Ce qui change lorsque ZFS est intégré à FreeBSD
FreeBSD opère une approche différente. ZFS est intégré dès la version 7.0, sortie en 2008, et le projet utilise désormais OpenZFS sur ses versions modernes. L’installation de FreeBSD propose une option automatique pour ZFS, ce qui permet de configurer ce système de fichiers lors de l’installation, sans recourir à un module DKMS externe comme sous Debian.
L’atout réside dans le cycle de développement : l’équipe de FreeBSD peut tester et coordonner le noyau et OpenZFS dans une seule version du système. Cela réduit la dépendance à une mise à jour séparée pour que le module soit compatible avec la nouvelle version du noyau.
FreeBSD propose aussi des environnements de démarrage via bectl, qui permet de gérer et de revenir à un environnement antérieur ZFS. Cette capacité de rollback facilite la récupération après une mise à jour problématique, à condition que le système ait été préparé à cette fin.
L’intégration ne supprime pas complètement le travail de maintenance. FreeBSD doit continuer à mettre à jour, tester et corriger OpenZFS pour assurer la compatibilité avec ses versions supportées. La différence est surtout d’ordre organisationnel : la coordination du système de fichiers se fait avec le reste du système d’exploitation, plutôt que par un module indépendant devant s’adapter au noyau.
FreeBSD 15.1, prévu pour une sortie officielle en juin 2026, exemplifie cette stratégie intégrée. Des notes de versions antérieures mentionnaient la mise à jour vers OpenZFS 2.4.2, mais cela ne garantit pas que toutes les versions finales ou installations utilisent exactement cette version. Il est recommandé de consulter chaque release pour connaître la version précise déployée.
D’une certaine manière, la différence se mesure aussi à l’écosystème : Linux possède un vaste choix de distributions, outils d’entreprise, pilotes et plateformes de stockage. Par exemple, TrueNAS a migré vers une base Linux pour ses versions SCALE, unifiant ses gammes avec TrueNAS 25.04. La gestion de ZFS dans ce contexte montre qu’une intégration repose aussi sur des choix tactiques de produits et de maintenance, sans pour autant suivre la même logique que celle du système de base de FreeBSD.
Ainsi, la décision n’est pas simplement de choisir entre un système avec ou sans ZFS. La réalité, c’est que les deux utilisent OpenZFS ; la différence réside dans qui assure la coordination des versions, le travail nécessaire après les mises à jour, et la politique de maintenance la plus adaptée à votre environnement.
Questions fréquentes
Pourquoi ZFS nécessite-t-il DKMS sous Debian ?
Debian propose OpenZFS sous forme d’un module externe via zfs-dkms. DKMS permet de récompiler ce module à chaque mise à jour du noyau, à condition que la version d’OpenZFS supporte cette opération.
Est-il illégal d’utiliser ZFS sous Linux ?
Aucune décision judiciaire définitive n’a encore tranché la compatibilité entre les licences GPLv2 et CDDL. La FSF considère qu’elles sont incompatibles, tandis que Canonical soutient que distribuer ZFS en tant que module séparé reste conforme à ces licences.
FreeBSD intègre-t-il ZFS par défaut ?
Oui. ZFS est présent dans le système de base depuis la version 7.0 en 2008. Les versions modernes de FreeBSD utilisent OpenZFS. Cette intégration facilite la gestion et la mise à jour du système de fichiers directement avec le reste du système.
Quel système privilégier pour un serveur avec ZFS ?
Cela dépend de votre environnement. FreeBSD permet une coordination directe entre le noyau et ZFS dans son cycle de publication, tandis que Linux offre une plus grande variété de distributions, d’outils, ainsi que des options de support à long terme, ce qui peut simplifier la maintenance selon le contexte.