APFS : un Système de Fichiers pour les rassembler tous

Je ne reviendrai pas sur les grosses annonces de la WWDC 2016, les communiqués de presse d’Apple étant assez complets. Je vais plutôt me concentrer sur une annonce qui n’a pas été faite durant la présentation, mais qui me semble assez importante pour justifier un billet complet sur le sujet :

Apple présente un nouveau sytème de fichier pour ses appareils.

Je le répète :

Apple présente un nouveau sytème de fichier pour ses appareils.

En quoi est-ce important ? Pour le comprendre, il faut revenir sur l’histoire mouvementée des systèmes de fichiers sur nos Mac.

Au tout début, fut le Macintosh File System

Le premier système de fichier du Mac est apparu avec le Système 1.0 en 1984, et s’appelait Macintosh File System, ou MFS pour les intimes1. Bien que sophistiqué pour l’époque, il a vite montré ses limites, avec un maximum de 4094 fichiers par volume, ou 20 Mo de taille maximale pour un volume2. Surtout, il ne permettait pas de créer des sous-dossiers : une seule hiérarchie de dossiers était possible. Ce système de fichier fut donc rapidement remplacé, et Mac OS 8 ne permettait plus de lire des volumes MFS (de façon assez rigolote, Apple a proposé un plug-in VFS (Virtual File System) pour lire des volumes MFS sur Mac OS X 10.4… Je laisse ceci comme un challenge pour mon copain Pierre Dandumont ^^). L’une des particularités de MFS est d’avoir apporté la compatibilité avec les sacro-saintes ressources des fichiers du Mac.

Donc, exit MFS3. Et bonjour HFS.

HFS : les grands débuts d’un grand système de fichiers

Dès l’arrivée du premier disque dur pour le Mac en 1985, Apple lance son nouveau système de fichiers : HFS, pour Hierarchical File System. Déjà beaucoup plus mur, il est taillé pour le futur proche : avec une taille maximale de fichiers de 2 Go, 65535 fichiers par volume qui peut atteindre 2 To, il ne semble pas prêt de montrer ses limites, alors que FAT16 sur Windows accepte des volumes de seulement 2 Go maximum (4 Go sur Windows NT), ce qui posera pas mal de soucis avec l’arrivée des premiers disques atteignant cette taille à la fin des années 90… Et finalement, il remplissait bien son office.

Enfin, presque. Car il restait un système de fichiers 16-bits, limité à de nombreux niveaux. Et en particulier, le nombre fixe de 65535 blocs d’allocation sur le disque créait un gâchis d’espace énorme. Un petit alias de quelques octets sur un disque de petite taille pouvait peser plusieurs Ko sur un disque de 1 Go. Et tout comme Windows a du faire le saut vers FAT32, le Mac a du passer vers un autre format de fichiers.

HFS+ : HFS, mais en (beaucoup) mieux

Exit la limite des blocs sur 16 bits : HFS+ (ou Mac OS Étendu) apporte la gestion de volumes sur 32 bits, réduisant ainsi la taille des blocs d’allocation et apportant plein de nouvelles fonctions sympa. Les volumes, lisibles à partir de Mac OS 8.1, sont également compatibles Unicode avec des noms de fichiers jusqu’à 255 caractères, mais le système en bénéficiera réellement avec l’arrivée de Mac OS X. Et donc, HFS+ devient obligatoire pour installer Mac OS X, si vous étiez assez fou pour l’installer dès le 21 mars 2001 sur votre Mac.

Mais attention ! Bien qu’il a été officiellement lancé en 1998, HFS+ n’a pas cessé d’évoluer depuis. Entre autres :

  • Le support de la journalisation avec Mac OS X 10.2.2. Cette fonction est essentielle sur les systèmes modernes : en cas de plantage, on peut se fier à l’état du journal pour retrouver l’état fiable d’un volume après un crash système plutôt que de faire un contrôle de cohérence sur l’ensemble du disque.
  • Les listes de contrôle d’accès (ACL) avec Mac OS X 10.4 ;
  • La gestion des hard links vers des dossiers, essentiellement pour Time Machine (Mac OS X 10.5) ;
  • La compression de fichiers (Mac OS X 10.6) ;

Et aujourd’hui, votre iPhone, votre Mac, votre iPad… utilisent encore une version améliorée d’HFS+. Un système qui a pratiquement 20 ans. Il était temps de changer. Car HFS+ commence à montrer ses limites, et à se montrer indigne de nos machines. Et c’est surtout avec Time Machine que les limitations commençaient à être atteintes.

En effet, Time Machine est très exigeant : on parle de stocker des centaines de milliers de fichiers, certains variant très peu, et pour lesquels la fiabilité est essentielle. Or, HFS+ échoue quasiment à tous les niveaux avec Time Machine :

  • Pas de déduplication de fichiers. Vous avez plusieurs copies de fichiers dans votre Mac ? Pas de bol, HFS+ va garder une copie de chaque fichier sur votre disque. Pire : vous disposez de plusieurs copies de fichiers dans vos sauvegardes Time Machine ? Pas de bol, il y aura autant de copies du fichier qu’il sera mentionné sur le disque, même s’il a été juste déplacé. Pas très efficace.
  • Pas de vérification de la cohérence des fichiers lors de la copie. Il n’existe pas de mécanisme permettant de s’assurer à 100% qu’une copie de fichier est totalement cohérente lors de la sauvegarde Time Machine. Votre fichier devrait être bien copié, mais… on ne peut pas le garantir à 100%.
  • Pas de snapshot. Et pourtant, ça serait génial, et pas que pour Time Machine. Vous faites une modification de votre système de fichier, vous installez une grosse mise à jour, vous redémarrez, BIM, machine plantée. Vous pouvez en une seconde retrouver votre disque tel qu’il était avant la màj. Le rêve.
  • Pas de sauvegarde atomique des fichiers. Vous avez déplacer un fichier dans l’arborescence de votre Mac ? Et oui, Time Machine est idiot, il ne le sait pas, parce que HFS+ ne peut pas lui dire qu’un fichier juste déplacé n’a pas besoin d’être recopié intégralement. Et du coup, il le sauvegarde à nouveau. Ne déplacez jamais vos dossiers de films téléchargés du net. Jamais.
  • Pas de gestion de clone de fichiers. Un clone de fichier est une copie de fichier qui ne prend pas de place sur le disque dur. Et toutes les modifications que l’on fait à ce fichier sont ajoutées sous la forme de blocs supplémentaires sur le disque. Exemple : J’ai créé un document Word, je l’enregistre, Time Machine le sauvegarde. Je rajoute un paragraphe : Time Machine re-sauvegarde tout le fichier, y compris la partie déjà enregistrée. Pas efficace. Avec un clone, Time Machine pourrait dire « ne sauvegarde que la partie manquante du fichier, le reste, je l’ai déjà en clone ».

Et Apple a failli nous apporter toutes ces fonctions. On y a cru. Vraiment.

ZFS : l’espoir douché

Avec l’arrivée de Mac OS X Server 10.6, Apple a annoncé également la compatibilité d’OS X avec le format ZFS. Ce système de fichiers créé par Sun portait tous nos espoirs pour un système de fichiers moderne. Mais très peu de temps après l’annonce, toute mention de ZFS est retirée, et on n’en entend plus parler du tout. On suppose pour éviter des problèmes de licences avec Sun… Mais n’empêche, les admins Mac sont malheureux, et même si une tentative de solution commerciale a existé quelques mois, elle a été rapidement tuée dans l’œuf. La tristesse absolue.

Et depuis, on voit les évolutions d’HFS+ qui s’améliore un peu, mais on souffre devant l’inefficacité de Time Machine à gérer son espace intelligemment. On voit des sauvegardes échouer bêtement, des disques se remplir inutilement, des espaces de stockage gaspillés. C’était même une blague récurrente dans le milieu : se demander si Apple, enfin, allait faire plaisir au célèbre John Siracusa en proposant enfin un système moderne. En effet, dans ses loooongues revues d’OS X, le problème du système de fichiers était régulièrement abordé par M. Siracusa, qui avait même consacré un article complet sur le sujet il y a pratiquement… dix ans.

On n’y croyait plus. On a attendu, on se disait qu’Apple ferait bien quelque chose un jour. Mais durant la conférence, rien. Désespoir.

Et soudain, un tweet qui tombe. L’espoir renait.

Bienvenue à Apple File System !

Apple File System (APFS) a été annoncé en douce, via le planning de la WWDC, juste à la fin de la conférence, et confirmé lors de la conférence OS State of the Union, beaucoup plus technique que la conférence inaugurale (historiquement, c’est même souvent celle où l’on découvre le plus de choses croustillantes). Un nouveau système de fichier, plus moderne à tous les niveaux, qui va faire sourire tout le monde et mieux sécuriser nos informations. Petit tour du propriétaire.

Un système de fichier unique, taillé pour les stockages modernes

APFS a été conçu pour tous les appareils Apple : de l’Apple Watch jusqu’au Mac, en pensant par l’iPhone et l’iPad, en tenant compte des spécifités des SSD ou mémoires flash qui les équipent. Ainsi, les fonctions TRIM sont nativement supportées, ce qui améliorera les performances et la durée de vie de ces mémoires solides.

Surtout, APFS n’a quasiment plus de limite : en étant un système de fichier 64 bits, il est capable de gérer jusqu’à neuf quintillions de fichiers. Soit un milliard de trilliards un million neuf milliards de milliards de fichiers (merci @mlamelot Jean-Paul Blanc, décidément, c’est pire que du Krazuki). Ça va, vous devriez être peinard pour pouvoir stocker vos trois documents Word sur votre bureau.

Plus intéressant encore, dans un monde où la synchronisation d’informations devient de plus en plus critique, APFS sait gérer des datations à la nanoseconde près. Ça parait étrange, mais le monde est ainsi fait : il faut que l’information devienne vraiment précise.

Une bien meilleure gestion de l’espace de stockage

APFS regorge d’astuces pour améliorer la gestion au jour le jour de l’espace de stockage. Certes, ce n’est pas très important si vous réinitialisez votre disque dur une fois tous les cinq ans, mais pour moi ou tous mes confrères qui avons l’habitude de formater des disques tous les jours, ce n’est pas négligeable ! Par exemple, l’allocation des blocs se fait de façon extensible dynamiquement, ce qui devrait rendre l’initialisation d’un disque beaucoup plus rapide et efficace à gérer dans le temps. De même, lorsqu’un fichier comporte beaucoup de « trous » dans ses données, la fonction dite « sparse file » permettra de mieux gérer l’espace de stockage, en réduisant la taille physique occupé par ces fichiers. Un peu comme si vous retiriez les trous d’un morceau d’emmental et compactiez tout le fromage pour qu’il prenne moins de place.

Notons encore des caractéristiques rigolotes comme le partage d’espace (space sharing) : imaginons que vous ayez formaté votre disque de 1 To en deux volumes, le premier contenant 100 Go de données, le deuxième en contenant 200 Go. Et bien, l’espace restant disponible annoncé sera de 700 Go au total, même si le disque a été divisé en deux volumes identiques. Magique ! Et particulièrement utile par exemple pour Boot Camp, puisque ça pourrait fonctionner quelque soit le système de fichier au dessus du container APFS.

Une meilleure sureté des données…

Vos données seront bien plus en sureté sur un disque initialisé avec APFS : en effet, divers mécanismes comme le copy-on-write ou « l’enregistrement sûr atomique », ou la coalescence des enregistrements permettront de s’assurer qu’un fichier soit toujours correctement enregistré sur votre disque. À bas les opérations à moitié effectuées !

… Ainsi qu’une meilleure sécurité !

La sécurité de vos données reste un sujet important de préoccupation pour Apple. D’où l’idée d’améliorer encore le chiffrement des disques après FileVault 2, en proposant carrément en option un chiffrement multi-clés avec des clés pour les fichiers et une clé spécifique pour les méta-données sensibles. Ainsi, même si la sécurité physique du disque est compromise, vos données restent chiffrées. De quoi rendre fous les gouvernements du monde entier.

APFS, l’ami de Time Machine (on l’espère)

Normalement, avec tout ça, la plupart des gros défauts abordés plus haut pour Time Machine devraient être de mauvais souvenirs.L’espace devrait être bien mieux géré, puisque le clonage de dossiers ou fichiers est nativement supporté, tout comme les snapshots. De quoi regagner énormément d’espace sur vos disques de sauvegarde, et rendre ces dernières beaucoup, beaucoup plus rapides. Et du coup, si vous utilisez Time Machine sur un serveur de fichiers, le réseau devrait beaucoup moins tirer la langue. On pourrait même imaginer une sauvegarde quasi-permanente et instantanée sur un autre disque, à intervalles hyper courts. Ça devient faisable.

Quelques limitations…

Évidemment rien n’est parfait dans ce bas monde, et pour cette première version beta publique de OS X Sierra, on rencontrera des limitations importantes :

  • L’impossibilité de démarrer sur une partition APFS ;
  • L’impossibilité de le partager en AFP (SMB obligatoire, de toute façon, AFP est officiellement annoncé comme déprécié, l’étape ultime avant d’être complètement retiré) ;
  • L’impossibilité de créer un volume insensible à la casse ;
  • L’absence de compatibilité Time Machine ;
  • L’impossibilité d’utiliser FileVault ;
  • L’incompatibilité avec les disques Fusion Drive, qui rassemblent disque dur physique et SSD pour créer un seul volume logique.
Pas d’inquiétude pour autant : à ce stade du développement, il est normal que certaines fonctions  soient indisponibles, aussi importantes qu’elles soient. Pour le moment, si vous avez installé la beta de MacOS Sierra, vous ne pouvez que créer des conteneurs APFS sur un disque. De quoi tester… mais attention à bien sauvegarder vos fichiers dans tous les cas :)

… mais énormément de promesse !

L’importance d’un système de fichiers efficace pour l’avenir n’est pas à négliger, et avec APFS, Apple prépare son futur pour les vingt prochaines années au minimum. D’autant plus qu’il semble qu’il sera possible de convertir dynamiquement un volume HFS+ en APFS.
À ce propos, les OS précédents ne seront pas capables de lire un disque APFS, mais est-ce qu’Apple renouvellera le principe très élégant des volumes HFS+ qui, lorsqu’on les branchait sur un Mac non compatible HFS+, n’affichaient pas une alerte d’initialisation du disque, mais montaient volume en affichant juste… un fichier texte appelé «  Where_have_all_my_files_gone » ? Une solution typiquement Apple.
En tout cas, Apple nous fait désormais attendre 2017 avec impatience pour profiter enfin d’un système de fichiers modernes. Et pour ne rien gâcher, ses spécifications techniques seront open source, contrairement à NTFS ou exFAT. Prends ça dans les dents, Microsoft !
  1. Oui, cette abréviation est beaucoup plus drôle à dire quand on parle français.
  2. En réalité, 20 Mio)
  3. excitées mes… quoi ???

12 comments

  1. Ronan dit :

    Guillaume, un immense merci pour ce tour d’horizon.
    Je me souviens, grâce à tes explications, avoir été assez excité à l’annonce du support du ZFS, avant de déchanter dans la foulée.
    Moi, perso j’y panne pas grand chose par défaut, mais grâce à ce genre de papiers, je sens tous les enjeux derrière ces (r)évolutions :D

  2. François dit :

    Merci pour toutes ces informations.

    Reste une question : mais pourquoi donc Apple préfère-t-elle développer un nouveau FS plutôt que de participer au développement d’un existant ?

    Comme, au pif…BTRFS ?

    • Guillaume dit :

      Parce que ce système peut rencontrer des limitations, ou n’a pas forcément été conçu pour certaines des priorités d’Apple (ex : chiffrement). Aussi, peut-être des risques liés à l’utilisation de la licence GNUGPL (possibilité, je n’en sais rie en fait).

    • VinDuv dit :

      La présentation WWDC de APFS donne quelques précisions là-dessus : Il fallait un système de fichiers adapté au besoins des systèmes d’Apple.

      Par exemple : macOS (et les autres *OS) utilise beaucoup de « bundles » : des dossiers qui se comportent, pour l’utilisateur, comme des fichiers. Du coup, APFS permet de réaliser sur des dossiers des opérations que les autres systèmes de fichiers ont tendance à réserver à des fichiers, notamment :
      – La copie de dossiers : APFS pourra réaliser la copie d’un dossier de manière atomique (et sans utiliser d’espace disque supplémentaire tant que les dossiers restent identiques). La copie atomique existe dans BTRFS mais pas pour des dossiers, à ma connaissance.
      – La récupération de taille des dossiers : APFS permettra de récupérer la taille d’un dossier et de tout son contenu. C’est quelque chose de pratique en général, mais spécialement pour les bundles (c’est pas très intuitif pour un utilisateur que le Finder mette plus de temps à afficher la taille d’un .rtfd que d’un .rtf…). Ça permet également d’afficher des barres de progression de copie plus précises.
      – La sauvegarde atomique de dossiers : Sous UNIX, on peut remplacer un fichier par un autre de manière atomique; ça permet de sauvegarder des modifications dans un fichier en garantissant qu’en cas de crash, l’utilisateur aura soit l’ancien fichier complet, soit le nouveau fichier complet. C’est bien mais ça n’aide pas les applications qui manipulent des bundles vu qu’il n’est pas possible de remplacer atomiquement un dossier par un autre. APFS permettra cela.

      Je pense aussi que la licence de BTRFS risque de poser problème. Après tout, il me semble que c’est entre autre à cause de problèmes de licence que ZFS a été abandonné par Apple. Il ne faut pas oublier que tout système de fichiers pouvant être utilisé par une partition système doit être intégré à l’EFI des Mac (pour que l’EFI puisse charger le noyau de l’OS), ce qui pose des problèmes de licence spécifiques.

      • François dit :

        Je comprends bien que toutes les fonctionnalités requises par Apple ne soient pas forcément implémentées dans BTRFS (je pense par exemple au chiffrement), mais il me semble tout de même plus simple d’ajouter uniquement ces fonctionnalités à de l’existant plutôt que de tout réécrire from scratch. Ça aurait bénéficié à tous, et Apple aurait certainement pu bénéficier du travail de la communauté. Je trouve ça un peu dommage.

        Pour les histoires de licence, BTRFS est, sauf erreur, sous licence GPLv2, donc ça ne devrait pas poser de problème.

        Bref, espérons qu’Apple libère/publie suffisamment d’informations pour qu’une implémentation libre fasse son apparition et améliore ainsi la compatibilité entre les différents systèmes.

  3. Jean-Pierre dit :

    Ce système semble particulièrement destiné aux supports solides avec des fonctions peu compatibles avec la vitesse des disques durs. Cela n’impliquera-t-il pas une évolution du matériel et la disparition de ces disques des Mac’s et MacBook’s avec une augmentation de prix substantielle ?
    Les serveurs et baies de stockage devront-ils aussi passer au full SSD ?

    • Guillaume dit :

      Non : il est bien précisé par Apple que le système reste compatible avec les anciens systèmes de stockages, et ces derniers en bénéficieront tout autant (ex : les disques durs seront moins sollicités par les fonctions de clonage par ex). Maintenant, oui, vu que l’essentiel du boulot a été fait pour les supports de stockage physique, il est normal qu’Apple mette en avant les fonctions spécifiques aux supports solides.

  4. Damien dit :

    Merci Guillaume pour tes lumières. Je ne suis pas près de repasser à Windows.

    De toute façon, mon ordi du boulot est une piqure de rappel permanente.

  5. JPaul. BLANC dit :

    Attention ! mlamelot s’est trompé lui aussi : un quintillion, dans l’échelle courte (celle utilisée par les américains), c’est 1O^18 soit un milliard de milliard.

    Reprenons. Dans l’échelle courte :
    un billion = mille millions (notre milliard)
    un trillion = mille billion (soit mille milliards)
    un quatrillion = mille trillion (soit un million de milliards)
    un quintillion = mille quatrillion (soit un milliard de milliard)

    Plus d’infos ici :
    et ici :

    Ah et puis en l’occurence, il y en a neuf de quintillions, donc neuf milliard de milliard…

    JiPaul.

  6. Sylvain B dit :

    Moi, j’attend le iSCSI natif.

  7. Martin dit :

    Les notations américaines sont ambiguës. La seule vraie pour tous : 10Λ18, sachant que 18 est le nombres de zéros qui suit le 1 en décimal.