Page suivantePage précédenteTable des matières

6. Géométrie du disque dur, partitions et 'overlap'

Si vous avez plusieurs systèmes d'exploitation sur vos disques durs, alors chacun utilise une ou plusieurs partitions. Un désaccord sur la localisation de ces partitions peut avoir des conséquences catastrophiques.

Le MBR contient une table des partitions qui décrit où se situent les partitions (primaires). Il y a 4 entrées à la table, pour 4 partitions primaires et chacune ressemble à :

struct partition {
 char active;    /* 0x80 : on peut demarrer avec ;
 0    : on ne peut pas */
 char begin[3];  /* CHS pour le premier secteur */
 char type;
 char end[3];    /* CHS pour le dernier secteur */
 int start;      /* numero de secteur sur 32 bits (en commencant a 0) */
 int length;     /* nombre de secteurs sur 32 bits */
};
(avec CHS qui signifie Cylinder/Head/Sector -- Cylindre/Tête/Secteur).

Cette information est redondante : la position de la partition est donnée à la fois par les champs begin et end codés sur 24 bits et par les champs start et length codés sur 32 bits.

Linux ne se sert que des champs start et length et ne peut de ce fait que prendre en compte des partitions qui ne comportent pas plus de 2^32 secteurs, c'est-à-dire, des partitions d'au plus 2 Tio. Cette capacité est douze fois plus grande que celle des disques durs que l'on peut trouver de nos jours, alors peut-être que cela sera suffisant pour, environ, les cinq prochaines années. (Donc, les partitions peuvent être très grandes, mais il y a une sérieuse restriction avec le système de fichiers ext2 quand il est utilisé sur des machines avec des entiers codés sur 32 bits : la taille maximale d'un fichier est limitée à 2 Gio.)

DOS utilise les champs begin et end et se sert des appels INT13 du BIOS pour accéder aux disques durs ; il ne peut gérer de ce fait que des disques dont la taille ne dépasse pas 8,4 Go, même avec un BIOS qui fait des conversions. (La taille des partitions ne peut pas excéder 2,1 Go à cause des restrictions du système de fichiers FAT16.) La même chose est valable pour Windows 3.11, WfWG et Windows NT 3.*.

Windows 95 intègre la gestion des interfaces INT13 Étendues et utilise des types de partition spéciaux (c, e, f à la place de b, 6, 5) pour indiquer que l'on doit accéder à la partition de cette manière. Quand ces types de partition sont utilisés, les champs begin et end contiennent des informations factices (1023/255/63). Windows 95 OSR2 introduit le système de fichier FAT32 (types de partition b ou c), qui permet d'avoir des partitions d'au plus 2 Tio.

Qu'est-ce que c'est que ce message insensé que vous rapporte fdisk au sujet de partitions qui se chevauchent : 'overlapping', quand pourtant tout est en ordre ? En fait, il y a quelque chose de 'problématique' : si vous voyez les champs begin et end de telles partitions, comme DOS le fait, il y a chevauchement (et cela ne peut pas être corrigé, parce que ces champs ne peuvent pas stocker des numéros de cylindre plus grands que 1024 : il y aura toujours 'chevauchement' dès que vous aurez plus de 1024 cylindres). Cependant, si vous voyez les champs start et length, comme les voit Linux et également Windows 95 dans le cas de partitions typées c, e ou f, alors tout apparaît comme étant en ordre. Donc, ne tenez pas compte de ces avertissements quand cfdisk ne se plaint pas et que vous avez un disque dur avec uniquement Linux dessus. Soyez prudents quand le disque dur est partagé avec DOS. Servez-vous des commandes cfdisk -Ps /dev/hdx et cfdisk -Pt /dev/hdx pour voir la table des partitions du disque /dev/hdx.

6.1 Le dernier cylindre

Un nombre important de vieux IBM PS/2 utilisent des disques durs avec une carte des défaillances écrite à la fin du disque (le bit 0x20 dans le mot de controle de la table de paramètrage du disque est positionné). De ce fait, FDISK n'utilisera pas le dernier cylindre. Pour se prémunir d'éventuel problème le BIOS donne souvent un taille inférieure d'un cylindre par rapport celle réelle du disque, ce qui peut faire en tout, deux cylindres de perdus. Les disques récents ont plusieurs fonctions permettant de donner leur taille qui, en interne, s'apellent les unes les autres. Quand les deux retirent 1 pour ce cylindre réservé et quand FDISK le fait aussi, alors trois cylindres peuvent être perdus. De nos jours tout ceci n'a plus de sens mais peut fournir une explication quand on utilise différents utilitaires qui donnent des valeurs différentes pour la taille du disque dur.

6.2 Limites du cylindre

La croyance populaire racconte que les partitions doivent commencer et finir aux frontières des cylindres.

Puisque la géométrie des disques est quelque chose qui n'a pas de réelle existence, des systèmes d'exploitation différents inventeront des géométries différentes pour le même disque. On voit souvent un système d'exploitation utiliser une géométrie après conversion de */255/63 et un autre utiliser une géométrie avant conversion de */16/63. Du coup, il devrait être impossible d'aligner les partitions sur les limites des cylilndres, si l'on se fie à l'idée que chaque système d'exploitation a de la géométrie du disque. De plus, le fait d'activer ou non le BIOS d'une carte SCSI peut changer la fausse géométrie des disques SCSI connectés.

Par chance, pour Linux les alignements ne sont pas nécessaires (sauf pour quelques logiciels d'installation boiteux qui aiment bien être sûr que tout est d'aplomb ; ce qui peut empécher d'installer une RedHat 7.1 sur un disque aux partitions non alignées, DiskDruid n'étant pas content).

Des personnes rapportent qu'il est facile de créer des partitions non alignées sous Windows NT, sans qu'il n'y ait de problème apparent.

MSDOS 6.22 par contre, nécessite un alignement. Les secteurs sur partitions étendues qui ne sont pas sur la frontière d'un cylindre son ignorées par son FDISK. Le système lui-même se satisfait de n'importe quel alignement mais interprète les adresses de début relatives, comme si elles étaient relatives à une adresse alignée. L'adresse de départ d'une partition logique est donnée relativement, non pas à l'adresses de la partition étendue qui la décrit, mais au début du cylindre qui contient ce secteur (il n'est donc pas étonnant que, même PartitionMagic, nécessite un alignement).

Quelle est la définition de l'alignement ? FDISK de MSDOS 6.22 se comportera comme suit : 1. Si le premier secteur d'un cylindre est un secteur de table de partition, alors le reste de la piste sera inutilisé et la partition commencera à la prochaine piste. Ceci s'applique au secteur 0 (le MBR) et aux secteurs de table de partition précédant les partitions logiques. 2. Sinon la partition commence sur le premier secteur du cylindre. De plus, les partitions étendues commencent sur une frontière de cylindre. La page de manuel de cfdisk explique que les vieilles versions de DOS n'alignaient pas les partitions.

L'utilisation de partitions de type 85 pour les partitions étendues les rend invisible à DOS, ce qui assure que seul Linux pourra regarder ce qui s'y trouve.

Une petite aparté : sur une Sparc, la partition d'amorçage doit commencer sur une frontière de cylindre (mais rien n'est requis pour la fin).


Page suivantePage précédenteTable des matières