next up previous contents index
Next: Des systèmes de fichiers Up: Systèmes de fichiers Previous: Systèmes de fichiers   Table des matières   Index

Qu'est-ce qu'un système de fichiers ?

Un système de fichiers regroupe les méthodes et les structures de données qu'un système d'exploitation utilise pour gérer les fichiers sur un disque ou une partition. C'est donc la façon dont sont organisés les fichiers sur le disque. Le mot est aussi utilisé pour désigner la partition ou le disque utilisés pour stocker les fichiers, ou le type du système de fichiers. Ainsi, on peut dire << j'ai deux systèmes de fichiers >> pour signifier que l'on a deux partitions sur lesquelles on stocke les fichiers, ou dire que l'on utilise le << système de fichiers étendu >> pour signifier le type du système de fichiers.

La différence entre un disque ou une partition et le système de fichiers qu'il (qu'elle) contient est importante. Quelques programmes (notamment ceux, et c'est normal, qui créent les systèmes de fichiers) opèrent directement sur les secteurs bruts d'un disque ou d'une partition : s'il y avait déjà un système de fichiers, il serait alors détruit ou sérieusement abîmé. La plupart des programmes travaillent avec un système de fichiers et ne fonctionneront donc pas sur une partition qui n'en n'a pas (ou qui en a un du mauvais type).

Avant qu'une partition ou un disque ne soit utilisé(e) comme système de fichiers, elle (il) a besoin d'être initialisé(e) et les structures de données nécessaires doivent être écrites sur le disque. Ce processus s'appelle la création d'un système de fichiers.

La plupart des systèmes de fichiers UNIX ont des structures générales similaires, bien que les détails exacts varient quand même un peu. Les concepts centraux sont ceux de super-bloc, inode, bloc de données, bloc de répertoire, et bloc d'indirection. Le super-bloc contient les informations sur l'ensemble du système de fichiers, comme sa taille (cette information dépend du système de fichiers). Un inode contient toutes les informations concernant un fichier, sauf son nom. Le nom est stocké dans le répertoire avec le numéro d'inode. Une entrée de répertoire est composée d'un nom de fichier et du numéro d'inode qui représente le fichier. L'inode contient les numéros de plusieurs blocs de données, ceux qui sont utilisés pour stocker les données du fichier. Il y a seulement la place pour quelques numéros de blocs de données dans l'inode, cependant, s'il en faut plus, de l'espace supplémentaire pour des pointeurs vers les blocs de données est alloué dynamiquement. Ces blocs de données alloués dynamiquement sont des blocs indirects ; ce nom implique que, pour trouver le bloc de données, on doit d'abord trouver son numéro dans le bloc d'indirection.

Les systèmes de fichiers UNIX permettent généralement de créer un trou dans un fichier (ce qui est fait avec lseek ; voir la page du manuel), ce qui signifie que le système de fichier prétend seulement, qu'à un certain endroit du fichier, il y a 0 octets mais qu'aucun secteur du disque n'est réservé pour cet endroit du fichier (cela veut dire que le fichier utilisera moins d'espace disque). Ceci arrive en particulier pour les petits binaires, les bibliothèques partagées Linux, quelques bases de données, et quelques autres cas spéciaux. (Les trous sont implantés en stockant une valeur spéciale pour l'adresse du bloc de données dans le bloc indirect ou dans l'inode. Cette adresse spéciale signifie qu'aucun bloc de données n'est alloué pour cette partie du fichier, c'est donc un trou dans le fichier).

Les trous sont modérément utiles. Sur le système de l'auteur, une simple mesure montre un potentiel de 4 Mo économisés grâce aux trous, sur à peu près 200 Mo d'espace disque utilisé. Ce système, cependant, contient relativement peu de programmes et aucun fichier de base de données. L'outil de mesure est décrit dans l'annexe A.


next up previous contents index
Next: Des systèmes de fichiers Up: Systèmes de fichiers Previous: Systèmes de fichiers   Table des matières   Index
root
1999-03-03