Block device
Le système d'exploitation utilise le disque dur comme un block device, c.à.d. que les données sont écrites et lues en blocs de longueur fixe. Une imprimante, un clavier sont des stream devices qui traitent les données en flot continu.
Le système d'exploitation organise le contenu du disque pour permettre un accès aux données: un certain nombre de blocs contient le répertoire du disque, d'autres blocs contiennent des données technique (par exemple le FAT) et le restant des blocs peut contenir les données.
MBR - Master Boot Record
Il n'y a qu'un bloc qui a une signification particulière, le premier bloc qui est le master boot record. Ce bloc contient un tableau de maximum 4 éléments qui indique la partage du disque en partitions (4 partitions primaires au maximum).
CHS - Cylinder, Head, Sector
L'indication CHS se rapporte à l'adressage des premiers disques durs.
- Le cylindre est formé par les différentes pistes lues par les têtes sans les déplacer. Déplacer les têtes d'un cylindre à un autre demande plusieurs millisecondes (selon la distance à parcourir).
- Un disque dur se compose au minimum de deux têtes (s'il y a un seul plateau). La commutation d'une tête à l'autre est immédiat: les disques récents lisent d'ailleurs toutes les pistes en une fois.
- Une piste se compose de secteurs, qui forment l'unité d'accès élémentaire. La vitesse de lecture des secteurs dépend de la vitesse de rotation du disque dur. En moyenne, pour accéder à un secteur, il faut une demi-rotation (temps de latence moyen).
Un inconvénient de cette méthode d'adressage est la limite maximale de capacité, un peu plus de 500MB. Dans les années 1980, les ingénieurs n'avaient jamais pensé qu'un disque aurait pu avoir plus de 1024 cylindres, 16 têtes et 63 secteurs. Les disques actuels n'ont que 2 ou 4 têtes, mais plusieurs milliers de cylindres et un nombre variable de secteurs.
Zoned bit recording
L'adressage CHS n'est plus utilisé, et ce n'est pas uniquement parce que la capacité des disques a dépassé la limite imposée par les ingénieurs. Les disques récents ont un nombre de secteurs variables par cylindre. Le diamètre extérieur est en effet plus grand que le diamètre intérieur. On utilise environ 15 zones, avec un nombre de secteurs qui diminue vers le centre du disque.
Le nombre de secteurs par cylindre est fixé lors du formatage low level (qui est maintenant uniquement effectué en usine).
Un effet de l'enregistrement zoned bit recording est que la lecture de fichiers en début de disque est plus rapide que la lecture en fin de disque parce qu'il y a plus d'information stockée sur les pistes extérieures. Si le disque est composé de plusieurs partitions, il faut placer la partition principale (partition active, qui contient le système d'exploitation) en début de disque et la partition la moins utilisée en fin de disque.
LBA - Logical Block Adressing
LBA est le système qui remplace l'adressage CHS. Le disque dur indique simplement le nombre de blocs disponibles et le système d'exploitation accède au disque en utilisant le numéro de bloc. Le disque dur transforme lui-même le numéro de bloc en adressage physique. Chaque bloc a la même grandeur, 512 bytes.
ECC Error Correction Code
Le disque ajoute 40 bytes qui servent pour la détection et correction d'erreur du bloc correspondant. Cette zone permet de corriger des erreurs limitées. Un secteur à moitié illisible ne peut pas être lu. Une erreur qui a pu être corrigée fait augmenter le paramètre SMART 195 (hardware ECC recovered). Une erreur qui ne peut être corrigée fait augmenter le paramètre 198 (uncorrectable sector count). Si le secteur peut être lu plus tard (par exemple quand le disque est froid), les données seront placées sur un secteur de réserve et le secteur défectueux sera mis hors fonction.
Un disque récent peut avoir des milliers d'erreurs à la lecture: c'est un phénomène normal, et c'est à çà que servent les bits de correction.
Spare sectors
Chaque cylindre dispose de secteurs en réserve en remplacement des secteurs défectueux. Le déplacement des données s'effectue automatiquement sans intervention du système d'exploitation (qui n'est mis au courant que par une modification de certains paramètres SMART).
Le disque va utiliser le secteur en réserve qui est placé le plus près possible (en facteur de temps) du secteur défectueux. S'il n'y a plus de place sur le cylindre actuel, le disque va utiliser un secteur de réserve sur une des pistes adjacentes.
Clusters ou blocs logiques
La plupart des systèmes d'exploitation travaillent avec des clusters de 4kB (ou un multiple de cette valeur): le nombre de blocs est en effet trop grand et ne permet plus une gestion efficace. Le fichier d'échange de microsoft (pagefile) se compose de pages de 4kB. Un cluster est un nombre de blocs consécutifs qui sont traités comme un seul bloc par le système d'exploitation. La perte de place engendrée par le regroupement de blocs est négligable avec les fichiers qui deviennent de plus en plus grands.
Blocs de 4k: Advanced Format et SSD (Solid State Disk)
Les disques actuels utilisent des blocs de 4kB (tout comme les SSD qui utilisent des pages de 4kB).
L'utilisation de blocs plus grands dans les disques modernes réduit les pertes de place, car chaque bloc se compose des éléments suivants:
- un trou (gap), qui n'est pas utilisé, c'est la séparation entre deux blocs. Le but de cette zone est d'avoir une réserve pour permettre d'écrire chaque bloc sans risquer d'empièter sur le bloc suivant.
- une zone de synchronisation (sync), qui indique le début du bloc et permet de synchroniser le décodage des données.
- une zone d'adresse (Address Mark) qui indique le numéro de bloc. C'est important car l'électronique ne sait pas quel secteur passe à ce moment sous la tête. Le saut de piste n'est pas toujours fiable (la tête peut se retrouver sur une piste adjacente).
- 512 bytes de données, qui sont transmises à l'ordinateur
- une correction d'erreur de 40 bytes.
On perd moins de place quand on utilise des blocs plus grands: il ne faut qu'un seul gap, sync et adresse. La correction d'erreur d'une zone de 4096 octets demande moins de place que 8× la correction d'une zone de 512 bytes (l'explication technique est assez compliquée). On gagne environ 10% de place en utilisant des blocs de 4kB au lieu de 512 bytes.
Il est en théorie possible de gagner encore plus de place en utilisant des blocs de la grandeur d'un cylindre (donc en éliminant complètement les secteurs). Cette méthode a été utilisée avec les disquettes (distribution media format) et permet de passer de 1.4MB à 2MB. Le problème avec les disques durs est que le nombre de secteurs n'est pas constant (zoned bit recording). La gestion de blocs de longueur variable n'est pas envisageable, on a donc choisi une longueur qui soit un compromis. Notez que l'Advanced Format II travaille avec des blocs d'1MB.
Le disque dur permet toujours un accès via des blocs de 512 bytes (pour des raisons de compatibilité). Il n'y a pratiquement pas de pénalité à la lecture, mais l'écriture d'un bloc provoque un ralentissement notable. Il faut en effet lire tout le bloc de 4096 bytes pour en modifier 512, et puis réécrire les 4096 bytes. Il faut attendre que le bloc à modifier repasse sous les têtes (read-modify-write). Si le disque tourne à 5400 tours, cela produit au minimum une pénalité de 11ms par opération d'écriture.
Ubuntu détecte automatiquement qu'une partition est mal alignée “This partition is misaligned by 512 bytes”. Il faut utiliser un programme comme parted pour aligner correctement les partitions. Windows qui n'a pas un tel programme doit utiliser le programme fourni avec le fabricant de disque durs (Western Digital), mais il existe également des utilitaires génériques.
Advanced Format, clusters et partitions
Le système d'exploitation travaille actuellement avec des clusters de 4k et les disques utilisent des blocs de 4k. L'idéal quoi...
... Sauf qu'une partition ne commence normalement pas à une adresse qui est un multiple de des blocs de 4k (la première partition commence au bloc 63). Chaque cluster se retrouve donc dans deux blocs différents, ce qui est très néfaste pour la vitesse de fonctionnement du système. Pour lire ou écrire un cluster, il faut donc lire ou écrire deux blocs de 4k.
Il y a des utilitaires pour déplacer automatiquement les partitions. Il faut faire appel au programme une fois les partitions définies et formatées (l'adressage dans la partition même est relatif).
Plus d'informations sur l'advanced format et l'effet qu'il a sur les partitions est décrit ici.
|