Article de reference

HFS Plus

Apple_HFS ([[Apple Partition Map]]) 0xAF ([[Master boot record|MBR]]) HFS and HFS+ Apple_HFSX ([[Apple Partition Map]]) when HFSX 48465300-0000-11AA- AA11-00306543ECAC ([[GUID P...

système de fichiers journalisé développé par Apple Inc. Il a remplacé le système de fichiers hiérarchique (HFS) comme système de fichiers principal des ordinateurs Apple avec la sortie de Mac OS 8.1 en 1998. HFS+ est resté le système de fichiers principal de Mac OS X jusqu'à son remplacement par le système de fichiers Apple (APFS), introduit avec macOS High Sierra en 2017. HFS+ est également l'un des formats pris en charge par le lecteur de musique numérique iPod . En 2026, macOS Golden Gate a officiellement abandonné le HFS+ chiffré au profit de l'APFS chiffré .

Comparé à son prédécesseur HFS (également appelé Mac OS Standard ou HFS Standard), HFS Plus prend en charge des fichiers beaucoup plus volumineux (les adresses de blocs sont codées sur 32 bits au lieu de 16) et utilise Unicode (au lieu de Mac OS Roman ou d'autres jeux de caractères) pour nommer les éléments. Comme HFS, HFS Plus utilise des arbres B pour stocker la plupart des métadonnées de volume , mais contrairement à la plupart des systèmes de fichiers qui prennent en charge les liens physiques , HFS Plus autorise les liens physiques vers des répertoires. HFS Plus permet des noms de fichiers jusqu'à 255 caractères et des fichiers à n branches , comme NTFS , bien que jusqu'en 2005, presque aucun logiciel système n'exploitait les branches autres que la branche de données et la branche de ressources . HFS Plus utilise également une table de mappage d'allocation complète de 32 bits au lieu des 16 bits de HFS, ce qui améliore l'utilisation de l'espace sur les disques de grande capacité.

HFS+ a été introduit avec la sortie de Mac OS 8.1 le 19 janvier 1998.

Avec la sortie de la mise à jour Mac OS X 10.2.2 le 11 novembre 2002, Apple a ajouté des fonctionnalités de journalisation optionnelles à HFS Plus pour une meilleure fiabilité des données. Ces fonctionnalités étaient accessibles via l'interface graphique, à l'aide de l'application Utilitaire de disque sur Mac OS X Server, mais uniquement via la ligne de commande dans le client de bureau standard.

Avec Mac OS X v10.3, tous les volumes HFS Plus de tous les Mac sont configurés par défaut pour être journalisés. Dans le système, un volume HFS Plus journalisé est identifié par HFSJ .

Mac OS X 10.3 a également introduit une autre version de HFS Plus appelée HFSX . Les volumes HFSX sont presque identiques aux volumes HFS Plus, à ceci près qu'ils ne sont jamais entourés de l' enveloppe HFS Wrapper caractéristique de ces derniers et qu'ils prennent en charge, en option, la sensibilité à la casse pour les noms de fichiers et de dossiers. Les volumes HFSX sont reconnaissables à deux entrées dans l'en-tête du volume : la valeur HX dans le champ de signature et la valeur 5 dans le champ de version.

Mac OS X 10.3 a également marqué l'adoption par Apple de la décomposition Unicode 3.2, remplaçant ainsi la décomposition Unicode 2.1 utilisée précédemment. Ce changement a causé des problèmes aux développeurs de logiciels pour Mac OS X.

Mac OS X 10.3 a introduit un certain nombre de techniques destinées à éviter la fragmentation des fichiers dans HFS+.

Avec Mac OS X 10.4, Apple a ajouté la prise en charge des enregistrements de données d'attributs en ligne (IAD), une fonctionnalité présente dans l'implémentation HFS Plus de Mac OS X depuis au moins la version 10.0 , mais toujours indiquée comme « réservée pour un usage futur » . Jusqu'à la sortie de Mac OS X Server 10.4 , HFS Plus ne prenait en charge que les permissions standard du système de fichiers UNIX ; cependant, la version 10.4 a introduit la prise en charge de la sécurité des fichiers basée sur les listes de contrôle d'accès ( ACL), offrant un mécanisme plus riche pour définir les permissions de fichiers et conçu pour être entièrement compatible avec les modèles de permissions de fichiers d'autres plateformes telles que Microsoft Windows XP et Windows Server 2003 .

Dans Mac OS X Leopard 10.5, la création de liens physiques vers des répertoires a été ajoutée comme élément fondamental de Time Machine.

Dans Mac OS X Snow Leopard 10.6, la compression HFS+ a été ajoutée via Deflate (Zlib). Dans les logiciels libres et ailleurs, on parle d'AppleFSCompression ou decmpfs. Les données compressées peuvent être stockées dans un attribut étendu ou dans la ressource fork. Lors de l'utilisation d'API non Apple, AppleFSCompression n'est pas toujours totalement transparente. OS X 10.9 a introduit deux nouveaux algorithmes : LZVN (libFastCompression) et LZFSE .

Dans Mac OS X Lion 10.7, le chiffrement des volumes logiques ( FileVault 2 ) a été intégré au système d'exploitation. Cette intégration n'a en rien modifié la structure logique du système de fichiers. Le gestionnaire de volumes logiques d'Apple, appelé Core Storage, permet un chiffrement au niveau du volume compatible avec d'autres systèmes de fichiers que HFS+. Avec le matériel adéquat, le chiffrement et le déchiffrement sont totalement transparents.UTF-16 et normalisés sous une forme très proche de la forme de normalisation Unicode D (NFD) (ce qui signifie que les caractères précomposés comme « å » sont décomposés dans le nom de fichier HFS+ et comptent donc pour deux unités de code ; l’UTF-16 implique également que les caractères hors du plan multilingue de base comptent également pour deux unités de code dans un nom de fichier HFS+). HFS Plus autorise des noms de fichiers d’une longueur maximale de 255 unités de code UTF-16.

Auparavant, les volumes HFS Plus étaient intégrés à un système de fichiers HFS standard. Cette pratique a été abandonnée lors du passage à Mac OS Intel avec Tiger, où le système de fichiers HFS Plus n'était plus intégré dans une interface. Cette interface avait une double fonction : permettre aux ordinateurs Macintosh dépourvus de prise en charge HFS Plus dans leur ROM de démarrer sur des volumes HFS Plus et faciliter la transition des utilisateurs vers HFS Plus en incluant un volume HFS minimal avec un fichier en lecture seule nommé Where_have_all_my_files_gone?, expliquant aux utilisateurs de versions de Mac OS 8.0 et antérieures sans HFS Plus que le volume nécessite un système compatible HFS Plus. Le volume HFS d'origine contient une signature et un décalage vers le volume HFS Plus intégré dans son en-tête. Tous les blocs d'allocation du volume HFS contenant le volume intégré sont marqués comme blocs défectueux dans le fichier d'allocation HFS .

Notamment parmi les systèmes de fichiers utilisés pour les systèmes Unix, HFS Plus ne prend pas en charge les fichiers épars .

Il existe neuf structures qui constituent un volume HFS Plus typique :

  1. Les secteurs 0 et 1 du volume sont des blocs de démarrage HFS . Ils sont identiques aux blocs de démarrage d'un volume HFS et font partie de l'enveloppe HFS.
  2. Le secteur 2 contient l' en-tête de volume , équivalent au bloc de répertoire maître d'un volume HFS. Cet en-tête stocke diverses données relatives au volume, telles que la taille des blocs d'allocation, un horodatage indiquant la date et l'heure de création du volume, ou encore l'emplacement d'autres structures de volume comme le fichier catalogue ou le fichier de débordement d'étendue. L'en-tête de volume se trouve toujours au même emplacement.
  3. Le fichier d'allocation assure le suivi des blocs d'allocation libres et utilisés. Il est similaire à la bitmap de volume HFS, où chaque bloc d'allocation est représenté par un bit : 0 pour un bloc libre et 1 pour un bloc utilisé. La principale différence avec la bitmap de volume HFS réside dans le fait que le fichier d'allocation est stocké comme un fichier classique ; il n'occupe pas d'espace réservé spécifique au début du volume. Sa taille peut également varier et il n'est pas nécessaire qu'il soit stocké de manière contiguë au sein d'un volume.
  4. Le fichier catalogue est un arbre B contenant les enregistrements de tous les fichiers et répertoires stockés sur le volume. Le fichier catalogue HFS Plus est très similaire au fichier catalogue HFS , la principale différence étant la taille des enregistrements, permettant ainsi d'inclure davantage de champs et d'utiliser des champs plus longs (par exemple, pour les noms de fichiers Unicode de 255 caractères). Un enregistrement du fichier catalogue HFS pèse 512 octets ; un enregistrement du fichier catalogue HFS Plus pèse 4 Ko sous Mac OS classique et 8 Ko sous macOS . La taille des champs est fixe dans HFS, tandis qu'elle peut varier dans HFS Plus en fonction de la taille des données qu'ils contiennent.
  5. Le fichier de débordement d'étendues est un autre arbre B qui enregistre les blocs alloués à chaque fichier sous forme d'étendues. Chaque enregistrement de fichier dans le fichier catalogue peut contenir huit étendues par branche ; une fois ces étendues utilisées, les étendues supplémentaires sont enregistrées dans le fichier de débordement d'étendues. Les blocs défectueux sont également enregistrés comme étendues dans ce fichier. La taille par défaut d'un enregistrement d'étendue est de 1 Ko sous Mac OS classique et de 4 Ko sous macOS.
  6. Le fichier d'attributs est un nouvel arbre B dans HFS Plus, sans structure équivalente dans HFS. Il peut stocker trois types d'enregistrements de 4 Ko : les enregistrements d'attributs de données en ligne , les enregistrements d'attributs de données de type « fork » et les enregistrements d'attributs d'extension . Les enregistrements d'attributs de données en ligne contiennent de petits attributs qui tiennent dans l'enregistrement lui-même. Les enregistrements d'attributs de données de type « fork » contiennent des références à un maximum de huit extensions pouvant contenir des attributs plus volumineux. Les attributs d'extension permettent d'étendre un enregistrement d'attribut de données de type « fork » lorsque ses huit extensions sont déjà utilisées.
  7. Le fichier de démarrage est conçu pour les systèmes autres que macOS qui ne prennent pas en charge HFS ou HFS Plus. Il est similaire aux blocs de démarrage d'un volume HFS.
  8. L'avant-dernier secteur contient l' en-tête de volume alternatif (AVH ), équivalent au bloc de répertoire maître alternatif (AMRB) du système de fichiers HFS. Il s'agit de l'avant-dernier secteur du disque, et non du volume ; si le disque est plus grand que le volume, l'AVH se trouvera hors de la plage du système de fichiers.
  9. Le dernier secteur du volume est réservé à l'usage d'Apple. Il est utilisé lors du processus de fabrication des ordinateurs.

Critiques

HFS Plus ne possède pas plusieurs fonctionnalités considérées comme essentielles aux systèmes de fichiers modernes tels que ZFS et NTFS . Les sommes de contrôle des données sont la fonctionnalité manquante la plus fréquemment citée.

Outre le calcul de sommes de contrôle, les fonctionnalités des systèmes de fichiers modernes qui font défaut à HFS+ incluent :

  • horodatages en nanosecondes
  • accès concurrent (c'est-à-dire que plusieurs processus peuvent accéder au système de fichiers en même temps)
  • instantané
  • Prise en charge des dates postérieures au 6 février 2040
  • prise en charge des fichiers épars
  • une meilleure implémentation des liens physiques (dans d'autres systèmes de fichiers, il s'agit généralement de plusieurs entrées de répertoire pointant vers les mêmes blocs de données ; les liens physiques dans macOS sont implémentés sous forme de petits fichiers stockés dans un répertoire caché spécial)

HFS Plus n'a pas été conçu pour les systèmes de type Unix , donc des fonctionnalités telles que les permissions du système de fichiers et les liens physiques ont dû être adaptées lorsqu'Apple est passé à Mac OS X.

Une source affirme clairement que HFS Plus ne prend pas en charge TRIM sur les SSD , limitant les performances et augmentant l'usure, mais une autre dit que pour le stockage externe, cela dépend seulement de si le SSD possède une interface NVMe et/ou si la fonctionnalité a été explicitement activée. noyau Linux inclut le module hfsplus pour le montage en lecture-écriture des systèmes de fichiers HFS+. Les utilitaires HFS+ fsck et mkfs ont été portés sur Linux et font partie du paquet hfsprogs.

En 2009, il a été diagnostiqué que ces pilotes corrompaient les disques HFS+ d'une capacité supérieure à 2 To. Par conséquent, les distributions Linux telles que Debian et Ubuntu ont cessé d'autoriser le montage de disques ou de partitions HFS+ de plus de 2 To. Time Machine d'Apple , la journalisation peut être désactivée sous macOS : Dans l'Utilitaire de disque d'OS X Yosemite, l'utilisateur peut maintenir la touche Alt/Option enfoncée et cliquer sur « Désactiver la journalisation » dans le menu Fichier, après avoir sélectionné une partition montée.

Sous Linux, il est possible de monter de force une partition HFS+ avec journalisation activée en mode écriture, mais cette pratique est non prise en charge et déconseillée.

Un projet du Google Summer of Code visant à implémenter la prise en charge de l'écriture sur HFS+ journalisé a été accepté par la Linux Foundation en 2011, mais n'était pas terminé à cette époque et reste en cours de développement. Les progrès et les améliorations apportées au pilote HFS+, notamment certaines mises à jour concernant la journalisation, sont régulièrement publiés sur la liste de diffusion linux-fsdevel .

Software Group a fourni des pilotes de noyau permettant un accès complet en lecture-écriture aux volumes journalisés HFS+. Ce produit est une implémentation propriétaire de HFS+ basée sur la bibliothèque UFSD propriétaire de Paragon. Il existe des versions gratuite et payante du pilote, incluant un utilitaire de vérification et de réparation des volumes HFS+. D'après la documentation en ligne (version gratuite ou version payante ), les deux versions sont actuellement compatibles avec les noyaux Linux de 2.6.36 à 4.12.x. Ubuntu , Debian , Fedora Linux , Rocky Linux , Red Hat Enterprise Linux , OpenSUSE et CentOS sont les seules distributions Linux officiellement prises en charge.

Windows

En mai 2012, Apple ne proposait que des pilotes HFS+ en lecture seule pour Windows XP, Windows Vista et Windows 7, intégrés au logiciel Boot Camp de Mac OS X 10.6 . Cela signifie que les utilisateurs de ces systèmes peuvent lire les données sur le disque HFS+, mais pas y écrire. Microsoft a créé un pilote HFS+ pour la Xbox 360, principalement destiné à la lecture des iPod formatés en HFS+.Total Commander qui peut lire, entre autres, les systèmes de fichiers HFS et HFS+.

DiskInternals Linux Reader peut être utilisé pour extraire/enregistrer des dossiers/fichiers à partir de disques durs/partitions HFS et HFS+.

Un produit commercial, MacDrive, est également disponible pour monter les disques HFS+ et APFS , les disques optiques et autres supports dans l'Explorateur Windows, et permet à la fois la lecture et l'écriture sur le volume, ainsi que la réparation et le formatage des disques Mac.

HFS+ pour Windows de Paragon est un produit commercial qui permet la lecture et l'écriture complètes ainsi que la gestion des disques depuis toutes les versions de Windows, de Windows XP à Windows Server 2008.

Multiplateforme

Une alternative gratuite ( sous licence GPL ) est HFSExplorer, développé par Erik Larsson. HFSExplorer est une application Java permettant de visualiser et d'extraire des fichiers d'un volume HFS+ (Mac OS Étendu) ou HFSX (Mac OS Étendu, sensible à la casse). Le volume peut se trouver sur un disque physique, dans divers formats d'image disque Apple ou d'image disque clairsemée , ou encore sous forme de dump brut du système de fichiers. Cependant, HFSExplorer est une solution en lecture seule ; il ne permet pas d'écrire sur les volumes au format HFS.