Dès que je vois des articles ou tuto parlant de ZFS alors qu’ils devraient parler d’OpenZFS, je constate que peut expliquent la technologie ZFS. Et je ne parle même pas de son histoire et évolution.

Petite histoire rapide

ZFS a été créé chez SUN Microsystems pour le système d’exploitation Solaris au début des années 2000. Puis en 2005, SUN a passé Solaris en open sources via la licence CDDL qui donna naissance à Open Solaris et par conséquence ZFS est passé lui aussi open source sur la même licence.

Les premières intégrations sérieuses l’ont été sur FreeBSD 7 alors que des portages sur Linux via Fuse (2006) et Mac OS X (par Apple) l’on précédé.

Mais un drame arriva, le rachat de SUN Microsystems par Oracle en 2009. Cela mit fin à la partie open source de ZFS et Open Solaris supporté par Oracle. Mais le monde du libre a repris les différents codes pour donner naissance à OpenZFS et illuminos.

Les choses deviennent intéressantes pour ZFS et OpenZFS, le premier, est maintenant fermé et le dernier lui est ouvert. Comment faire pour ne pas se tirer une balle dans le pied pour OpenZFS. Au moment de la fermeture, des sources ZFS étaient en version 28 et Oracle a continuer de le développer. Impossible de reprendre les numéros de version utilisés par ZFS dans OpenZFS, il alors été décidé qu’OpenZFS commencerait en version 5000, cela devrait éviter les soucis de se marcher sur les pieds. Jusqu’à maintenant, ça fonctionne bien. La version de ZFS par Oracle est la 48, mais OpenZFS garde une compatibilité jusqu’à la version 35.

Dernièrement, OpenZFS (décembre 2020) est sortie en version 2.0 (dernière monture du code : 2.0.6) avec de sacré avancés techniques dépassant largement une meilleure intégration dans Linux. La version 3 devrait s’attaquer à Mac OS.

Un peu de technique

ZFS est plus qu’un système de fichier, cela englobe une partie des fonctions dédiées à du hardware sur les cartes RAID.

ZFS

Le Zpool est un espace de stockage virtuel qui est basé sur des Vdev.

Ses Vdevs sont des Virtual devices. Ils sont constitués par des périphériques en mode bloc comme des disques dur complets (ce qui est recommandé) ou de partition ou même de fichier. Ce sont sur ses Vdevs que l’on va configurer le “RAID” en mode stripe (raid 0), miror (raid 1 et même le 10) et les fameux RAID-Z qui correspondent aux différents niveau de parité. De mémoire jusqu’à 3 disques de parité via le RAID-Z 3 qui peut être vu comme du raid 7.

Ensuite, il ne faut surtout pas négliger les différents type de cache.

  • ARC (en ram) ou L2ARC (ssd) : cache de lecture volatile
  • ZIL : cache d’écriture non volatile
  • SLOG (Separate Intent Log) : cache d’écriture volatile

C’est une petite explication rapide du fonctionnement du ZFS en dessous du système de fichier et des zvol. Le Zvol est aussi très intéressant.

Ne me demandez pas de comparer avec Btrfs, ne l’ayant pas utilisé, je ne me suis jamais intéressée de son fonctionnement.