1. John Siracusa
    1. Mountain Lion
      1. Introduction
      2. Achat et installation
      3. Changements d'interface (1)
      4. Changements d'interface (2)
      5. Changements d'interface (3)
      6. Applications (1)
      7. Applications (2)
      8. Applications (3)
      9. Applications (4)
      10. Applications (5)
      11. iCloud(1)
      12. iCloud(2)
      13. iCloud(3)
      14. Gatekeeper(1)
      15. Gatekeeper(2)
      16. Retina et HiDPI
      17. Fourre-tout (1)
      18. Fourre-tout (2)
      19. Fourre-tout (3)
      20. Fourre-tout (4)
      21. Fourre-tout (5)
      22. Fourre-tout (6)
      23. Recommandations
      24. Deux pères, un fils
    2. Lion
      1. Introduction
      2. Installation
      3. Revoir les fondamentaux
      4. Redimensionnement des fenêtres
      5. Et voici pour les cinglés
      6. La gestion des fenêtres
      7. Le modèle de document
      8. le modèle des processus
      9. Les éléments internes (1)
      10. Les éléments internes (2)
      11. ARC
      12. Le système de fichiers
      13. Ses modifications dans Lion
      14. Documents, résolution
      15. Le Finder
      16. Mail, Safari
      17. Fourre tout (1)
      18. Fourre tout (2)
      19. Recommendations
    3. Snow Leopard
      1. Introduction
      2. Le ticket d'entrée
      3. L'installation
      4. Nouvel aspect
      5. Détails internes
      6. Quick Time X
      7. Système de fichiers
      8. Faire plus avec plus
      9. LLVM et Clang
      10. Les blocs
      11. Concurrence
      12. Grand Central Dispatch
      13. Asynchronicité
      14. Open CL
      15. La différence...
      16. Quick Time Player
      17. Le Dock
      18. Le Finder
      19. Exchange
      20. Performances
      21. Fourre tout (1)
      22. Fourre tout (2)
      23. Le futur
    4. Leopard
      1. Introduction
      2. L'héritage
      3. Nouvel aspect 1
      4. Nouvel aspect 2
      5. Le noyau
      6. 64 bits
      7. FS Events
      8. Core animation
      9. Quartz GL
      10. Core UI
      11. Détails internes
      12. Le Finder
      13. Le Dock
      14. Time Machine
      15. Performances
      16. Pot pourri
      17. Demain
    5. Tiger
      1. Introduction
      2. Retour sur le passé
      3. Nouvel aspect de Tiger
      4. Mises à jour du noyau
      5. Le lancement
      6. Les méta-données
      7. Attributs étendus
      8. Listes de contrôle d'accès
      9. Spotlight 1
      10. Spotlight 2 : analyse et potentiel
      11. Types de fichiers
      12. Méta-données : la fin
      13. Quartz
      14. Quartz 2D Extreme
      15. Core Image
      16. La vidéo sous Tiger
      17. Dashboard
      18. Le Finder
      19. Les performances
      20. Pot pourri
      21. Conclusion
    6. Panther
      1. Introduction
      2. Les précédents
      3. L'installation
      4. Nouvel aspect
      5. Performances
      6. Changement rapide d'utilisateur
      7. Gestion des fenêtres
      8. Exposé
      9. Le Finder
      10. Performance du Finder
      11. Toujours le même
      12. Safari
      13. XCode
      14. Conclusion
    7. Jaguar
      1. Introduction
      2. Le nom
      3. L'installation
      4. Modifications d'Unix
      5. Dévelopeurs...
      6. Quoi de neuf
      7. Rendezvous
      8. Quartz Extrême
      9. Performance
      10. Compositions
      11. Le Finder
      12. Applications
      13. Sherlock
      14. Le portrait
    8. Puma
      1. Prelude
      2. Introduction
      3. Installation
      4. Réglages système
      5. Performance
      6. Redimensionnement des fenêtres
      7. Utilisation de la mémoire
      8. Diagnostics de mémoire
      9. L'environnement Classique
      10. L'interface Utilisateur
      11. Le Finder
      12. Extensions de fichiers
      13. Divers, conclusion
    9. Cheeta (Mac OS X 10.0)
      1. Qu'est ce que Mac OS X
      2. Installation
      3. Le démarrage
      4. Utilisation de la RAM
      5. Performance
      6. Performance des applications
      7. Stabilité
      8. L'interface utilisateur
      9. Le Finder
      10. Le navigateur du Finder
      11. Le Finder (divers)
      12. L'interface utilisateur
      13. Os X Classique
      14. Système de fichiers
      15. Unix
      16. Applications
      17. Conclusion
    10. Les débuts de MacOsX
      1. 1999 : OSX DP2
      2. 2000 : Quartz et Aqua/a>
      3. Fin de la lune de miel
      4. la première bêta publique
      5. 2001 : Mac OS X 10.0
      6. Un investissement
    11. Finder Spatial
      1. Introduction
      2. Interfaces spatiales
      3. Le Finder spatial
      4. Le concierge
      5. Un nouveau Finder
      6. Le browser
      7. Le browser spatial
      8. Finder et méta-données
      9. Les modèles
      10. Pensées finales

Lion (12)




L'état du système de fichiers.

L'implémentation du système de fichiers n'est pas une chose à laquelle pensent les utilisateurs de Mac, et ils ne le devraient pas. Mais comme les autres éléments d'un système d'exploitation, on s'attend un peu à ce qu'il s'améliore avec le temps. Et comme pour tout morceau de technologie, il arrive un point où les améliorations incrémentales ne sont plus suffisantes et où un nouveau départ s'impose.

Mac OS X lui-même fut un nouveau départ de ce genre, bien que dérivé d'un produit existant, qui était seulement légèrement plus nouveau que celui qu'il remplaçait. Mais le système de fichiers de Mac OS X, HFS+ a été porté directement de l'OS du Mac classique dans Mac OS X. Il n'a pas eu ce renouveau dont a bénéficié le reste de l'OS.

Les espoirs d'un nouveau système de fichier furent grands en 2006 quand Apple déclara publiquement son intérêt pour un portage du système de fichiers innovant ZFS de Sun. L'année suivante, le PDG de Sun annonçait que ZFS allait être incorporé à Mac OS X 10.5, Léopard, visiblement sans avoir d'abord consulté Apple.

Cela n'arriva pas ; Léopard est sorti avec HFS+. Deux années après, en 2009, Apple elle-même annonça ZFS comme une caractéristique de Snow Léopard Server, seulement pour retirer plus tard toute référence à ZFS dans les pages web de Snow Léopard. Quelques mois après, Apple a fermé son projet open-source pour le portage de ZFS à Mac OS X.

En même temps, HFS+ a certainement été un peu amélioré. Apple y a rajouté le support des méta-données, la sensibilité à la casse, les listes de contrôle d'accès, et des méta-données arbitrairement extensives. Cependant, aucune de ces additions n'a changé la conception de base du système de fichiers. HFS+ a maintenant treize ans, et est lui-même une extension du système de fichiers HFS qui est vieux de plus de vingt cinq ans. L'état de l'art dans la conception des systèmes de fichiers a bien avancé depuis 1985.

Mais une fois encore, la plupart des gens ne passent pas leur temps à penser au système de fichiers. Ils pensent à leurs fichiers et à leurs dossiers, à coup sûr, mais pas au logiciel qui gère la façon dont les octets sont organisés sur le périphérique de stockage. Ma préoccupation depuis longtemps avec les détails pratiques du stockage de fichiers s'est souvent heurtée à l'indifférence, voire à la dérision. "Qui se préoccupe du système de fichiers ?" demandent les moqueurs. "HFS + fonctionne bien. Il stocke et récupère bien mes fichiers. Où est le problème ?"

En réponse à ce sentiment, je voudrais proposer quelques raisons concrètes pour lesquelles HFS+ devrait être remplacé depuis longtemps. Je crois qu'Apple comprend ces problèmes mieux que quiconque, mais qu'une série d'évènement malheureux a finalement abouti à ce que son système d'exploitation de nouvelle génération est handicapé par un système de fichiers de la génération précédente datant de la décennie passée. Avant de savoir si Lion fait ou non quelques progrès dans ce domaine, jetons un coup d'œil à notre vieil ami HFS+.


Ce qui ne va pas avec HFS+.

Le logiciel est écrit avec à l'esprit un certain matériel comme cible. Quand HFS a été créé, le Macintosh de haut de gamme venait avec un floppy de 800 Ko, le mode de stockage le plus évolué proposé par Apple était un disque dur de 20 Mo, de la taille d'une boîte à repas, et le CPU appartenait à la famille Motorola 68000. Treize ans plus tard, HFS+ a remplacé HFS, le floppy avait une taille de 1,44 Mo, et les disques durs d'Apple plafonnaient autour de 6 Go. Conservez ce contexte à l'esprit pendant que nous verrons les détails suivants de l'implémentation de HFS+.

Quand elle recherche des nœuds inutilisés dans un fichier b-tree, l'implémentation HFS+ d'Apple gère les données 16 bits à la fois. Pourquoi ? Sans doute parce que le processeur 68000 de Motorola supporte nativement des opérations sur 16 bits. Les CPUs des Macs modernes ont des registres qui peuvent avoir jusqu'à 256 bits.

Toutes les méta-données du système de fichiers HFS+ doivent subir une inversion des octets, parce qu'elles sont stockées sous la forme big-endian. Les CPUs Intel que les Macs utilisent maintenant sont little-endian ; le Motorola 68000 et les processeurs PPC sont big-endian. (Le coût en performance est négligeable ; mais c'est tout simplement idiot).

La résolution du temps pour les dates d'un fichier HFS+ est seulement de une seconde. Cela peut avoir été suffisant il y a quelques décennies, quand les ordinateurs et les disques étaient plus lents, mais à présent, des milliers d'opérations du système de fichiers (et des milliards de cycles CPU) peuvent être exécutés en une seconde. Les systèmes de fichiers modernes ont une précision qui va jusqu'à la nano seconde pour la date de leurs fichiers.

Le nombre total de blocs d'un volume HFS+ est une valeur stockée sur 32 bits. Avec des blocks de 4 Ko, cela permet une taille de disque maximum de 17 To. Cela peut vous sembler énorme à présent, mais pensez que que ce n'est que six fois plus que ce que nous avons aujourd'hui, et que les plus gros disque durs d'à présent, représentent six fois plus que ce que nous avions en 2005. (Apple peut bien sûr augmenter la taille du block de 4 Ko à, disons, 8 Ko, mais vous ne pouvez pas jouer à ce jeu trop longtemps).

HFS+ manque du support de fichiers dispersés, qui permet l'allocation d'espace seulement quand on en a besoin pour de gros fichiers. Imaginez une application qui crée une base de données de 1Go , puis écrit quelques octets comme entête au début, et quelques octets à la fin comme pied. Sur HFS+ un peu moins d'un Go de zéros devra être écrit sur le disque pour que cela puisse se produire. Sur un système de fichiers moderne avec un support de fichiers dispersé, seulement quelques octets seront écrits sur le disque.

La simultanéité, les méta-données écrites dans l'ordre correct des octets, une précision de date inférieure à la seconde, le support de volumes de taille massive, et celui des fichiers dispersés sont toutes des caractéristiques courantes des systèmes de fichiers Unix. Mac OS X, bien sûr, repose sur des bases Unix. Quand HFS+ a été porté de Mac OS classique à Mac OS X, il avait besoin d'un support étendu à un ensemble minimum de caractéristiques qu'on attend des systèmes de fichiers Unix.

Certaines de ces caractéristiques ont été faciles à adapter, mais d'autres étaient difficiles à rajouter au système de fichiers sans casser la compatibilité ascendante. Un exemple particulièrement effrayant est l'implémentation des liens matériels dans HFS+. Pour conserver la trace d'un lien matériel, HFS+ crée un fichier séparé pour chaque lien matériel à l'intérieur d'un fichier caché à la racine du volume. Les fichiers cachés sont déjà une cause d'inquiétude, mais la frayeur véritable intervient quand vous vous rappelez que TimeMachine est implémentée en utilisant des liens matériels pour éviter une duplication inutile de données.

Le listing du contenu de ce dossier caché (appelé "HFS+ Private Data", mais avec un tas de caractères non imprimables qui précèdent le H) sur mon volume de sauvegarde TimeMachine révèle qu'il contient 573 127 fichiers. B-trees ou pas b-trees, plus d'un demi million de fichiers dans un seul répertoire me rend nerveux.

Ce sentiment est renforcé par l'omission la plus inquiétante de HFS+, et pour être juste, de beaucoup d'autres systèmes de fichiers aussi. HFS+ ne se préoccupe pas de l'intégrité des données. Il fait confiance implicitement au matériel. Si quelques bits ou octets sont décalés d'une façon ou d'une autre par le matériel, HFS+ ne s'en aperçoit pas ! Cela concerne aussi bien les méta-données que les données elles-mêmes.

La corruption des structures de méta-données dans un système de fichiers peut rendre un fichier ou un disque entier illisible. (Pour une double frayeur, songez à une corruption qui peut affecter le dossier "HFS+ Private Data" où chaque lien matériel sur le volume de Time Machine est stocké). La corruption dans un fichier de données peut être considérée comme encore pire, parce qu'elle a beaucoup de chances de passer inaperçue. Avec le temps, elle peut se propager à toutes vos sauvegardes Quand on finit par la découvrir, peut-être après des années, en regardant les images du bébé, il est trop tard pour faire quoi que ce soit.

Mais, comment la corruption des données peut-elle effectivement intervenir ? La réponse semble être "plus souvent que vous ne l'imagineriez". Voici un extrait d'un article académique de 2010 sur l'intégrité des données :

Dans une récente étude sur 1,53 million de disques pendant 41 mois, Bairavasundaram et al montrent que plus de 400 000 blocs avaient des fautes de somme de contrôle, dont 8% ont été découvertes pendant une reconstruction RAID, qui laissait la possibilité d'une perte réelle de données. Ils ont aussi trouvé que les disque de bas de gamme développent des erreurs de somme de contrôle d'un ordre de grandeur plus élevé que les disques réservés aux entreprises.

Lisez la totalité de l'article (en PDF) pour plus de détails et pour les références. (Voici un autre exemple (en PDF) du CERN, et la section " intégrité des données" dans l'article de Wikipedia sur ZFS contient plus d'informations et de liens).

La plupart de ces études se consacrent aux déploiements à l'échelle de l'entreprise, mais le stockage personnel utilisé actuellement est celui qu'utilisait l'entreprise i y a quelques années (en termes de capacité, sinon de quantité). Et gardez à l'esprit que ces problèmes empirent quand le volume des données augmente, ce qu'il fait inévitablement année après année.

Il devient vite inexcusable que les systèmes de stockage auxquels nous faisons confiance, comme d'autres choses auxquelles nous tenons, -une chose à laquelle nous avons été activement encouragés par Apple elle-même- aient une approche si cavalière avec l'intégrité des données. Le pire est que l'utilisateur ne peut rien faire pour combler ce fossé technologique ; les sauvegardes ne servent qu'à répandre la corruption en silence.

Je vais m'arrêter là, mais remarquez que je n'ai même pas abordé les autres caractéristiques principales d'un système de fichiers moderne : des clichés à moments réguliers, des mises à jour transactionnelles, la dé-duplication des données, et ainsi de suite. HFS+ a bien servi Apple, et sans doute plus longtemps que ses concepteurs n'avaient imaginé qu'il le ferait. Mais comme les autres produits associés à Apple, et les technologies qui concernent cette description (Mac OS classique, Carbon, PowerPC), il vient un temps où des choses jadis précieuses doivent quitter ce monde.