Systèmes de fichiers : de HFS et ses évolutions à APFS chez Apple
-
=> Article complet : nextinpact.com <=
Après les systèmes de fichiers chez Microsoft, penchons-nous maintenant sur ce que propose Apple. Depuis plusieurs années, APFS règne en maître. Mais pendant une grande partie de l’histoire de l’entreprise, ce sont HFS et ses évolutions qui ont accompagné tous les produits, même les portables.
Le tout premier système de fichiers chez Apple se nomme Macintosh File System et est arrivé en 1984. À la manière de la première FAT chez Microsoft, MFS était pensé pour les disquettes (de 400 ko) utilisées avec les premiers Macintosh de l’entreprise, d’où le nom. Bien que MFS fut utilisé avec certains disques durs tiers, ses limitations étaient nombreuses : taille maximale de 20 Mo pour une partition, aucune arborescence pour les dossiers, maximum de 4 094 fichiers par volume, etc.
L’année suivante, pour accompagner le tout premier disque dur maison (Hard Disk 20), Apple lance HFS, pour Hierarchical File System. Il était en effet crucial de trouver une autre manière d’organiser les données, car les informations sur le contenu d’un volume étaient stockées dans un unique fichier. En cas de recherche, il fallait lire l’ensemble du fichier jusqu’à trouver l’information souhaitée. Ce comportement ne posait pas de problème sur des disquettes, mais est vite devenu un gros problème avec les disques durs et leurs milliers de fichiers.
Lire notre dossier sur les systèmes de fichiers :
- | Qu’est-ce qu’un système de fichiers ?
- | Systèmes de fichiers : FAT12 à 32 et exFAT, conçus pour le grand public
- | Systèmes de fichiers : NTFS et ReFS, pensés d’abord pour l’entreprise
- | Systèmes de fichiers : de HFS et ses évolutions à APFS chez Apple
- | Systèmes de fichiers : ext4 et Btrfs, les « frères ennemis » du monde Linux
HFS, le début de l’aventure
HFS reprend certaines caractéristiques de MFS, notamment les « forks » qui permettent un stockage différencié du code source des fichiers et de leurs ressources, comme les icônes ou les données de traduction. La plupart des aspects sont cependant largement transformés.
Un volume formaté avec HFS divise l’espace en blocs de 512 octets minimum. Les deux premiers (0 et 1) sont réservés au démarrage, le troisième (2) au Master Directory Block, qui contient de nombreuses informations sur les données présentes dans le volume, comme l’horodatage des créations de fichiers. Notez qu’une copie de ce bloc existait dans l’avant-dernier bloc du volume, pour autoriser les services à accéder à ces informations si le MDB était verrouillé pour mise à jour des informations.
La table des fichiers est remplacée par le Catalog File, qui utilise une structure en arbre B, dont nous avons parlé dans notre article sur NTFS. Dans ce catalogue, tous les fichiers et dossiers disposent d’un identifiant unique nommé CNID (Catalogue Node ID) associés à leur nom.
La recherche est bien plus rapide, même si HFS comporte des limites, notamment le maximum de 65 535 fichiers par le volume, inhérent aux 16 bits de l’adressage. Ce qui a rapidement posé problème avec les disques durs plus gros, puisque les volumes étaient toujours découpés en 65 535 blocs, dont la taille augmentait mécaniquement. Avec un disque de 1 Go par exemple, la taille des blocs grimpait à 16 ko, à une époque où les petits fichiers étaient très nombreux. Il était donc recommandé de découper l’espace en plusieurs volumes pour faire chuter la taille des blocs.
Le Catalog File fait en outre chuter les performances quand le système d’exploitation permet le multitâche, un seul processus pouvant modifier le fichier à la fois, créant parfois des embouteillages. En revanche, HFS n’est plus un système de fichiers « plat » : il autorise la création de dossiers et donc la hiérarchisation des données, expliquant son nom.
HFS a évolué peu à peu avec le temps, mais il lui est resté d’importantes limitations liées à son âge, comme des fichiers ne pouvant dépasser les 2 Go, sauf avec Mac OS 7.5 qui autorisait des fichiers de 4 Go. Mais ces derniers ne pouvaient être utilisés que sur des machines avec au moins la même version du système, limitant leur compatibilité. HFS a également atteint un maximum de 2 To pour les volumes. Quant aux noms de fichiers, même s’ils pouvaient théoriquement gérer 255 caractères, ils ne pouvaient en utiliser que 31 dans la pratique.
Les bons services de HFS vont durer un bon moment, jusqu’à l’arrivée de HFS+ en 1998. Il restera cependant géré pendant de nombreuses années, puisque son retrait effectif n’a été fait que dans macOS 10.15 (Catalina), il y a trois ans à peine.
HFS+, une petite révolution chez Apple
HFS+ – nommé aussi HFS Plus ou HFS Extended, ou Mac OS Étendu dans les outils de formatage sur Mac – débarque avec Mac OS 8.1. On est encore loin de la révolution (voir notre article) de Mac OS X, mais il était plus que temps de proposer une solution moderne au stockage sur les Mac. Il va être largement utilisé pendant presque 20 ans, et pas seulement sur les Mac.
La plupart des caractéristiques du HFS premier du nom sont toujours là, comme les blocs de 512 octets, mais presque tous les aspects en sont améliorés. Le 16 bits laisse ainsi place au 32 bits pour les adresses des blocs, faisant exploser les précédentes limites : des volumes et fichiers jusqu’à 8 Eo, et plus de 4 millions de fichiers par volume. De quoi voir venir, surtout à la fin des années 90. Même traitement pour le nombre de blocs par volume, lui aussi à plus de 4 millions, mettant fin à une taille variable selon celle du volume.
En outre, le format des noms passe à UTF-16 et Unicode, permettant cette fois d’exploiter la totalité des 255 caractères, sans restriction sur ces derniers.
Certaines capacités de HFS+ ne vont arriver qu’avec le temps, notamment à partir de Mac OS X, dont la première version sort en 2001. L’une des plus importantes, la journalisation, est ainsi arrivée avec la mise à jour 10.2.2 fin 2002. Comme nous l’avons indiqué dans notre article sur NTFS, la journalisation est un élément important du stockage moderne, puisqu’il permet de suivre les modifications faites aux données et/ou métadonnées. C’est un facteur crucial de fiabilité du traitement de l’information, permettant de revenir à un état antérieur ou de retenter une opération ayant échoué.
C’est surtout Mac OS X 10.3 qui va apporter nombre de nouvelles possibilités, dont une journalisation par défaut des volumes formatés. Panther introduit également un gros changement structurel. Jusqu’à présent, les volumes HFS+ étaient encapsulés dans d’autres volumes HFS, pour des raisons de compatibilité. Mac OS 10.3 apporte une nouvelle version de HFS+ nommé HFSX, dont le formatage permet de se débarrasser de cette ancienne « encapsulation ».
Elle fournit aussi, pour la première fois, la sensibilité à la casse (les majuscules et minuscules sont prises en compte), sous forme optionnelle. Unicode 3.2 est aussi de la partie, et plusieurs mécanismes sont ajoutés pour réduire la fragmentation, qui devenait alors un sérieux problème.
Avec Tiger (Mac OS X 10.4), HFS+ est à nouveau enrichi, cette fois dans le domaine des permissions. Jusqu’à lors, le système des fichiers reprenait celles du monde Unix. Après la mise à jour, une nouvelle sécurité est ajoutée, basée sur les listes de contrôle d’accès (ACL). En plus de ces nouvelles capacités, l’ajout permet une simplification de la compatibilité dans les partages avec l’environnement Windows, puisque le NTFS s’appuie sur les ACL pour gérer les droits d’accès.
Par la suite, d’autres fonctions furent ajoutées, comme les liens physiques pour les dossiers dans Mac OS 10.5, la compression dans 10.6, ou encore le chiffrement des volumes dans 10.7.
Un système de fichiers très utilisé, mais pas sans reproche
[…]
Source et suite : nextinpact.com