APFS : le futur système de fichiers d’Apple qui va changer votre vie

Soumis par Mickaël Bazoge le mar, 24/01/2017 - 20:49

Edit : cet article a été rédigé peu après la WWDC de juin 2016. Nous le remontons dans le flux car Apple a posé les premiers jalons d'APFS dans la première bêta d'iOS 10.3.

C’est un peu malheureux, mais lors du keynote de la WWDC, Apple a passé plus de temps à annoncer que les émojis de Messages seront trois fois plus gros dans iOS 10 qu’à faire l’article d’APFS. D’ailleurs, le nouveau système de fichiers qui sera au cœur de macOS, iOS, watchOS et tvOS n’a tout simplement bénéficié d’aucune annonce durant la conférence !

Eric Tamura et Dominic Giampaolo ont eu l’honneur de présenter APFS aux développeurs présents à la WWDC.

On peut le regretter, même si un système de fichiers est évidemment moins sexy que des émojis et d’autres fonctions flashy (lire : Keynote : des emojis, mais pas de système de fichiers). Mais APFS a ensuite fait l’objet d’une présentation en profondeur lors d'une session dédiée, et on peut retrouver sur le Dev Center une documentation qui dresse les grandes lignes de cette nouveauté majeure.

Durant la WWDC, Apple a également invité les développeurs présents à participer à des séances de questions/réponses avec les ingénieurs qui ont mis au point APFS. Adam Leventhal a participé à cette session et il en a livré un récit aussi complet que possible sur son blog. Nous avons puisé dans ces observations ainsi que dans les docs d’Apple pour faire le point sur ce système de fichiers qui devrait assurément bousculer les habitudes.

Qu’est-ce qu’un système de fichiers ?

Un système de fichiers est une des briques de base d’un système d’exploitation. C’est ce qui permet à l’OS de stocker et d’organiser les données dans des supports de stockage internes et externes. Conservées dans des suites de blocs dont le contenu est lié au format des fichiers (caractères, adresses mémoires, etc.), les informations peuvent ensuite être exploitées par les applications.

À l’intérieur du MacBook 12’’ Retina (image iFixit).

Sans système de fichiers, l’information serait placée en vrac dans un espace de stockage dans lequel il serait impossible de dire où commence et où s’arrête telle ou telle donnée. Avec des capacités de stockage toujours plus importantes, il a fallu adapter les systèmes de fichiers pour qu’ils se montrent plus efficaces.

Toute cette machinerie est invisible pour l’utilisateur, qui s’attend à retrouver ses dossiers et ses documents aux endroits où il les a laissés, le tout présenté d’une manière cohérente et hiérarchique.

Quels sont les systèmes de fichiers utilisés par Apple ?

Sans remonter aux temps immémoriaux de DOS 3.x (également connu sous le sobriquet Apple DOS) de l’Apple II, le constructeur place MFS (Macintosh File System) au cœur du premier Macintosh. Il a rapidement été remplacé par HFS (Hierarchical File System) en septembre 1985. Il s’agit alors de prendre en charge le premier disque dur (20 Mo) que le constructeur a conçu pour son Mac, alors que MFS n’était optimisé que pour les lentes disquettes de petites capacités de l’époque.

En 1998, Apple lance le successeur de HFS avec Mac OS 8.1, HFS Plus. Cette version améliorée de HFS supporte des adresses 32 bits au lieu des 16 bits de son prédécesseur, et elle utilise Unicode en replacement de Mac OS Roman pour nommer les fichiers et documents.

Avec Mac OS X 10.3, Apple met à jour HFS Plus en y apportant la sensibilité à la casse, mais de nombreux logiciels ne sont pas compatibles et sont susceptibles de planter. Durant ses 18 ans d’existence, HFS+ a évidemment été adapté aux besoins d’Apple, et s’il continue de rendre bien des services, le système de fichiers accuse depuis trop longtemps le poids des années. « HFS+ est certainement le pire système de fichiers jamais créé. Dieu que c'est de la merde ». Ainsi Linus Torvalds, créateur de Linux, qualifie-t-il le système de fichiers d'OS X dans sa langue fleurie.

On a un temps imaginé qu’Apple allait le remplacer par ZFS (Zettabyte File System). Les capacités de ce système de fichiers 128 bits développé par Sun Microsystems pour Solaris 10 sont tellement importantes qu’il faudrait faire « bouillir les océans » pour remplir un espace de données 128 bits, d’après son créateur Jeff Bonwick !

La prise en charge de ZFS annoncée sur le site d'Apple.

En décembre 2006, une bêta de Mac OS X 10.5 affiche une prise en charge très préliminaire de ZFS, une présence suivie par une annonce fracassante de Sun Microsystems : ZFS deviendra bien le système de fichiers par défaut du Leopard ! Las, après avoir joué au chat et à la souris dans les bêtas suivantes, ZFS n’est plus proposé que dans Snow Leopard Server et encore, en lecture seule (lire : La saga ZFS n'en finit plus).

Pourquoi Apple a-t-elle ainsi joué avec les nerfs de ceux qui attendaient fébrilement un système de fichiers moderne ? Des problèmes de licence ont grippé la machine, et on a appris tout récemment via Ars Technica que des problèmes d’égo sont aussi rentrés en ligne de compte. Apple n’aime rien tant que les choses développées en interne, et plusieurs cadres de l’entreprise préféraient bâtir leur propre solution plutôt que d’en adopter une conçue à l’extérieur — même si cette technologie était la meilleure à l’époque.

De plus, ZFS a été imaginé d’abord et avant tout pour les serveurs, pas pour les ordinateurs de monsieur tout le monde, et encore moins pour des appareils mobiles. Or, à cette époque, Apple était en plein développement de l’iPhone premier du nom. Les équipes en charge de la conception d’iOS ont créé une déclinaison d’HFS si secrètement que leurs homologues d’OS X n’en ont d’ailleurs rien su…

Depuis combien de temps APFS est-il en développement ?

Si on ignore la signification exacte de cet acronyme (Apple File System certes, mais que signifie ce "P" majuscule ?), on sait en revanche quand le développement d’APFS a débuté. C'était en 2014, avec à sa tête l’ingénieur Dominic Giampaolo. Ce dernier est loin d’être un inconnu, puisqu’il a supervisé le développement du système de fichiers de BeOS… qui a bien failli être celui d’Apple si le constructeur n’avait pas jeté son dévolu sur NeXT !

BeOS 5.0.

Livrer un système de fichiers complet en l’espace de trois ou quatre ans est une gageure : comme le rappelle Adam Leventhal, ce genre de développement demande habituellement une dizaine d’années. Mais visiblement, les équipes de Giampaolo ont mis les bouchées doubles.

Quels sont les avantages d’APFS ?

Avant d'entrer dans les détails, on peut lister rapidement les principaux atouts du futur système de fichiers d’Apple. En premier lieu, il s’agit de mettre tous les utilisateurs au même niveau, qu’il s’agisse du porteur d’une Apple Watch au monteur vidéo sur son Mac Pro. Du point de vue du constructeur, c’est aussi un atout : l’uniformisation du système de fichiers pour toutes ses plateformes (macOS, iOS, watchOS, tvOS) va sans aucun doute faciliter la vie de ses ingénieurs. Surtout, ce système de fichiers a été pensé pour évoluer facilement au gré des prochains produits (qui a dit padOS ?).

Du point de vue de l’utilisateur, APFS offre de meilleures performances en termes de copie et de gestion des fichiers, un système de sauvegarde moderne que ce soit pour les documents ou les volumes, ainsi qu’une architecture de chiffrement plus souple et plus complète, notamment pour les Mac. APFS doit aussi tirer tout le jus des SSD, sans laisser sur le bas-côté les bons vieux disques durs dont bon nombre de Mac sont encore équipés.

Alors que HFS+ supporte le 32 bits, APFS est un système de fichiers 64 bits. Un volume APFS peut prendre en charge la bagatelle de 9 quintillions de fichiers (soit, retenez votre souffle, 9 000 000 000 000 000 000 de fichiers). Autre changement de taille, sans doute moins pour l’utilisateur que pour le système en lui même, les heures de création des fichiers dans APFS sont calculées à la nanoseconde près, alors qu’avec HFS+, il faut se contenter de la seconde.

Comment APFS accélère-t-il les copies de fichiers ?

Dans les principaux atouts du nouveau système de fichiers, il y a donc en premier lieu la prise en charge optimisée du stockage Flash et SSD. Il était temps, car après tout HFS a été imaginé à une époque où les disques durs à plateaux représentaient le summum de la technologie.

La copie et la sauvegarde des fichiers va en toute logique s’accélérer, et mieux encore, les documents ne prendront guère plus de place. Et pour cause : les copies réalisées sur un volume APFS ne sont tout simplement pas des copies stricto sensu des fichiers originaux. Un clone APFS ne contient que des références et des métadonnées (droit d’accès, type de fichier…) provenant du fichier d’origine.

Quand un fichier cloné est modifié, seuls les blocs qui ont été changés sont remplacés par les nouveaux. Le système de fichiers peut ainsi stocker plusieurs révisions d’un même document, sans que cela n’ait d’impact significatif sur l’espace de stockage de l’appareil.

On a déjà un avant-goût de ce type de fonctionnement avec la fonction Versions inaugurée par Mac OS X Lion, qui est une sorte de Time Machine adapté à chaque document. APFS devrait accélérer encore le traitement de cette fonction, avec une consultation des précédentes versions d’un fichier et une restauration plus rapide.

Revers de la médaille : actuellement, lorsque l’on supprime un fichier, on s’attend assez logiquement à gagner de l’espace. Avec APFS, supprimer un clone ne fera gagner qu’une poignée d’octets, ce qui risque de porter à confusion au début. Quoi qu'il en soit, un clone APFS ne prenant que très peu d’espace, il est logique que sa suppression n’en fasse pas gagner beaucoup plus.

Évidemment, copier un fichier d’un appareil à un autre (d’un Mac à un disque externe ou une clé USB) prendra plus de temps qu’une copie sur le volume APFS, et pour cause : l’opération implique de transférer l’intégralité du document, et non pas uniquement des métadonnées qui ne pèsent rien ou si peu.

Cette nouvelle manière d’enregistrer des fichiers a un autre atout, celui de préserver la longévité du SSD. Se contenter de copier des métadonnées plutôt que des fichiers au complet réduit la fragmentation, et pour cause : le volume d’opérations d’écriture est limité.

À l’instar de HFS+, APFS assure la prise en charge du TRIM, qui limite l’usure et surtout la perte de performances des SSD (lire : Commande TRIM : le meilleur ami du SSD).

Si APFS a été imaginé d’abord et avant tout pour les SSD, les disques durs à plateaux ne sont pas pour autant laissés sur le bord de la route — aussi étonnant que cela puisse paraître, Apple vend encore et toujours des Mac avec ce type de stockage… Le système de fichiers va aussi apporter ses bienfaits à ces disques traditionnels, en choisissant finement les endroits où stocker les métadonnées des fichiers.

Snapshot : comment APFS gère-t-il la sauvegarde de volumes ?

APFS ne se contente pas d’accélérer la copie de fichiers : le système sait aussi créer des « instantanés » (snapshots) d’un volume APFS. Le processus est là aussi quasiment immédiat. macOS peut exploiter ces snapshots pour créer rapidement des sauvegardes à la volée d’un volume très facilement et sans grever les performances.

Ces instantanés sont en lecture seule : si on ajoute un document ou un fichier dans le volume d’origine, celui-ci n’apparaîtra pas dans le dernier snapshot. L’intérêt de l’opération est d’accélérer les opérations de restauration, une sorte de ⌘Z à l’échelle d’un volume.

Tout comme les Versions de Lion sont, en quelque sorte, les ancêtres des clones APFS, Time Machine semble précéder ces instantanés… à l’exception des liens matériels utilisés par le système de sauvegarde incrémentale actuel. C’est aussi ce qui explique pourquoi Time Machine n’est pas encore compatible avec APFS ; dans les coulisses de Cupertino, on a dû faire chauffer la matière grise pour adosser ces deux fonctions et pour le moment, on ignore comment tout cela va s’interfacer.

Space Sharing : comment APFS s’y prend-il pour stocker et gérer les volumes ?

APFS inaugure un nouveau système de partage d’espaces de stockage. Space Sharing veut remiser les partitions dans le placard aux vieilleries. Le système de fichiers intègre les volumes dans un container. Il est possible d’ajouter ou de retirer des gigaoctets dans chaque volume, le conteneur ajustant dynamiquement l’espace disponible.

Si vous avez un disque APFS de 1 To et que vous avez créé plusieurs volumes à l’intérieur, le Finder affichera une capacité de 1 To pour chaque volume. Autrement dit, l’espace disponible pour chacun de ces volumes reflète la capacité totale du conteneur, pas du volume individuel.

Et lorsque vous demanderez combien il reste d'espace libre sur votre Mac, macOS indiquera le volume restant du conteneur. Cela pourra provoquer une certaine confusion pour l’utilisateur, mais cette manière de faire permettra aussi à macOS Sierra d’afficher beaucoup plus rapidement l’espace disponible dans le système.

Fast Directory Sizing : comment APFS calcule-t-il plus rapidement le poids d’un fichier ?

Le nouveau système de fichiers améliore drastiquement le calcul du poids d’un fichier, d’un dossier, d’un volume ou d’un container. Actuellement, après un ⌘I, il faut patienter quelques secondes avant d’obtenir cette information (et parfois plus selon le nombre de documents contenus dans un dossier).

APFS inaugure la fonction Fast Directory Sizing qui calcule rapidement le poids total utilisé par les fichiers d’un dossier, en conservant et en calculant ce poids en dehors du dossier d’origine.

Comment APFS protège-t-il les données des yeux indiscrets ?

Pour HFS+, Apple a mis au point CoreStorage, qui permet un chiffrement complet du Mac avec une seule clé. Pour iOS, le constructeur utilise une variante de HFS+ qui prend en charge un système de clés par fichiers en lien avec le moteur matériel AES (Advanced Encryption Standard ou standard de chiffrement avancé).

Schéma de l’architecture de sécurité d’iOS.

APFS revoit ces fondations de fond en comble, avec plusieurs niveaux de chiffrement :

  • Pas de chiffrement ;
  • une clé par volume (l’équivalent de ce qui existe actuellement sur OS X) ;
  • chiffrement par clés multiples : pour les métadonnées, pour les fichiers, et pour les « sections » (extents) de fichiers générées par les snapshots et les clones.

En clair, avec APFS, il est possible de chiffrer non seulement les métadonnées d’un fichier, mais aussi le fichier en lui-même, le tout séparément. Un utilitaire de gestion de fichiers peut ainsi déchiffrer les métadonnées d’un fichier (nom, date de création, etc.), mais pas le contenu du fichier, tout dépendant de l’accès donné au logiciel par l’utilisateur.

Comment APFS va-t-il assurer l’intégrité des données ?

Protéger l’intégrité des données, c’est le premier travail d’un système de fichiers. Comme l’explique Adam Leventhal, un tel système doit répondre à cette problématique simple : « Voici mes données, ne les perds pas, ne les modifie pas ». La philosophie d’APFS en matière de redondance des données — pour faire simple, la copie d’un fichier afin de le protéger d’une erreur système ou d’un bug — est bien différente d’avec HFS+ : les copies réalisées depuis le système de fichiers n’en sont pas.

Les copies de fichiers réalisées avec APFS ne sont que des fichiers de métadonnées qui n’embarquent pas les données elles-mêmes. La corruption du disque APFS entraînera des dommages pour tous les fichiers stockées, aussi bien les documents d’origine que leurs copies. C’est là que les snapshots conservés sur d’autres volumes ou d’autres disques sauront se montrer utiles.

La gestion des checksums, ces « résumés » de métadonnées utilisés pour détecter et corriger des erreurs, est aussi bien particulière. APFS tient à jour un checksum de ses propres métadonnées, mais pas des données de l’utilisateur. Apple explique que les mesures de protection ECC, qui vérifient le bon fonctionnement des stockages intégrés dans les produits du constructeur, seront suffisantes pour éviter les problèmes (mais quid des disques SSD ajoutés « à la main » ?).

Chez Apple, les disques NAND et leurs ancêtres à plateaux exploitent la redondance des données pour détecter et corriger les erreurs ; cette redondance n’a que peu d’impact sur l’espace de stockage (elle représente moins de 1% de la capacité du produit). Les produits d’Apple présentant généralement des taux d’erreur assez faibles, ils ne devraient pas présenter de problèmes durant leur durée de vie.

Quelles sont les limites d’APFS ?

La version d’APFS qui sera livrée avec la version finale de macOS Sierra sera une Developer Preview. La première DP présente de sérieuses limitations :

  • impossible de démarrer à partir d’un volume APFS ;
  • les noms de fichiers sont sensibles à la casse uniquement ;
  • les sauvegardes Time Machine ne sont pas prises en charge ;
  • les volumes APFS ne peuvent pas être chiffrés avec FileVault ;
  • les disques Fusion Drive ne sont pas pris en charge.

Tout cela est particulièrement handicapant pour un usage au quotidien, mais personne n’a dit — et surtout pas Apple — que les préversions se destinaient à des Mac de production.

Apple précise également que seuls les Mac équipés d’OS X Yosemite (et ultérieurs) sauront reconnaître les volumes APFS. Les volumes APFS ne pourront être partagés que via le protocole SMB ; l’usage du protocole AFP est « déconseillé », mais de ce qu’on en a compris, il ne sera sans doute jamais pris en charge.

Apple n’a par contre pas (encore) évoqué le sujet du RAID, mais il reste encore du temps au constructeur pour plancher sur le sujet.

Est-ce que APFS sera open source ?

APFS est une technologie propriétaire, et en attendant le lancement de la version finale il n’est pas prévu que la DP du système de fichiers change quoi que ce soit. En revanche, Apple publiera les spécifications techniques pour la version finale d'APFS. Il y a donc fort à parier que le système sera disponible en open source dans le courant de l'année prochaine.

Après tout, Apple sait — quand cela l'arrange — s'adresser à la communauté : qu'on songe à ResearchKit, CareKit, et évidemment Swift. Étrangement, c'était moins clair pour Adam Leventhal, qui écrit lui ne pas s’attendre à ce que le système de fichiers soit open source un jour, bien qu’il y aurait une certaine classe à voir Linux, FreeBSD, voire Microsoft adapter APFS à leurs besoins. On attendra la confirmation officielle l'année prochaine (ou plus tôt).

Quand pourrons-nous profiter d’APFS ?

APFS sera le système de fichiers par défaut de tous les produits Apple d’ici la fin de l’année 2017 (Mac, iPhone, iPad, iPod touch, Apple Watch, Apple TV). Le constructeur met la dernière touche sur un outil de migration transparent de HFS+ vers le nouveau système de fichiers. Les développeurs auront droit à une Developer Preview lorsque Sierra sera disponible en version finale, sans doute cet automne.

Il ne sera donc pas utile de réaliser une sauvegarde complète de ses données, d’effacer son disque dur, de le formater APFS puis de restaurer les données : cet exercice est le chemin le plus court vers de sérieux problèmes pour de nombreux utilisateurs. Avec ce futur outil de migration, leurs données resteront à leur place, le tout devant donner l’impression que rien ne s’est passé. Il est cependant possible que la migration demande un peu de temps.

macOS continuera de supporter HFS+, tout comme les autres systèmes de fichiers : il sera toujours possible de monter un disque formaté HFS+ sur son Mac flambant neuf carburant à l’APFS. Les applications qui fonctionnent sous HFS+ seront compatibles APFS.

Est-ce que j’ai besoin d’APFS ?

Vous n’aurez pas tellement le choix de toute façon.