Lorsque les disques durs pour PC ont été mis au point, on a rapidement cherché à avoir la possibilité d'installer plusieurs systèmes d'exploitation, même si on ne disposait que d'un seul disque. Par conséquent, il fallait un procédé permettant de diviser un seul disque physique en plusieurs disques logiques. Une partition, c'est justement cela : une section contiguë de blocs sur le disque dur, considérée comme un disque totalement indépendant par la plupart des systèmes d'exploitation.
Il est bien évident que les différentes partitions ne doivent pas se recouvrir : un système d'exploitation n'appréciera certainement pas qu'un autre OS installé sur la même machine écrase des données importantes à cause d'un tel recouvrement. D'autre part, il ne devrait pas non plus y avoir de "trou" entre deux partitions adjacentes. Bien que ce ne soit pas nuisible en soi, vous gâcheriez une place précieuse en laissant vides de tels espaces.
Il n'est pas indispensable que le disque soit entièrement partitionné. Vous pouvez décider de laisser de la place à la fin du disque qui ne soit attribuée à aucun de vos systèmes d'exploitation. Par la suite, lorsque vous saurez quel système vous utilisez le plus souvent, vous pourrez partitionner l'espace restant, et créer dessus un système de fichier approprié.
Les partitions ne peuvent être ni déplacées, ni redimensionnées sans détruire le
système de fichiers qui s'y trouve. C'est pourquoi modifier la table de partition
implique généralement de sauvegarder puis de restaurer tous les systèmes de
fichiers touchés par cette opération. En fait il est assez facile de faire des
dégâts irréparables en repartitionnant, et vous devriez faire une sauvegarde
intégrale de tous les disques de la machine en question avant même de penser à
utiliser un utilitaire comme fdisk
.
Bon, à vrai dire, certaines partitions contenant certains types de système de
fichiers peuvent être coupées en deux sans perte de données (si vous avez
de la chance). Par exemple, il y a un utilitaire appelé fips
pour couper en
deux les partitions MS-DOS, ce qui permet de créer un espace pour installer
Linux sans avoir à réinstaller MS-DOS. Mais vous n'avez pas vraiment l'intention
de jouer avec ça sans sauvegarder soigneusement tout ce qui ce trouve sur votre
machine ?
Pour les sauvegardes, les lecteurs de bandes sont vos amis. Ils sont rapides fiables et faciles à utiliser, ce qui permet de faire de fréquentes sauvegardes, de préférence automatiquement, et sans s'embêter.
Je tiens particulièrement à insister sur les points suivants : je parle de vrais lecteurs de bandes, pas de cette daube de ftape pilotée par le contrôleur du disque. Envisagez d'investir dans le SCSI : Linux supporte le SCSI de façon native. Vous n'aurez pas besoin de télécharger des pilotes ASPI. Vous ne perdrez pas non plus de précieuses HMA sous Linux dès que vous aurez installé votre contrôleur SCSI, vous n'aurez plus qu'à y ajouter vos disques durs, lecteur de bandes et lecteurs CDROM. Pas d'autres adresses I/O, plus besoin de jongler avec les IRQ, ni de s'inquiéter des compatibilités maître/esclave ou des niveaux PIO. En outre, un contrôleur SCSI approprié vous donne de hautes performances I/O sans augmenter notablement la charge du CPU. Même en cas de grande activité du disque, vous pourrez constater de bons temps de réponse. Si vous envisagez d'utiliser un système Linux comme un centre de distribution de news, ou si vous vous apprêtez à vous lancer dans le domaine des services d'accès à Internet, ne pensez même pas à un système sans SCSI.
Le nombre de partitions sur un système à base d'Intel à été limité depuis le commencement : la table de partitions originale faisait partie intégrante du secteur d'amorçage, et la place prévue nous limitait à quatre partitions. Ces partitions sont maintenant appelées partitions primaires. Lorsqu'il est devenu évident que beaucoup avaient besoin de plus de quatre partitions sur leurs systèmes, les partitions logiques ont été créées. Le nombre de partitions logiques n'est pas limité : chaque partition logique contient un pointeur sur la suivante, et par conséquent, vous disposez potentiellement d'une liste non limitée de partitions.
Pour des raisons de compatibilité, l'espace occupé par les partitions logiques
doit être comptabilisé. Si vous utilisez les partitions logiques, une des
partitions primaires est donc notée "partition étendue" ; son bloc initial et son
bloc final délimitent l'espace occupé par les partitions logiques. Ceci signifie que
l'espace attribué pour toutes les partitions logiques doit être contigu. Il ne
peut y avoir qu'une seule partition étendue : aucun fdisk
n'acceptera de
créer plus d'une partition étendue.
Linux ne peut prendre en charge qu'un nombre limité de partitions par disque. Ainsi avec Linux, vous disposez de 4 partitions primaires (dont 3 utilisables si vous utilisez les partitions logiques) et au mieux 15 partitions en tout sur un disque SCSI (63 en tout sur un disque IDE).
Sous Linux, les partitions sont identifiées par des fichiers périphériques. Un fichier périphérique est un fichier de type c (pour périphérique "caractère", les périphériques qui ne font pas usage de la cache tampon) ou b (pour périphérique "bloc", qui font usage de la cache tampon). Sous Linux, tous les disques sont représentés sous la forme de périphériques blocs uniquement. Contrairement à d'autres Unix, Linux ne propose pas de version strictement caractère des disques et de leurs partitions.
Les seules choses importantes à retenir d'un fichier périphérique sont ses numéros de périphérique, majeur et mineur, affichés à la place de la taille du fichier :
$ ls -l /dev/hda
brw-rw---- 1 root disk 3, 0 Jul 18 1994 /dev/hda
^ ^
| numéro périphérique mineur
numéro périphérique majeur
Lorsqu'on accède au fichier périphérique, le numéro majeur détermine quel pilote
périphérique va être appelé pour réaliser l'opération d'entrée/sortie. Cet appel
est fait en prenant comme paramètre le numéro mineur, et c'est l'affaire du
pilote d'interpréter correctement ce numéro mineur. La documentation du pilote
décrit généralement la manière dont il interprète ces numéros mineurs. Pour les
disques IDE, cette documentation se trouve dans
/usr/src/linux/Documentation/ide.txt
. Pour les disques SCSI, on
s'attendrait à trouver la documentation dans
/usr/src/linux/Documentation/scsi.txt
, mais elle ne s'y trouve pas. Il
peut être nécessaire de consulter la source du pilote pour être sûr
(/usr/src/linux/driver/scsi/sd.c:184-196
). Heureusement, il y a la liste
des noms et numéros de périphériques de Peter Anvin dans
/usr/src/linux/Documentation/devices.txt
; reportez vous dans cette liste
à block devices
, major 3
, 22
, 33
, 34
pour les disques
IDE, et major 8
pour les disques SCSI. Les numéros majeurs et mineurs sont
codés chacuns sur un bit, ce qui explique pourquoi le nombre de partition par
disque est limité.
Par convention, les fichiers périphériques ont un nom défini, et la plupart des
utilitaires système sont compilés en ayant connaissance de ces noms. Ils
s'attendent à ce que vos disques IDE s'appellent /dev/hd*
et vos disques
SCSI /dev/sd*
. Les disques sont numérotés a, b, c et ainsi de suite, donc
/dev/hda
est votre premier disque IDE, et /dev/sda
votre premier
disque SCSI. Chaque périphérique représente un disque à part entière démarrant
au bloc un. Écrire sur un de ces périphériques avec les mauvais utilitaires
détruira l'enregistrement principal d'initialisation (MBR) et la table de
partition, ce qui rendra toutes les données de ce disque inutilisables, et le
système ne pourra plus démarrer sur ce disque. Donc soyez sûrs de ce que vous
faites, et encore une fois, sauvegardez avant de faire quoi que ce soit.
Les partitions primaires sur le disques sont numérotées 1, 2, 3 et 4. Par
conséquent, /dev/hda1
est la première partition primaire du premier
disque IDE, et ainsi de suite. Les partitions logiques se voient attribuer les
numéros 5 et suivants; /dev/sdb5
est donc la première partition logique
du second disque SCSI.
Chaque partition se voit attribuer deux adresses pour les blocs initial et final, ainsi qu'un type. Le type est un code numérique (un bit) qui définit une partition pour un système d'exploitation donné. Pour la plus grande joie des experts, il n'existe pas vraiment de code unique définissant les différents types de partition, aussi il y a toujours une possibilité que deux systèmes d'exploitation utilisent le même code pour des partitions de type différent.
Linux réserve les codes 0x82 pour les partitions swap, et 0x83 pour les systèmes de fichier "natif" (c'est à dire ext2 pour la plupart d'entre vous). Autrefois populaire et maintenant périmé, le système de fichiers Linux/Minix utilisait le code 0x81 pour ses partitions. OS/2 marque ses partitions du type 0x07, tout comme les NTFS de Windows NT. MS-DOS attribue plusieurs codes pour les différentes FAT de ses systèmes de fichier : on connaît 0x01, 0x04 et 0x06. DR-DOS utilisait 0x81 pour indiquer une partition FAT protégée, ce qui générait un conflit avec les partitions Linux/Minix, mais ni l'une ni l'autre ne sont très utilisées maintenant. La partition étendue qui sert de container pour les partitions logiques à le code 0x05.
Les partitions sont créées et supprimées avec l'utilitaire fdisk
. Tout
système d'exploitation qui se respecte possède un fdisk
, qui d'ailleurs
est traditionnellement appelé fdisk
(ou FDISK.EXE
) dans quasiment
tous les OS. Certains fdisk
, dont celui du DOS, sont quelque peu limités
pour gérer les partitions d'autres systèmes d'exploitation. Parmi ces limites,
l'impossibilité de prendre en compte tout ce qui est identifié par un code de
type étranger, l'impossibilité de prendre en compte plus de 1024 cylindres, et
l'impossibilité de créer ou même de reconnaître une partition dont la fin ne
coïncide pas avec la borne d'un cylindre. Par exemple, le fdisk
de MS-DOS
ne peut pas supprimer les partitions NTFS, le fdisk
de OS/2 était réputé
pour "corriger" silencieusement les partition crées par le fdisk
de Linux
dont la fin ne coïncidait pas avec une borne de cylindre, et tant le fdisk
de MS-DOS que celui de OS/2 ont eu des problèmes avec les disques de plus de
1024 cylindres (reportez-vous au "large-disk Mini-HOWTO" pour de plus amples
détails sur ces disques).