ZFS

Un article de Wikipédia, l'encyclopédie libre.

ZFS
Développeur Sun Microsystems / Oracle
Introduction
(Solaris 10)
Limitations
Taille maximale de fichier 16 Eio
Nombre maximal de fichiers 248
Taille maximale du nom de fichiers 255 octets
Taille maximale de volume 16 Eio
Fonctionnalités
Forks Oui
Permissions POSIX
Compression intégrée Oui
Chiffrement intégré Oui

ZFS est un système de fichiers open source sous licence CDDL.

Les caractéristiques de ce système de fichiers sont sa très haute capacité de stockage, l'intégration de beaucoup de concepts que l'on trouve sur d'autres systèmes de fichiers, et la gestion de volume. Il utilise pour cela des structures de données comme les B-tree "On-Disk", et un adressage des secteurs disque logique au lieu d'un adressage physique.

Produit par Sun Microsystems (société rachetée par Oracle en 2009) pour Solaris 10 et au-delà, il a été conçu par l'équipe de Jeff Bonwick (en). Annoncé pour , il a été intégré à Solaris le et le en tant que caractéristique du build 27 d'OpenSolaris. Sun a annoncé que ZFS était intégré dans la mise à jour de Solaris datée de , soit un an après l'ouverture de la communauté OpenSolaris.

Le « Z » ne signifie rien de particulier officiellement mais est connu dans la presse sous différents noms, tel Zettabyte (zettaoctet en français), concernant le stockage de données informatiques. La signification de ZFS est aussi parfois expliquée comme le mot de la fin des systèmes de fichiers[1].

Le projet OpenZFS vise à poursuivre le développement de ZFS d'une manière réellement open source tout en centralisant les portages sur les différents systèmes.

ZFSonLinux utilise OpenZFS[2].

Caractéristiques techniques[modifier | modifier le code]

Capacité théorique[modifier | modifier le code]

ZFS est un système de fichiers 128 bits, ce qui signifie que ses capacités de stockage sont 264 fois celles des systèmes de fichiers 64 bits actuels. D'un point de vue plus pratique que théorique, les limitations de ZFS sont tellement grandes qu'elles ne pourront jamais être atteintes. En effet, selon Bonwick, « Vous ne pourriez pas remplir un espace de données 128 bits sans faire bouillir les océans. »[3].

Quelques-unes des limites de ZFS :

  • 248 : le nombre d'instantanés maximal ;
  • 248 : le nombre de fichiers dans chaque système de fichiers ;
  • 16 exbioctets : la taille maximum du système de fichiers ;
  • 16 exbioctets : la taille maximum d'un seul fichier ;
  • 256 : le nombre maximal théorique de fichiers par répertoire (en réalité limité à 248 par le nombre maximal de fichiers dans un système de fichiers).

En réponse à une question concernant le rapport entre remplir un système de fichiers ZFS et l'ébullition des océans, Bonwick répondit[3] :

« Bien que nous aimerions tous que la Loi de Moore continue de s'appliquer pour toujours, la mécanique quantique impose quelques limites fondamentales sur les vitesses de calcul et les capacités de stockage de n'importe quel objet physique. En particulier, il a été montré qu'un kilogramme de matière contenue dans un volume d'un litre pouvait effectuer au maximum 1051 opérations par seconde sur au maximum 1031 bits d'information[4]. Un espace de stockage 128 bits entièrement rempli contiendrait 2128 blocs = 2137 octets = 2140 bits ; d'où la masse minimale nécessaire pour contenir les bits serait de (2140 bits) / (1031 bits/kg) = 136 milliards de kg.

Cependant, pour pouvoir fonctionner à cette limite de 1031 bits/kg, la totalité de la masse de l'ordinateur devrait être composée d'énergie pure. Selon E=mc2, l'énergie au repos de 136 milliards de kg est de 1,2 × 1028 joules. La masse des océans est d'environ 1,4 × 1021 kg. Il faut environ 4 000 J pour élever la température d'un kilogramme d'eau d'un degré Celsius, soit 400 000 J pour réchauffer de l'état gelé à l'ébullition. La chaleur latente de vaporisation ajoute encore 2 millions J/kg. Ainsi l'énergie nécessaire pour porter à ébullition les océans est d'environ 2,4 × 106 J/kg × 1,4 × 1021 kg = 3,4 × 1027 J. Ainsi, remplir en totalité un espace de stockage 128 bits consommerait, littéralement, plus d'énergie que de faire bouillir les océans. »

Dans le but de maximiser les performances en lecture/écriture, ZFS utilise tout l'espace disponible dans la RAM pour créer un énorme cache : le ARC « adaptive replacement cache » ce qui peut poser problème aux processus qui testent la quantité de mémoire vive disponible avant de se lancer (il y a moyen de limiter la taille de ce cache bien sûr), mais qui a le mérite de tirer parti au maximum de cette ressource souvent inutilisée.

Interopérabilité[modifier | modifier le code]

ZFS est interopérable avec des réseaux Windows grâce à des fonctionnalités spéciales :

  • Sensibilité à la casse : Case sensitivity support (casesensitivity) ;
  • Verrous non bloquants : Non-blocking mandatory locks (nbmand) ;
  • Partages SMB : SMB share support (sharesmb) ;
  • Normalisation Unicode : Unicode normalization support (normalization) ;
  • Codage UTF-8 : UTF-8 character set support (utf8only)[5].

Plateforme[modifier | modifier le code]

ZFS est intégré sur Solaris SPARC et Solaris x86, les données peuvent être échangées entre les deux architectures. De plus, le fonctionnement complexe de données permet de stocker les informations de manière compatible entre les systèmes Big-Endian et Little-Endian, un avantage concernant la manière de stocker les données, auparavant si contraignante. Chaque bloc de donnée est écrit dans l'ordre natif du système écrivant les données : pendant la lecture, si le Big-Endian ne fonctionne pas, les données sont transformées en mémoire, puis écrites dans le système correspondant.

Bien que SUN n'ait pas exclu d'adapter ZFS pour Linux[6], rien n'a été présenté à ce jour -- (l'inclusion de ZFS dans le noyau impliquerait une modification de la licence CDDL incompatible avec la GNU GPL de Linux). Il existe un port pour Fuse/Linux[7] qui est à l'état de beta ; il est possible de monter et démonter les volumes, lire, écrire, utiliser la compression, la réservation ou les quotas et les instantanés. Parted Magic (en), une distribution de type LiveCD propose néanmoins sa prise en charge. En , il n'y avait aucun projet pour HP-UX, ou même AIX. Mais puisque ZFS est en open source, le portage pourrait être effectué sans la participation de Sun. Matt Dillon du projet DragonFly BSD a d'ores et déjà prévu de porter ZFS pour la version 1.5 de son OS.

Le système Mac OS X 10.5 « Leopard » d'Apple permettait d'accéder en lecture seule au contenu d'une partition ZFS. Bien qu'initialement annoncé comme une des fonctionnalités de Mac OS X 10.6 « Snow Leopard » Server, la lecture et l'écriture sur des volumes ZFS ont été retirées des spécifications et Apple ne soutient plus le développement de cette technologie pour Mac[8]. Toutefois, un portage commercial est en train () d'être réalisé par un ancien ingénieur Apple, Don Brady, spécialisé dans les systèmes de fichier et les systèmes d'exploitation. Il faisait déjà partie de l'équipe chargée du portage de ZFS pour Mac OS X au sein d'Apple[9]. La société qu'il a récemment créée — Ten's Complement — a choisi le nom "Z-410" (ZFS for Mac OS X) pour ce portage[10].

ZFS est aussi géré sur FreeBSD[11],[12],[13],[14] et constitue le système de fichiers par défaut de PC-BSD.

FreeNAS et ZFSGuru deux solutions de NAS basées sur une version de FreeBSD (spécifiquement packagée pour FreeNAS et initialement basée sur le framework m0n0wall — abandonné pour nanoBSD pour FreeNAS en ), tirent pleinement profit de ZFS. Elles fournissent une interface graphique arborescente (écrite en Python/Django pour FreeNAS et en PHP pour ZFSGuru) qui permet d'administrer ZFS : on peut ainsi simplement créer un volume ZFS (RAIDZ ou autre), y créer des datasets, attribuer des quotas, réaliser des snapshots, etc.

Quant à NetBSD, le support ZFS a été ajouté dans la branche -current[15].

ZFS inclut des fonctions de partage via le réseau. Il est ainsi possible de définir dans les options d'un système de fichiers de le partager via les protocoles SMB et NFS. C'est la seule façon d'accéder à des partitions ZFS depuis les systèmes ne le supportant pas, comme Windows, AIX ou encore HP-UX pour ne citer qu'eux.

Notes et références[modifier | modifier le code]

Annexes[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]