Capsule : Préparation des unités de stockage de masse

Cette capsule présente quelques notions essentielles liées à la mémoire secondaire (également appelée mémoire de masse). Cette mémoire se compose des différentes unités de stockage de masse (disques durs, SSD, clés USB ou lecteurs de CD et DVD, etc.) connectées de manière permanente ou temporaire à l’ordinateur. On ne parlera pas ici des bandes magnétiques de sauvegarde (LTO) qui n’ont pas le même rôle et qui sont traitées dans le module 143.

La première partie présente la structure d’un disque dur et introduit les notions de secteur (block), d’adresse CHD et d’adresse LBA. La deuxième partie est consacrée à la notion de partitionnement et présente les deux systèmes de partitionnement que nous aurons l’occasion d’utiliser (MBR partition table et GPT). Enfin, la troisième partie aborde les notions de système de fichier et de formatage d’une partition et présente brièvement les principaux systèmes de fichiers (file system) utilisés avec les systèmes d’exploitation de Microsoft, d’Apple et de GNU Linux.

Structure d’un disque dur

L’étude de la structure d’un disque dur permet de donner du sens à certains termes que nous aurons l’occasion de rencontrer. La figure 3 montre de manière schématique la structure physique d’un disque dur vu de dessus et en perspective.

Panneau de contrôle d’un DEC PDP-11
Fig. 3 – Structure d’un disque dur
(A : disques, B : bras, C : tête de lecture/écriture, D : cylindre, F : secteur géométrique)

Un disque dur est composé d’un ou plusieurs disques de verre ou d’aluminium (A) recouvert d’un film magnétique sur chaque face. Une tête de lecture (C) fixée au bout d’un bras pivotant (B) « vole » à une dizaine de nanomètres au-dessus de la surface de chaque plateau. Les disques sont divisés en secteurs géométriques (F) et en cylindres concentriques (E). L’intersection d’un cylindre et d’un secteur géométrique sur un plateau délimite une petite surface appelée secteur (block). Un secteur est la plus petite unité de données adressable. Sa taille est traditionnellement de 512 octets, mais de plus en plus de disques ont des secteurs d’une taille de 4096 octets ou 4 kio (Advanced Format).

Traditionnellement, le mode d’adressage des secteurs reflétait la structure physique du disque. Pour s’adresser à un bloc de données, on spécifiait le numéro du cylindre, le numéro de la tête et celui du secteur géométrique (Cylindre/Head/Sector ou CHS). Avec l’arrivée des CD, ce mode d’adressage a été abandonné au profit de l’adressage par secteur logique (Logical Block Addressing) qui consiste simplement à spécifier le numéro d’un secteur.

Pour un disque dur magnétique, le formatage de bas niveau est l’opération qui consiste à créer les secteurs sur la surface du ou des disques. Cette opération pouvait être effectuée par l’utilisateur final du disque à l’aide d’un utilitaire. Aujourd’hui, la densité des secteurs est devenue si grande que le formatage de bas niveau ne peut être effectué que par le constructeur.

Partitionnement

Le partitionnement est une opération qui consiste à créer une ou plusieurs régions de taille fixe dans une unité de stockage de masse (disque dur, SSD, clé USB, etc.). Ces régions sont appelées partitions. Du point de vue d’un système d’exploitation, chaque partition est un espace de stockage indépendant. Le nombre et la taille des partitions dépendent du firmware, du système d’exploitation et des besoins de l’utilisateur.

Dans tous les cas, le partitionnement est une opération nécessaire pour pouvoir utiliser une unité de stockage de masse, même si celle-ci doit contenir une partition unique. Cette opération, souvent appelée initialisation, consiste à utiliser une petite partie de l’espace du disque pour y stocker une table appelée table de partitions (partition table). Chaque entrée (ligne) de cette table contient la description d’une partition qui se compose principalement de l’adresse du premier bloc, de l’adresse du dernier bloc ou du nombre de blocs et divers attributs tels que le type de partition.

Il existe actuellement deux formats de table de partition :

  • Table de partition du MBR : système de partitionnement hérité de l’IBM PC.
  • Table de partition à GUID (GPT) : système de partitionnement introduit en même temps que l’UEFI.

Table de partitions du MBR

Le master boot record (MBR) est le nom donné au premier bloc de 512 octets d’une unité de stockage de masse destinée à être utilisée avec un ordinateur compatible PC. Ce bloc de données, qui contient le code nécessaire au démarrage d’une machine équipée d’un firmware de type BIOS, est également l’endroit où se trouve la table de partitions de l’unité de stockage.

La table de partition n’occupe que 64 octets du MBR, les 446 premiers octets étant utilisé par le code du chargeur d’amorçage (bootstrap loader) et les deux derniers par les valeurs 5516 et AA16 qui constitue la signature du MBR. La table a une taille fixe de quatre entrées qui permettent de décrire autant de partitions appelées partitions primaires ou principales. Si plus de quatre partitions sont nécessaires, l’une des partitions primaires peut être remplacée par une partition dite partition étendue (extended partition).

Une partition étendue est un conteneur qui peut être subdivisé en un maximum de 64 partitions logiques (logical partitions). Une petite partie de l’espace de la partition étendu est utilisée pour stocker une table de partition semblable à celle du MBR, mais dont le nombre d’entrées n’est pas aussi limité. En dehors de quelques subtilités pour le démarrage de la machine, une partition primaire et une partition logique sont parfaitement semblables du point de vue de l’utilisateur et des applications et peuvent être utilisées de la même manière.

Table de partitions à GUID (GPT)

La table de partitions du MBR a été conçue à une époque où le coût de l’espace de stockage était encore très élevé. Il fallait donc utiliser le moins d’espace possible pour décrire la structure du disque. La conséquence est une structure relativement difficile à lire (certains champs ont une taille de 6 bits, d’autres, une taille de 12 bits), des adresses de blocs codées sur seulement 32 bits qui interdisent la gestion de disques de plus de 2 Tio et aucun standard pour l’identification du type de partition codé sur un seul octet.

Lors du développement du firmware EFI (qui deviendra l’UEFI) dans la seconde moitié des années 1990, la table de partitions du MBR a été jugée trop contraignante pour le matériel moderne auquel il était destiné. Intel a donc développé un nouveau format de table de partitions : la table de partitions à GUID (GUID partition table ou GPT).

Le développement de ce nouveau format a permis de s’affranchir des limitations de l’ancien en faisant passer le nombre de partitions à 128 et la taille maximale d’un disque dur à 9.4 milliards de To pour les disques. D’un point de vue pratique, ces valeurs peuvent être considérées comme illimitées.

Avantage et inconvénient du partitionnement

Le principal inconvénient du partitionnement est que les partitions sont de taille fixe et que même si un redimensionnement est souvent possible, c’est une opération relativement risquée. On doit donc soigneusement planifier la taille des différentes partitions. Si l’on a pas suffisemment d’information pour le faire, le mieux est de ne pas partitionner.

Parmi les avantages du partitionnement, on peut mentionner la séparation des données utilisateur et du système d’exploitation qui permet de réinstaller facilement ce dernier en cas de besoin. Par exemple, avec un système d’exploitation de la famille Unix, on stocke des données utilisateur notamment dans /home, /tmp et /var/tmp et il est courant d’avoir des partitions séparée pour ces points de montage (voir encadré ci-dessous). Pour Windows, les recommandations de Microsoft pour le partitionnement du disque n’incluent pas de partition pour les données utilisateur. Toutefois, il est possible d’utiliser un autre disque et un autre répertoire que C:\Users pour le stocker les profiles des utilisateurs si cela est nécessaire.

Systèmes de fichiers

Du point de vue du système d’exploitation, une partition est juste une suite de secteurs de 512 octets ou 4 kio, chacun d’eux portant un numéro. Pour se faire une idée, on peut comparer un disque à un immense bloc de papier. Un bloc vraiment immense, puisqu’une partition de 1 Tio représenterait un bloc de plus de 2 milliards de feuilles.

Imaginons maintenant que chacune de ces feuilles soit une page d’un livre et que le bloc contient plusieurs millions de livres. Pour être en mesure d’en faire quelque chose, on doit regrouper les pages d’un même livre avec une reliure munie d’une couverture pour y noter le titre et d’autres informations, classer les livres dans les rayons d’une bibliothèque. De plus, on a besoin d’une ou plusieurs listes de ces livres de manière à pouvoir rechercher celui dont on a besoin et le localiser aussi vite que possible dans les multiples bâtiments, étages, allées et rayons de la bibliothèque.

De la même manière, un système de fichier permet d’organiser les secteurs d’une partition. Pour cela, il crée dans l’espace de stockage des structures de données qui correspondent au catalogue de la bibliothèque. Chaque entrée du catalogue représente un fichier (l’équivalent d’un livre) qui associe un nom et diverses informations avec une liste des blocs qui contiennent les données. Dans un système de fichier, un bloc (cluster) est la plus petite unité de données adressable et se compose d’un ou plusieurs secteurs. La taille d’un bloc (cluster) est typiquement de 4 kio, mais elle peut être plus grande pour la prise en charge de très grosse partition.

L’opération qui consiste à créer un système de fichier dans une partition est le formatage. Elle est parfois appelée formatage de haut niveau pour la distinguer du formatage de bas niveau qui consiste à créer les secteurs à la surface des plateaux.

Choisir un système de fichiers

Bien qu’il en existe un grand nombre, le choix d’un système de fichier est dans la plupart des cas dicté par le système d’exploitation que l’on veut installer :

  • NTFS pour Windows
  • APFS et HFS+ pour macOS (OS X)
  • ext4FS ou ext3FS pour GNU Linux

Même s’il est en principe aujourd’hui possible de lire et d’écrire sur n’importe quels systèmes de fichiers avec n’importe quel système d’exploitation, la partition de démarrage doit être dans un format « natif » et le support offert pour les systèmes de fichiers « étrangers » est de qualité très variable. Lorsque l’on veut échanger des données entre différents systèmes d’exploitation, on peut utiliser l’un des systèmes de fichier suivants :

  • FAT32 (FAT12, FAT16)
  • exFAT

Le système de fichier FAT32 est celui dont le support est requis par la spécification de l’UEFI. Il est donc supporté par tous les système d’exploitation moderne. L’inconvénient de FAT32 est qu’il ne permet pas l’échange de fichiers d’une taille supérieure à 4 Gio. Dans les cas où cette limite est rédhibitoire, on peut se tourner vers le système de fichiers exFAT qui est également très largement supporté, mais dont l’utilisation est soumise à certaines restrictions légales liés.

Pour les unités de stockage de masse de faible capacité (< 1 Go), il est préférable d’utiliser un système de fichiers sans journalisation tel que :

  • FAT32 (FAT12, FAT16)
  • ext2 (uniquement avec GNU Linux)

Enfin, pour les disques optiques, on utilise généralement un système de fichier dédié tel que :

  • ISO 9660 (inclut ISO 9660:1988, Joliet, ISO 9660:1999)
  • UDF pour les disques optiques (ré)inscriptible (DVD-RW, CD-RW, et.)

Caractéristiques des systèmes de fichiers

Parmi les caractéristiques importantes des systèmes de fichiers, on peut mentionner :

  • Taille maximale des partitions : Diverses raisons techniques peuvent limiter la taille maximale d’une partition sur laquelle peut être installé un système de fichier. Toutefois, pour les systèmes de fichiers ext4FS, NTFS et HFS+, cette limite se situe bien au-delà de 100 Tio. De fait, il n’y a généralement pas lieu de s’en préoccuper.

  • Taille maximale des fichiers : Indépendamment de la limite de taille des partitions, la taille des fichiers peut également être limitée. Par exemple, il est possible d’installer une FAT32 dans une partition de 2 Tio, mais la taille d’un fichier ne peut pas excéder 4 Gio. Les systèmes de fichiers ext4FS, NTFS et HFS+ supportent quant à eux des fichiers de 16 Tio.

  • Permissions : Pour les systèmes d’exploitation multi-utilisateur, le système de fichiers doit permettre de spécifier des droits d’accès pour les fichiers et les répertoires. Dans ce domaine, on distingue généralement les permissions Unix et les listes de contrôle d’accès (Access Control List ou ACL).

  • Résistance aux crash : Il existe diverses techniques pour réduire le risque de corruption des données en cas de coupures de courant ou de crash du système. La journalisation (journaling), par exemple, consiste à écrire les modifications dans un journal avant de les appliquer effectivement à un fichier. L’inconvénient est que de l’espace de stockage est utilisé par le journal. Pour des supports de faible capacité, un système de fichier sans journalisation est préférable, mais on doit alors faire de temps à autre une vérification de sa structure (fsck ou chkdsk) pour repérer et si possible réparer d’éventuelles erreurs.