4.5. Création des systèmes de fichiers

Une fois le disque correctement partitionné, il faut créer les systèmes de fichiers. Cette opération n'est pas nécessaire pour les partitions de swap, cependant il faut le faire pour les autres partitions. Attention ! Dans le monde du DOS et de Windows, la création d'un système de fichiers est l'opération de « formatage » d'une partition. Le terme de formatage est très mal employé dans ce sens, car il n'y a strictement rien à voir entre le formatage d'un disque, qui est l'opération consistant à enregistrer des marques sur le support magnétique pour définir les pistes et les secteurs du disque, et la création du système de fichiers d'une partition, qui consiste à enregistrer les structures de données permettant de retrouver les fichiers dans cette partition. Le formatage est normalement effectué par le fabricant du disque, et a lieu avant le partitionnement. En effet, partitionner un disque suppose qu'il existe déjà des pistes et des secteurs sur le disque. C'est pour cette raison que l'on ne parlera ici que de création de systèmes de fichiers.

La création des systèmes de fichiers EXT2 et EXT3 se fait avec la même commande, à savoir la commande mke2fs. La création des autres systèmes de fichiers se fait généralement de la même manière que pour ces systèmes, mais avec des outils différents. Par exemple, la création d'un système de fichiers ReiserFS se fait à l'aide de l'outil mkreiserfs. ReiserFS constitue une alternative possible à EXT3 car, tout comme EXT3, il prend en charge les mécanismes de journalisation qui assurent la cohérence du système de fichiers même en cas d'arrêt intempestif de l'ordinateur. Cependant, ce système de fichiers est encore jeune et n'a certainement pas été débogué autant que EXT3, qui s'appuie sur la base de code du vieux système de fichiers EXT2. Sachez également que ReiserFS, contrairement à EXT2 et à EXT3, ne se comporte pas encore très bien si le disque dur a des secteurs physiques défectueux. La suite de cette section ne traitera que des systèmes de fichiers EXT2 et EXT3, consultez la documentation de votre distribution et les pages de manuel des outils des autres systèmes de fichiers pour plus de détails sur la méthode à utiliser pour les créer.

Afin de pouvoir utiliser mke2fs correctement, il est nécessaire de définir quelques termes, et d'expliquer à quelles notions d'EXT2 et d'EXT3 ils se réfèrent.

Premièrement, le système de fichiers EXT2 travaille, comme la plupart des systèmes de fichiers, avec des blocs de taille fixe (« clusters » en anglais). Cela signifie que l'allocation de l'espace disque se fait par multiples de la taille de ces blocs : il est impossible de demander seulement une partie d'un bloc. Cette technique présente des avantages et des inconvénients. Essentiellement, l'avantage est la rapidité engendrée par la simplification des mécanismes d'allocation et de libération d'espace disque. L'inconvénient majeur est évidemment qu'on perd de la place pour tous les fichiers qui ne tiennent pas dans un nombre entier de blocs, puisqu'il faut allouer un bloc supplémentaire qui sera partiellement utilisé. En moyenne, on perd la moitié d'un bloc par fichier, ce qui ne peut être réduit qu'en limitant la taille des blocs à une valeur relativement faible.

Note : EXT2 et EXT3 gèrent l'allocation et la libération des blocs de manière à toujours trouver le meilleur bloc à allouer pour créer un fichier. Ainsi, il limite la fragmentation des fichiers à son strict minimum, ce qui rend inutiles les programmes de défragmentation de systèmes de fichiers.

Deuxièmement, EXT2 et EXT3 utilisent des structures de données appelées « inodes » pour définir les fichiers. Un inode contient la plupart des informations d'un fichier, à savoir :

Ces inodes sont stockés dans une table du système de fichiers, ce qui permet d'accéder très rapidement à toutes ces informations et de retrouver également très simplement le ou les blocs contenant les données du fichier. Le problème est ici que cette table a un nombre d'entrées limité, ce qui implique un nombre limité de fichiers dans le système de fichiers. Plus cette table est grande, plus le nombre de fichiers que l'on pourra créer sera grand, et inversement. Il faut donc trouver un compromis entre la taille de cette table et le nombre de fichiers que l'on est susceptible de créer. Il va de soi qu'en général, les grandes partitions contiennent plus de fichiers, mais que la table d'inodes peut également avoir une taille supérieure sans que cela soit dérangeant. Par conséquent, il est relativement courant de définir le taux d'inode par bloc ou, autrement dit, la proportion d'inodes dans la partition par rapport à sa taille.

Toutes ces informations (blocs libres et inodes) sont sauvegardées à plusieurs endroits dans la partition, ce qui permet de disposer en permanence de copies de la structure du système de fichiers. De cette manière, il est relativement simple de réparer un système de fichiers endommagé, même si les données sont détruites en raison d'une erreur matérielle (secteurs défectueux sur le disque dur par exemple). Chacune de ces copies s'appelle un groupe de blocs. Chaque groupe de blocs contient un bloc particulier, le « super bloc », qui contient la description de son groupe.

Lors de la création du système de fichiers, il est nécessaire d'indiquer la taille d'un bloc en octets. Cette taille doit impérativement être un multiple de la taille d'un secteur du support physique de données, parce que les blocs ne peuvent contenir qu'un nombre entier de secteurs. Pour un disque dur, la taille des secteurs est fixée à 512 octets, ce qui fait que la taille d'un bloc est au moins de 512 octets. De même, il faut spécifier le nombre d'inodes de la partition. Il est possible de spécifier ce nombre soit directement, ou d'indiquer seulement le nombre d'octets de la partition par inode. Le nombre total d'inodes utilisé sera alors calculé à partir de ce nombre d'octets et de la taille de la partition. Bien entendu, le nombre maximal d'inodes possibles est le nombre total de blocs, puisque tout fichier non vide requiert au moins un bloc et que chaque inode caractérise un fichier. Si vous ne savez pas quelles valeurs prendre, vous pouvez utiliser des blocs de 1024 octets (2 secteurs), et un rapport de 4096 octets par inode (donc de 4 blocs de 1 Ko par inode).

Le système de fichiers EXT3 gère, en plus de tout ce que sait faire le système de fichiers EXT2, un journal contenant les opérations à réaliser de manière transactionnelle sur le disque dur. Ces opérations sont exécutées de telle sorte que la structure du système de fichiers reste cohérente en toutes circonstances. Cela implique que le système de fichiers est toujours valide, même si une panne de courant se produit pendant une opération disque.

La syntaxe de la commande mke2fs est donnée ci-dessous :

mke2fs [-j] fichier
fichier est le nom du fichier spécial de périphérique représentant la partition sur laquelle le système de fichiers doit être créé. Ce nom est le nom du disque dur, suffixé du numéro de la partition. Les numéros de partitions commencent à 0, si bien que la première partition du premier disque dur IDE sera référencée par le chemin /dev/hda0. L'option -j quant à elle est facultative. Lorsqu'elle est utilisée, le système de fichiers créé est un système de fichiers EXT3. Il est recommandé d'utiliser cette option pour tous les systèmes de fichiers dont on voudra garantir la cohérence, par exemple pour les systèmes de fichiers devant contenir des documents ou des informations importantes. Sachez cependant que la journalisation peut dégrader sensiblement les performances de votre ordinateur, aussi pouvez-vous vous en passer sur les partitions pour lesquelles un débit élevé est nécessaire (par exemple pour les partitions devant servir à manipuler des fichiers vidéo).

Note : Le système de fichiers EXT3 utilise les mêmes structures de données que le système de fichiers EXT2. Il est donc parfaitement compatible avec ce dernier, et un système de fichiers EXT3 peut être utilisé comme un système de fichiers EXT2. En réalité, les mécanismes de journalisation peut être activés ou non lors de l'opération de montage du système de fichiers, en fonction du type de système de fichiers indiqué à la commande de montage. Nous détaillerons la manière de monter les systèmes de fichiers dans la Section 5.7.4 et dans la Section 6.4.2.

Pour les mêmes raisons, il est possible de convertir un système de fichiers EXT2 en système de fichiers EXT3 a posteriori, à l'aide de l'option -j de la commande tune2fs. Cette commande permet d'activer et de désactiver des fonctionnalités complémentaires pour ces systèmes de fichiers, dont la journalisation fait partie.

Invoquée sans autres options, la commande mke2fs prend des valeurs par défaut pour tous les paramètres du système de fichiers créé, mais vous pouvez également spécifier d'autres valeurs. La taille des blocs peut être indiquée en octets avec l'option suivante :

mke2fs [-j] -b taille fichier
taille représente la taille d'un bloc en octets. De même, le nombre d'octets par inode peut être précisé avec l'une des options -i :
mke2fs [-j] -i octets fichier
octets est le rapport de la taille de la partition en octets par le nombre d'inodes à créer. Il est possible d'indiquer directement ce nombre avec la commande suivante :
mke2fs [-j] -N nombre fichier

Enfin, sachez que l'option -c permet de demander à mke2fs d'effectuer une vérification des secteurs défectueux du disque dur avant de créer le système de fichiers. Il est fortement recommandé d'utiliser cette option lors de la première création d'un système de fichiers.