Les disques durs peuvent être divisés en un ou plusieurs disques
logiques appelés
partitions.
Cette division est décrite dans la
table des partitions
trouvée sur le secteur 0 du disque.
Dans le monde BSD, on parle de « tranches de disque » (disk slices) et
d'« étiquette de disque » (disklabels).
Linux a besoin d'au moins une partition, à savoir pour son système de
fichiers racine.
Il peut utiliser des fichiers et/ou des partitions d'échange (swap)
d'échange, mais ces dernières sont plus efficaces. C'est pourquoi on
dédie en général une seconde partition Linux comme partition d'échange.
Sur le matériel compatible Intel, le BIOS qui démarre le système ne
peut souvent accéder qu'aux 1024 premiers cylindres du disque. Pour
cette raison, les personnes possédant des disques volumineux créent
souvent une troisième partition, d'à peine quelques Mo de large, montée
typiquement en
/boot,
pour y conserver l'image du noyau et quelques fichiers auxiliaires
nécessaires au démarrage, afin de s'assurer que ce matériel soit
accessible depuis le BIOS. Il peut y avoir des raisons de sécurité, de
facilité d'administration et de sauvegarde, ou de tests qui nécessitent
d'utiliser plus que le nombre minimal de partitions.
fdisk
(dans la première forme d'invocation) est un programme piloté par menu
utilisé pour la création et la manipulation de tables de
partitions. Il comprend les tables de partitions de type DOS, et les
étiquettes de disque BSD ou SUN.
Le
périphérique
est en général l'un des suivants :
- /dev/hda
/dev/hdb
/dev/sda
/dev/sdb
(/dev/hd[a-h] pour les disques IDE, /dev/sd[a-p] pour les disques
SCSI, /dev/ed[a-d] pour les disques ESDI, /dev/xd[ab] pour les disques
XT). Un nom de périphérique référence le disque entier.
La
partition
est un nom de
périphérique
suivi d'un numéro de partition. Par exemple,
/dev/hda1
est la première partition du premier disque dur IDE du système. Les
disques peuvent contenir jusqu'à 15 partitions. Voyez également
/usr/src/linux/Documentation/devices.txt.
Une étiquette de disque de type BSD/SUN peut décrire 8 partitions, dont la
troisième devrait être une partition de « disque entier ». Ne faites pas
démarrer de partition utilisant réellement son premier secteur sur le
cylindre 0 (comme une partition d'échange), car cela détruirait l'étiquette
du disque.
Une étiquette de disque de type IRIX/SGI peut décrire 16 partitions, dont
la onzième devrait être une partition entière de « volume », alors que la
neuvième devrait être un « en-tête de volume ». L'en-tête de volume
couvre également la table des partitions, c.-à-d. qu'il débute au bloc zéro
et s'étend par défaut sur 5 cylindres. L'espace restant dans l'en-tête de
volume peut être utilisé par des entrées de répertoires d'en-tête. Aucune
partition ne peut empiéter sur l'en-tête de volume. Ne modifiez pas son
type ni ne créez de système de fichiers dessus, car vous perdriez alors la
table des partitions. N'utilisez ce type d'étiquette que lorsque vous
travaillez sur des machines IRIX/SGI ou avec des disques IRIX/SGI sous
Linux.
Une table de partitions de type DOS peut décrire un nombre illimité de
partitions. Dans le secteur 0, il y a de la place pour décrire 4
partitions (appelées « primaires »). L'une d'entre elles peut être
une partition étendue ; c'est une sorte de boîte contenant des
partitions logiques, dont les descripteurs sont trouvés dans une liste
chaînée de secteurs, chacun précédant les partitions logiques
correspondantes. Les quatre partitions primaires, présentes ou pas,
portent les numéros 1-4. Les partitions logiques sont numérotées à
partir de 5.
Dans une table de partitions de type DOS, le décalage de départ et la
taille de chaque partition sont conservés de deux façons : comme un
nombre absolu de secteurs (sur 32 bits), ou comme un triplet
Cylindres/Têtes/Secteurs (sur 10+8+6 bits). La première manière
fonctionne bien - avec des secteurs de 512 octets, cela marchera
jusqu'à 2 To. La seconde possibilité souffre de deux problèmes
différents. Primo, ces champs C/T/S ne peuvent être remplis que
lorsque le nombre de têtes et le nombre de secteurs par piste sont
connus. Secundo, même si l'on connaissait ces nombres, les 24 bits qui
sont disponibles ne suffiraient pas. DOS utilise uniquement C/T/S,
Windows utilise les deux, Linux n'utilise jamais C/T/S.
Si c'est possible,
fdisk
déterminera automatiquement la géométrie du disque. Ce n'est pas
nécessairement la géométrie physique du disque (en effet, les disques
modernes ne possèdent pas à proprement parler quoi que ce soit pouvant
être assimilé à une géométrie physique, et encore moins quelque chose
pouvant être décrit par la forme simpliste Cylindres/Têtes/Secteurs),
mais c'est la géométrie de disque qu'utilise MS-DOS pour la table des
partitions.
D'habitude, tout se passe bien par défaut, et il n'y a aucun problème
si Linux est le seul système sur le disque. Néanmoins, si le disque
doit être partagé avec d'autres systèmes d'exploitation, c'est en
général une bonne idée de laisser créer au moins une partition par un
fdisk d'un autre système d'exploitation. Quand Linux démarre, il
examine la table des partitions, et essaie de déduire quelle (fausse)
géométrie est requise pour une bonne coopération avec les autres systèmes.
Chaque fois qu'une table des partitions est écrite, un test de
cohérence est effectué sur les entrées de la table des partitions. Ce
test vérifie que les débuts et fins physiques et logiques sont
identiques, et que la partition commence et se termine sur une limite
de cylindre (sauf pour la première partition).
Certaines versions de MS-DOS créent une première partition qui ne
commence pas sur une limite de cylindre, mais sur le secteur 2 du
premier cylindre. Les partitions commençant au cylindre 1 ne peuvent
débuter sur une limite de cylindre, mais il est peu probable que cela
pose problème à moins que vous n'ayez également OS/2 sur votre
machine.
Un sync() et un ioctl() BLKRRPART (relire la table des partitions à
partir du disque) sont exécutés avant la sortie quand la table des
partitions a été mise à jour. Il y a longtemps, il était nécessaire de
redémarrer après l'utilisation de fdisk. Je ne crois pas que cela soit
encore le cas - en effet, redémarrer trop rapidement pourrait causer la
perte de données non encore écrites sur disque. Notez que le noyau et le
matériel disque peuvent tous deux placer des données en mémoire tampon.
Il existe plusieurs programmes *fdisk. Chacun a ses points forts et
ses points faibles. Essayez-les dans l'ordre
cfdisk,
fdisk et
sfdisk.
(En effet,
cfdisk
est un beau programme qui a des exigences strictes sur les tables de
partitions qu'il accepte, et qui produit des tables de partitions de
haute qualité. Utilisez-le si vous le pouvez.
fdisk
est un programme bogué qui fait des choses assez floues - d'habitude,
il arrive à produire des résultats raisonnables. Son seul avantage est
qu'il supporte les étiquettes de disque BSD, et d'autres tables de
partitions non DOS. Évitez-le si vous le pouvez.
sfdisk
est destiné uniquement aux hackers - l'interface utilisateur est
quelque peu rebutante, mais il travaille mieux que fdisk et est plus
puissant que fdisk et cfdisk. De plus, il peut être utilisé de façon
non interactive.)
L'étiquette de disque de type IRIX/SGI n'est pas supportée actuellement
par le noyau. De plus, les répertoires d'en-tête IRIX/SGI ne sont pas
encore entièrement supportés.
Il manque l'option « écrire la table des partitions dans un fichier ».