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

2. Qu'est-ce qu'une partition ?

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 ?

2.1 Les sauvegardes sont importantes

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.

2.2 Noms et numéros des périphériques

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).


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