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

7. Le système de fichiers (filesystem)

Dans cette section, j'emploierai l'expression ``système de fichiers'' pour deux notions différentes. Il y a les systèmes de fichiers installés sur des partitions de disque ou d'autres périphériques, et il y a le système de fichier (NdRel : la hiérarchie) tel qu'il vous est présenté par un système Linux en état de marche. Sous Linux, vous "montez" le système de fichiers d'un disque sur le système de fichiers du système.

Dans la section précédente, j'ai mentionné le fait que des scripts d'initialisation vérifiaient et montaient les systèmes de fichiers. Les commandes qui effectuent ces opérations sont respectivement fsck et mount.

Un disque dur n'est qu'un grand espace dans lequel vous pouvez écrire des zéros et des uns. Un système de fichiers impose une structure à tout cela, et le présente sous la forme de fichiers, à l'intérieur de sous-répertoires, à l'intérieur de répertoires... Chaque fichier est répresenté par un inode, indiquant le fichier dont il s'agit, la date de sa création, et où trouver son contenu. Les répertoires sont aussi représentés par des inodes, mais ceux-ci indiquent où trouver les inodes des fichiers que les repértoires contiennent. Si le système veut lire /home/greg/bigboobs.jpeg, il commence par lire l'inode du répertoire racine / dans le ``superblock'', puis trouve l'inode du répertoire home dans le contenu de /, puis trouve l'inode du répertoire greg dans le contenu de home, et enfin l'inode de bigboobs.jpeg qui lui dira quel bloc du disque il faut lire.

Si nous ajoutons des données à la fin d'un fichier, il peut arriver que les données soient écrites avant que l'inode ne soit mis à jour (indiquant que le nouveau bloc appartient désormais au fichier), ou vice-versa. Si le courant est coupé à cet instant précis, le système de fichiers sera "cassé". C'est ce genre de chose que fsck essaie de détecter et de réparer.

La commande mount prend le système de fichiers d'un périphérique, et l'ajoute à la hiérarchie de fichiers de votre système. En général le noyau monte son système de fichiers racine en lecture seule (read-only). La commande mount est ensuite utilisée pour le remonter en lecture-écriture (read-write) après que fsck ait vérifié que tout soit en ordre.

Linux prend aussi en charge d'autres types de systèmes de fichiers : msdos, vfat, minix, etc. Les détails d'un système de fichiers spécifique sont masqués par le Système de Fichier Virtuel (Virtual File System ou VFS) qui est une couche d'abstraction. Je ne rentrerai pas dans ces détails. Il existe une discussion sur ce sujet dans ``Le Kernel Linux'' (voir la section Le Noyau Linux pour l'URL)

7.1 Configuration

Il existe des paramètres à la commande mke2fs, chargée de la création d'un système de fichiers de type ext2. Ils contrôlent la taille des blocs, le nombre d'inodes, etc. Voir la man page de mke2fs pour plus de détails.

Ce qui doit être monté sur votre système de fichiers est contrôlé par le fichier /etc/fstab, qui a lui aussi sa page de manuel.

7.2 Exercices

Fabriquez un tout petit système de fichiers, et visualisez-le avec un éditeur hexadécimal. Identifiez les inodes, les superblocs, et le contenu des fichiers.

Je crois qu'il existe des outils qui vous donnent une vue graphique d'un système de fichiers. Trouvez-en un, essayez-le, et envoyez moi l'url par email avec vos appréciations !

Explorez le code du système de fichiers ext2 dans le noyau.

7.3 Plus d'informations


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