Page suivante Page précédente Table des matières

13. Partitions étendues et partitions logiques

Ci-dessus, nous avons vu la structure du MBR (secteur 0) : code du programme d'amorçage suivi par 4 entrées de la table des partitions de 16 octets chacunes, suivies par une signature AA55. Les entrées de la table des partitions de type 5 ou F ou 85 (en hexadécimal) ont une signification particulière : elles décrivent les partitions étendues : espaces qui seront ultérieurement fractionnés en partitions logiques. (Donc, une partition étendue n'est qu'une boîte, et ne peut pas être utilisée par elle-même ; on utilise alors les partitions logiques qu'elle contient.) Ce n'est que la position du premier secteur de la partition étendue qui est important. Ce premier secteur contient une table des partitions avec quatre entrées : une est une partition logique, une est une partition étendue et deux sont inutilisées. De cette manière, on obtient une chaîne de secteurs de table des partitions, dispersés sur le disque dur, où le premier décrit trois partitions primaires et la partition étendue, et chaque secteur de table des partitions qui suit décrit une partition logique et la position du prochain secteur de table des partitions.

Il est important de comprendre cela : Quand les gens font des bétises en partitionnant leur disque, ils veulent savoir : `est-ce que mes données sont toujours là ?' Et la réponse est généralement : `oui'. Mais si des partitions logiques ont été créées, alors les secteurs de table des partitions les décrivant sont écrits au début des ces partitions logiques, et les données qui étaient initialement à ces emplacements sont perdues.

Le programme sfdisk montre la chaîne complète. Par exemple,

# sfdisk -l -x /dev/hda

Disk /dev/hda: 16 heads, 63 sectors, 33483 cylinders
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls   #blocks   Id  System
/dev/hda1          0+    101     102-    51376+  83  Linux
/dev/hda2        102    2133    2032   1024128   83  Linux
/dev/hda3       2134   33482   31349  15799896    5  Extended
/dev/hda4          0       -       0         0    0  Empty

/dev/hda5       2134+   6197    4064-  2048224+  83  Linux
    -           6198   10261    4064   2048256    5  Extended
    -           2134    2133       0         0    0  Empty
    -           2134    2133       0         0    0  Empty

/dev/hda6       6198+  10261    4064-  2048224+  83  Linux
    -          10262   16357    6096   3072384    5  Extended
    -           6198    6197       0         0    0  Empty
    -           6198    6197       0         0    0  Empty
...
/dev/hda10     30581+  33482    2902-  1462576+  83  Linux
    -          30581   30580       0         0    0  Empty
    -          30581   30580       0         0    0  Empty
    -          30581   30580       0         0    0  Empty

#

Il est possible de construire une mauvaise table des partitions. Beaucoup de noyaux entrent dans une boucle s'il y a des partitions étendues qui pointent sur elles-mêmes ou sur une partition placée avant dans la chaîne. Il est possible d'avoir deux partitions étendues dans un de ces secteurs de table des partitions, comme ça la chaîne de la table de partitions se divise.(Ceci peut arriver par exemple avec un fdisk qui ne reconnaît pas les partitions typées 5, F ou 85 comme étendues, et qui crée une 5 à la suite d'une F.) Des programmes de type fdisk non standards peuvent provoquer de telles situations, et quelques manipulations sont nécessaires pour les réparer. Le noyau de Linux acceptera une division au niveau le plus extérieur. Ainsi, vous pouvez avoir deux chaînes de partitions logiques. C'est parfois utile - par exemple, on peut utiliser pour l'une le type 5 afin qu'elle soit vue par DOS, et pour l'autre le type 85, invisible pour DOS, comme ça DOS FDISK ne plantera pas à cause d'une partition logique au-delà du cylindre 1024.


Page suivante Page précédente Table des matières