13.2. Systèmes de fichiers volumineux dans Linux

À la différence d'il y a deux ou trois ans, le choix d'un système de fichiers pour un système Linux ne se fait plus en quelques secondes (Ext2 ou ReiserFS?). Les kernels à partir de la version 2.4 offrent une grande variété de systèmes de fichiers. Vous trouverez ci-dessous une présentation du fonctionnement de ces systèmes de fichiers et de leurs avantages.

Gardez à l'esprit qu'aucun système de fichiers ne correspond le mieux à tous les types d'applications. Chaque système de fichiers comporte ses forces et ses faiblesses dont vous devez tenir compte. Même le système de fichiers le plus sophistiqué ne peut pas remplacer une stratégie raisonnable de sauvegarde.

Les termes Intégrité des données et Cohérence des données, lorsqu'ils sont utilisés dans ce chapitre, ne réfèrent pas à la cohérence des données de l'espace utilisateur (données que votre application écrit dans ses fichiers). La cohérence de ces données doit être contrôlée par l'application elle-même.

[Important]configuration des systèmes de fichiers

Sauf indication contraire mentionnée dans ce chapitre, toutes les étapes requises pour configurer ou modifier des partitions et des systèmes de fichiers peuvent être exécutées avec YaST.

13.2.1. ReiserFS

Officiellement, l'une des fonctionnalités clés de la version 2.4 du kernel, ReiserFS est disponible en tant que correctif de kernel pour les kernels 2.2.x SUSE depuis la version 6.4 de SUSE Linux. ReiserFS a été conçu par Hans Reiser et l'équipe de développement Namesys. Il s'avère être une bonne alternative à Ext2. Il est doté d'une meilleure utilisation de l'espace disque, de meilleures performances d'accès au disque et d'une reprise plus rapide en cas de panne.

Voici les forces de ReiserFS en détails :

Meilleure utilisation de l'espace disque

Dans ReiserFS, toutes les données sont organisées dans une structure appelée arborescence équilibrée B*. L'arborescence contribue à une meilleure utilisation de l'espace disque, car il est possible de stocker des petits fichiers directement dans les noeuds feuille de l'arborescence B* au lieu de les stocker à l'importe quel emplacement et maintenir un pointeur vers l'emplacement actuel du disque. En outre, il n'est pas possible d'effectuer un stockage par blocs de 1 ou 4 ko, mais par portions de la taille exacte nécessaire. Un autre avantage est l'allocation dynamique des inodes. Cela permet de rendre le système de fichiers plus flexible que les systèmes de fichiers traditionnels, comme Ext2, où la densité de l'inode doit être spécifiée lors de la création du système de fichiers.

Meilleure performance de l'accès au disque

Pour les petits fichiers, les données de fichier et les informations « stat_data »     (inode) sont souvent enregistrées les unes à côté des autres. Elles peuvent être lues par une seule opération E/S du disque. Ainsi, un accès unique au disque permet de récupérer toutes les informations requises.

Reprise plus rapide en cas de panne

L'utilisation d'un journal pour suivre les dernières modifications des métadonnées entraîne une vérification du système de fichiers pendant quelques secondes, même pour les systèmes de fichiers volumineux.

Fiabilité via la journalisation des données

ReiserFS prend également en charge la journalisation des données et les modes de classement des données similaires aux concepts mentionnés dans la section Ext3, Section 13.2.3, « Ext3 ». Le mode par défaut est data=ordered, ce qui garantit l'intégrité des données et des métadonnées, mais utilise la journalisation uniquement pour les métadonnées.

13.2.2. Ext2

Les origines de Ext2 remontent aux premiers jours de l'histoire de Linux. Son prédécesseur, le système de fichiers étendu, a été implémenté en avril 1992 et intégré dans Linux 0.96c. Le système de fichiers étendu a connu un certain nombre de modifications. En tant que Ext2, il est devenu le système de fichiers Linux le plus répandu pendant des années. Avec l'arrivée de la journalisation des systèmes de fichiers et de leur temps de récupération incroyablement court, Ext2 est devenu moins important.

Grâce à un petit résumé des forces de Ext2, vous comprendrez mieux pourquoi il était, et pourquoi il reste dans certains domaines, le système de fichiers Linux préféré de nombreux utilisateurs Linux.

Solidité

Considéré comme plutôt « ancien », Ext2 a subi de nombreuses améliorations et a subi de nombreux tests. Il affiche peut-être cette réputation de solidité pour cette raison. Après une panne système lorsque le système de fichiers n'a pas été démonté, e2fsck commence à analyser les données du système de fichiers. Les métadonnées sont transférées dans un état cohérent et les fichiers en attente ou les blocs de données sont conservés dans un répertoire désigné (appelé lost+found). Contrairement à la journalisation des systèmes de fichiers, e2fsck analyse l'intégralité du système de fichiers et pas seulement les derniers bits modifiés des métadonnées. Cette opération prend considérablement plus de temps que de vérifier les données du journal d'un système de fichiers de journalisation. Selon la taille du système de fichiers, cette procédure peut prendre une demie-heure ou plus. Par conséquent, il n'est pas recommandé de choisir Ext2 pour un serveur qui nécessite une grande disponibilité. Cependant, étant donné que Ext2 ne conserve pas de journal et qu'il utilise considérablement moins de mémoire, il est parfois plus rapide que d'autres systèmes de fichiers.

Évolutivité facile

Grâce à la solidité des bases du code Ext2, Ext3 peut devenir un système de fichiers nouvelle génération. Sa fiabilité et sa solidité s'associent élégamment aux avantages d'un système de fichiers de journalisation.

13.2.3. Ext3

Ext3 a été conçu par Stephen Tweedie. Contrairement à tous les autres systèmes de fichiers nouvelle génération, Ext3 ne suit pas un principe de conception tout à fait nouveau. Il est basé sur Ext2. Ces deux systèmes de fichiers sont étroitement liés. Un système de fichiers Ext3 peut être facilement conçu à partir d'un système de fichiers Ext2. La plus grande différence entre Ext2 et Ext3 est que Ext3 prend en charge la journalisation. Pour résumer, Ext3 bénéficie de trois grands avantages :

Haute fiabilité et facilité de mises à niveau à partir de Ext2

Étant donné que Ext3 est basé sur le code Ext2 et qu'il partage son format sur disque, ainsi que son format de métadonnées, les mises à niveau de Ext2 vers Ext3 sont d'une incroyable facilité. Contrairement aux transitions vers d'autres systèmes de fichiers de journalisation, tels que ReiserFS ou XFS, qui peuvent s'avérer fastidieuses (en créant des sauvegardes de l'intégralité du système de fichiers et en le recréant de bout en bout), une transition vers Ext3 ne prend que quelques minutes. Cette opération est également très sûre, car recréer l'intégralité d'un système de fichiers de bout en bout n'est pas sans risques. Compte tenu du nombre de systèmes Ext2 existants dans l'attente d'une mise à niveau vers un système de fichiers de journalisation, vous pouvez facilement imaginer pourquoi Ext3 a son importance aux yeux de nombreux administrateurs système. Une mise à niveau inférieure de Ext3 vers Ext2 est aussi facile qu'une mise à niveau. Il suffit de démonter correctement le système de fichiers Ext3 et de le remonter sous forme de système de fichiers Ext2.

Fiabilité et performances

D'autres systèmes de fichiers de journalisation suivent l'approche de journalisation de « métadonnées uniquement ». Cela signifie que vos métadonnées sont conservées dans un état cohérent, mais que cette conservation n'est pas garantie pour les données du système de fichiers. Ext3 est conçu pour gérer les métadonnées et les données. Il est possible de personnaliser ce niveau de « gestion ». L'activation de Ext3 en mode data=journal garantit une sécurité maximale (intégrité des données), mais peut ralentir le système en raison de la journalisation à la fois des métadonnées et des données. Une approche relativement récente consiste à utiliser le mode data=ordered qui garantit l'intégrité des données et des métadonnées mais qui utilise uniquement la journalisation des métadonnées. Le pilote du système de fichiers recueille tous les blocs de données qui correspondent à une mise à jour des métadonnées. Ces blocs de données sont écrits sur le disque avant la mise à jour des métadonnées. Ainsi, on obtient la cohérence des métadonnées et des données tout en maintenant les performances. Vous pouvez également utiliser le mode data=writeback qui permet l'écriture des données dans le système de fichiers principal après la journalisation de ses métadonnées. Cette option est généralement considérée comme la plus performante. Il est cependant possible que des anciennes données réapparaissent dans les fichiers après une panne et une récupération alors que l'intégrité du système de fichiers interne est conservée. Sauf indication contraire de votre part, Ext3 s'exécute en mode data=ordered par défaut.

13.2.4. Conversion d'un système de fichiers Ext2 en Ext3

Pour convertir un système de fichiers Ext2 en Ext3, procédez de la manière suivante :

  1. Créez un journal Ext3 en exécutant tune2fs -j en tant qu'utilisateur root. Un journal Ext3 est créé avec les paramètres par défaut.

    Pour choisir la voluminosité du journal et le périphérique sur lequel il doit résider, exécutez à la place tune2fs -J avec les options souhaitées du journal size= et device=. Vous trouverez davantage d'informations sur le programme tune2fs dans la page de manuel tune2fs.

  2. Pour garantir que le système de fichiers Ext3 est reconnu en tant que tel, modifiez le fichier /etc/fstab en tant qu'utilisateur root, en modifiant le type de système de fichiers spécifié pour la partition correspondante de ext2 à ext3. La modification est prise en compte après le redémarrage.

  3. Pour redémarrer un système de fichiers racine configuré comme partition Ext3, ajoutez les modules ext3 et jbd dans le fichier initrd. Pour ce faire, modifiez /etc/sysconfig/kernel en tant qu'utilisateur root en ajoutant ext3 et jbd à la variable INITRD_MODULES. Une fois les modifications enregistrées, exécutez la commande mkinitrd. Un nouveau fichier initrd est créé et prêt pour utilisation.

13.2.5. Reiser4

Juste après la sortie de la version 2.6 du kernel, un autre membre s'est joint à la famille des systèmes de fichiers de journalisation : Reiser4. Reiser4 est fondamentalement différent de son prédécesseur ReiserFS (version 3.6). Il introduit le concept des plug-ins permettant d'optimiser les fonctions du système de fichiers, ainsi qu'un concept de sécurité plus précis.

Concept de sécurité plus précis

Lors de la conception de Reiser4, les développeurs ont mis l'accent sur l'implémentation de fonctions relatives à la sécurité. Par conséquent, Reiser4 est doté de plug-ins de sécurité dédiés. Parmi les fonctions les plus pertinentes, on retrouve le concept d'« éléments » de fichier. Actuellement, les contrôles d'accès au fichier sont définis par fichier. Dans le cas d'un fichier volumineux contenant des informations liées à plusieurs utilisateurs, groupes ou applications, les droits d'accès doivent être relativement imprécis pour inclure toutes les parties impliquées. Dans Reiser4, vous pouvez fractionner ces fichiers en petites portions (appelées « éléments »). Vous pouvez définir des droits d'accès pour chaque élément et chaque utilisateur séparément, ce qui permet d'obtenir une gestion plus précise de la sécurité des fichiers. Le fichier /etc/passwd illustre parfaitement cet exemple. Actuellement, seul l'utilisateur root peut lire et modifier le fichier. En revanche, les utilisateurs non-root bénéficient uniquement d'un accès en lecture. À l'aide du concept d'élément de Reiser4, vous pouvez fractionner ce fichier en plusieurs éléments (un élément par utilisateur) et permettre aux utilisateurs ou applications de modifier leurs propres données sans pour autant accéder aux données des autres utilisateurs. Ce concept apporte sécurité et flexibilité.

Extensibilité via les plug-ins

De nombreuses fonctions du système de fichiers et de fonctions externes généralement utilisées par un système de fichiers sont implémentées sous la forme de plug-ins dans Reiser4. Vous pouvez aisément ajouter ces plug-ins au système de base. Vous n'avez plus besoin de recompiler le kernel ou de reformater le disque dur pour ajouter de nouvelles fonctionnalités à votre système de fichiers.

Meilleure disposition du système de fichiers via l'allocation retardée

Tout comme XFS, Reiser4 prend en charge l'allocation retardée. Reportez-vous à la Section 13.2.6, « XFS ». Grâce à l'allocation retardée, même la disposition générale des métadonnées peut être améliorée.

13.2.6. XFS

Conçu à l'origine comme le système de fichiers pour leur système d'exploitation IRIX, SGI a commencé le développement XFS au début des années 90. Au départ, l'idée était de créer un système de fichiers de journalisation 64 bits très performant pour répondre aux exigences actuelles en termes de technologie de l'information. XFS est optimal pour la manipulation des fichiers volumineux et convient au matériel haut de gamme. Toutefois, même XFS présente un inconvénient. Comme ReiserFS, XFS gère avec le plus grand soin l'intégrité des métadonnées, mais un peu moins l'intégrité des données.

Une brève présentation des fonctions clés de XFS permet de comprendre pourquoi il peut s'avérer être un concurrent de taille pour les autres systèmes de fichiers de journalisation dans les technologies de l'information avancées.

Haute extensibilité via l'utilisation des groupes d'allocation

Lors de la création d'un système de fichiers XFS, le périphérique de bloc situé sous le système de fichiers est divisé en au moins huit zones de taille égale. Ces zones sont appelées groupes d'allocation. Chaque groupe d'allocation gère ses propres inodes et son espace disque. En fait, les groupes d'allocation peuvent être perçus comme des systèmes de fichiers dans un système de fichiers. Du fait que les groupes d'allocation sont relativement indépendants les uns des autres, plusieurs d'entre eux peuvent être traités simultanément par le kernel. Cette fonction constitue la clé de la grande extensibilité de XFS. Tout naturellement, le concept de groupes d'allocation indépendants répond aux exigences des systèmes multiprocesseurs.

Haute performance grâce à une gestion efficace de l'espace disque

L'espace disque est les inodes sont gérés par les arborescences B+ au sein des groupes d'allocation. L'utilisation d'arborescences B+ contribue considérablement aux performances et à l'extensibilité de XFS. XFS utilise l'allocation retardée. Il gère l'allocation en divisant le processus en deux. Une transaction en attente est enregistrée dans la mémoire vive et la quantité d'espace appropriée est conservée. À ce moment, XFS ne choisit pas encore exactement l'emplacement de stockage des données (en termes de blocs de systèmes de fichiers). Cette décision est retardée jusqu'au dernier moment. Certaines données temporaires de courte durée peuvent ne jamais accéder au disque, car elles deviennent obsolètes au moment où XFS décide de leur lieu d'enregistrement. Ainsi, XFS augmente les performances en écriture et réduit la fragmentation du système de fichiers. Étant donné que l'allocation retardée génère moins d'événements écrits que dans d'autres systèmes de fichiers, la perte de données après une panne lors d'une écriture risque d'être plus grave.

Préallocation pour éviter la fragmentation du système de fichiers

Avant d'écrire les données dans le système de fichiers, XFS réserve (préalloue) l'espace disponible requis pour un fichier. La fragmentation du système de fichiers s'en trouve considérablement réduite. Les performances augmentent car le contenu d'un fichier n'est pas distribué sur tout le système de fichiers.