28
RODERICK SMITH Accroître les performances d’un système Linux s o l u t i o n s U n i x L i n u x

RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

  • Upload
    lamnhu

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

R O D E R I C K S M I T H

Accroître les performances d’un

système Linux

s o l u t i o n sU n i x • L i n u x

PagesTitre_perfoLinux_XP 19/04/04 11:21 Page 1

Page 2: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

12Systèmes de fichiers et fichiers

Toute opération effectuée sous Linux implique des fichiers, d’une manière ou d’uneautre. Vous lancez des programmes depuis des fichiers, vous consultez les configu-rations de programme dans des fichiers, vous stockez des données dans desfichiers, vous envoyez des fichiers aux clients via des serveurs, etc. C’est pourquoiles outils Linux visant à manipuler les fichiers jouent un rôle fondamental dans lefonctionnement global du système. Ces outils composent un système de fichiers,c’est-à-dire un ensemble de structures de données permettant à Linux de recher-cher et de manipuler des fichiers. Il existe plusieurs systèmes de fichiers natifsLinux, les plus importants étant ext2fs, ext3fs, Reiser FileSystem (ReiserFS), JFSet XFS. Le choix de ce système affecte les performances globales de l’ordinateur etdoit être adapté aux tâches à effectuer.

Dans cette optique, vous ne devez pas seulement être en mesure de choisir le sys-tème de fichiers adéquat, mais également vous familiariser avec différents outilsdestinés à son utilisation optimale. Les options de création des systèmes de fichiers,ainsi que les outils d’optimisation des performances, sont susceptibles d’améliorer ledébit des disques. En outre, grâce aux redimensionneurs de partitions, vous avez lapossibilité d’agrandir ou de réduire une partition en fonction de vos besoins de stoc-kage. Vous devrez parfois remédier aux problèmes de corruption qui touchent cer-tains fichiers, et nous verrons comment procéder dans ces conditions. Enfin, lasuppression accidentelle ou permanente de fichiers est particulièrement courante.Vous apprendrez donc à récupérer ces fichiers supprimer afin d’économiser dutemps et des efforts.

Page 3: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux318

Copyright ©

2004 Groupe E

yrolles

Choisir le système de fichiers appropriéLorsque vous avez installé Linux, le programme d’installation vous a proposé des optionsrelatives aux divers systèmes de fichiers disponibles. La plupart des distributions qui intègrentles noyaux 2.4.x et suivants prennent en charge ext2fs, ext3fs et ReiserFS, JFS et XFS danscertains cas. Si ces deux derniers systèmes ne figurent pas dans votre distribution, vouspouvez ajouter leur prise en charge en téléchargeant les correctifs appropriés du noyau ou bienun noyau précorrigé depuis les sites Internet de JFS (http://oss.software.ibm.com/developerworks/opensource/jfs/) ou de XFS (http://oss.sgi.com/projects/xfs/), puis en compilant cette compatibi-lité en modules ou en dur. Vous pouvez alors convertir la partition d’un système de fichiers enla sauvegardant, en créant le nouveau système de fichiers, puis en restaurant les fichiers.

Il n’est malheureusement pas toujours évident de sélectionner le système de fichiers le plusjudicieux. Dans la plupart des installations, cela n’a d’ailleurs pas grande importance. Cepen-dant, dans la mesure où certaines applications fonctionnent plus ou moins bien selon lesystème choisi, il est important de maîtriser cette étape. Les fonctionnalités avancées dessystèmes de fichiers diffèrent, c’est pourquoi vous aurez également affaire à divers outils decompatibilité. Cette section présente les avantages et les inconvénients des principauxsystèmes de fichiers Linux dans plusieurs domaines, par exemple la portabilité, la durée devérification et la vitesse du disque, l’espace disque utilisé, la prise en charge d’un grandnombre de fichiers et les fonctionnalités avancées en matière de sécurité.

Maximiser la portabilité du système de fichiersLe chapitre 10, « Utiliser plusieurs systèmes d’exploitation » évoque le concept de compati-bilité des systèmes de fichiers issus de différents systèmes d’exploitation. Nous avons doncdéjà vu que ext2fs est le système de fichiers natif de Linux le plus portable. Les pilotes et lesoutils d’accès associés à ext2fs sont disponibles pour de nombreux systèmes d’exploitation,ce qui signifie que vous pouvez gérer les données ext2fs à partir de nombreux systèmesd’exploitation autres que Linux. Malheureusement, la plupart de ces outils sont généralementlimités pour diverses raisons : certains peuvent uniquement jouer le rôle d’utilitaires d’accèsau lieu de véritables pilotes, d’autres ne fonctionnent pas avec les dernières versions d’ext2fs,d’autres encore sont incapables d’écrire sur ext2fs ou risquent d’augmenter les possibilités decorruption du système de fichiers s’ils le font, etc. Comme vous pouvez le constater, la porta-bilité d’ext2fs reste particulièrement restreinte.

Ext3fs est une extension journalisée d’ext2fs, comme nous le verrons dans la section suivante,« Réduire la durée de contrôle du disque ». C’est pourquoi de nombreux outils permettantd’accéder à ext2fs prennent également en charge ext3fs, bien que certains désactivent pourcela l’accès en écriture aux systèmes de fichiers ext3.

INFO La gestion du JFS a été ajoutée aux noyaux 2.4.20 et 2.5.6 et celle de XFS au noyau 2.5.36.Ces systèmes de fichiers sont donc théoriquement proposés par la plupart des distributions.

Page 4: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

319

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

IBM a écrit JFS pour son système d’exploitation AIX, puis l’a porté sur OS/2. Il a ensuiteouvert le code source de l’application OS/2 de JFS, permettant ainsi d’assurer la compatibilitéde Linux avec JFS. En raison de cet héritage, JFS est un choix judicieux si votre systèmetourne sous Linux et OS/2. Vous devrez cependant faire face à quelques problèmes de compa-tibilité, notamment parce qu’il est alors nécessaire de définir des groupes de secteurs de4 096 octets en vue de l’utilisation des mêmes partitions JFS par les deux systèmes d’exploi-tation. Vous rencontrerez également des problèmes de casse dans les noms de fichier puisque,contrairement à Linux, OS/2 n’est pas sensible à la casse. Vous pouvez utiliser JFS sans qu’ilsoit sensible à la casse sous Linux, mais uniquement sur une partition dédiée aux transferts dedonnées.

XFS, élaboré par IRIX (Silicon Graphics), est un autre système de fichiers capable de migrer.Les systèmes à double amorçage Linux/IRIX sont rares, mais XFS peut être utilisé afind’assurer la compatibilité des disques amovibles qui passent des systèmes Linux à IRIX, etinversement. La prise en charge de XFS sous Linux permet également de lire des disques durscréés avec des systèmes IRIX.

À l’heure actuelle, ReiserFS est le moins portable des principaux systèmes de fichiers natifsLinux. Bien qu’une version BeOS soit disponible sur http://www.bebits.com/app/3214, lesversions destinées aux diverses plates-formes tardent à voir le jour. Évitez autant quepossible ReiserFS si la compatibilité multiplate-forme est importante pour vous.

Réduire la durée de contrôle du disqueTous les systèmes de fichiers écrivent obligatoirement les données en blocs. En cas decoupure de courant, de crash du système ou de tout autre problème, le disque risque d’êtrelaissé dans un état instable à cause d’une opération interrompue. La plupart du temps, vousfinissez alors par perdre des données et devoir gérer d’incessantes erreurs du disque. Afind’éviter ce type de problème, les systèmes de fichiers actuels prennent en charge un dirty bit.Lorsque Linux monte un système de fichiers, il définit ce dirty bit, puis il le supprime audémontage. De cette manière, si un dirty bit existe déjà au moment du montage d’un systèmede fichiers, le système d’exploitation sait que ce dernier n’a pas été démonté correctement etqu’il risque de contenir des erreurs. Le cas échéant, en fonction des options de /etc/fstab oude la commande mount, Linux peut lancer fsck sur le système de fichiers. Ce programme, quenous verrons plus en détail dans la section « Récupérer un système de fichiers à la suite d’unecorruption », vérifie les erreurs du disque et les corrige dans la mesure du possible.

Malheureusement, une vérification complète du disque sur un système de fichiers traditionnelcomme ext2fs prend beaucoup de temps. En effet, l’ordinateur doit vérifier toutes les struc-tures de données principales qui se trouvent sur le disque, puis résoudre les incohérences trou-vées via fsck. Bien que ce programme soit généralement autonome, il a parfois besoin d’uneintervention extérieure : vous serez donc peut-être amené à répondre à des questions dérou-tantes sur la méthode de correction à adopter après un crash ou un autre type d’échec dusystème. Même si vous ne répondez pas, la vérification d’un disque dur de plusieurs gigaoc-

Page 5: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux320

Copyright ©

2004 Groupe E

yrolles

tets peut prendre de quelques minutes à quelques heures, soit une durée totalement inaccep-table sur des systèmes dont le temps d’inaccessibilité doit être minimal, comme c’est le cas denombreux serveurs.

Au cours des dix dernières années, les systèmes de fichiers journalisés ont gagné en popularitéen tant que solution partielle aux problèmes de durée de contrôle du disque dans la mesure oùils conservent sur le disque une trace des opérations en cours. Lorsque le système d’exploita-tion écrit des données sur le disque, il commence par enregistrer une entrée dans le journal quidécrit l’opération, puis il effectue cette dernière avant d’effacer le journal. Si une coupure decourant ou un crash se produit, le journal contient alors une copie des opérations qui doiventencore être effectuées, ce qui simplifie grandement la vérification du système de fichiers parla suite. En effet, au lieu de contrôler le disque dans son intégralité, le système se concentresimplement sur les zones spécifiées dans le journal comme comportant des opérations inache-vées. Le système de fichiers journalisé a alors uniquement besoin de quelques secondes pourse monter après un crash du système. Bien sûr, certaines données risquent d’être perdues, maisvous ne devez plus attendre plusieurs minutes, voire plusieurs heures, avant de vous en rendrecompte.

Linux prend en charge quatre systèmes de fichiers journalisés :

• Ext3fs – Ce système de fichiers est globalement un ext2fs associé à une fonction de jour-nalisation. En tant que tel, il est relativement fiable puisque ext2fs a été très bien testé.Ext3fs peut être lu par un pilote ext2fs, mais le journal est alors ignoré. Ext3fs présenteégalement un avantage supplémentaire, comme nous le verrons dans la section« Convertir ext2fs en ext3fs » : il est possible de convertir un système de fichiers ext2existant en un système de fichiers ext3 sans avoir à sauvegarder, repartitionner etrestaurer.

• ReiserFS – Il s’agit du premier système de fichiers journalisé ajouté au noyau Linux. Entant que tel, il a subi de nombreux tests, garants de sa fiabilité. Il a été conçu de A à Zcomme système de fichiers journalisé destiné à Linux et intègre plusieurs fonctionnalitésinhabituelles, comme la possibilité de compresser des petits fichiers dans un espace aussirestreint que possible avec de nombreux systèmes de fichiers.

• JFS – JFS (IBM) a été développé pour AIX au milieu des années 1990, puis a été portésur OS/2, et enfin sur Linux. Il est donc fiable, même si la version Linux n’est pas aussifréquemment utilisée que les versions destinées aux autres plates-formes, ou que ext3fsou ReiserFS sur Linux.

• XFS – XFS (SGI) a été conçu au milieu des années 1990 pour la plate-forme IRIX. Lesbases de ce système de fichiers sont donc fiables. Il s’agit de l’ajout officiel le plus récentau noyau Linux, même si cette option été déjà répandue auparavant. XFS intègre plusd’utilitaires annexes que n’importe quel système de fichiers, à l’exception d’ext2fs etext3fs. Il contient également une gestion native de certaines fonctionnalités avancées,comme les listes de droits d’accès (voir la section « Sécuriser un système de fichiers avec

Page 6: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

321

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

les listes de droits d’accès ») qui ne sont pas gérées correctement sur la plupart des autressystèmes de fichiers.

En règle générale, privilégiez les systèmes de fichiers journalisés autant que possible : ilsréduisent le temps de redémarrage en cas de coupure de courant ou d’autres problèmes.Cependant, certains de ces systèmes de fichiers présentent quelques inconvénients, essentiel-lement dus au fait que divers programmes reposent sur les spécificités de tel ou tel système defichiers pour fonctionner. Ainsi, en 2001, des programmes comme les serveurs NFS etl’émulateur Win4Lin rencontraient quelques difficultés avec certains systèmes de fichiersjournalisés. Ces problèmes ont fini par disparaître et apparaissent rarement avec les derniersnoyaux. Cela étant dit, testez autant que possible tous vos programmes dans le détail (particu-lièrement ceux qui interagissent avec les fichiers d’un disque de bas niveau ou de manièreinhabituelle) avant de passer à un système de fichiers journalisé. De ce point de vue, lesystème de fichiers journalisé le plus sûr est très certainement ext3fs en raison de ses simili-tudes avec ext2fs.

ReiserFS et JFS posent également quelques problèmes en terme de prise en charge par lesprogrammes. Par exemple, l’utilitaire de sauvegarde dump n’est inclus dans aucun d’entre eux.Quant au dump de XFS (appelé xfsdump), bien qu’il soit disponible sur le site de développe-ment de ce système de fichiers, il n’est pas intégré dans le paquetage xfsprogs 2.2.1, mêmesi certaines distributions le proposent dans un paquetage xfsdump distinct. Les programmesxfsdump et dump pour ext2fs/ext3fs créent des archives incompatibles, il est donc impossibled’utiliser ces outils pour sauvegarder un système de fichiers et le restaurer dans un autre.

Maximiser le débit du disqueLa plupart des utilisateurs se demandent généralement quel système de fichiers leur permettrad’obtenir les meilleures performances du disque. Il est malheureusement difficile de répondreà cette question tant les possibilités d’accès sont nombreuses, tel ou tel système de fichiersétant préférable en fonction de l’utilisation du système. Dans Linux Filesystems (Sams, 2001),William von Hagen a effectué de nombreux tests de performances et est arrivé à la conclusionque chaque système de fichiers Linux avait ses avantages selon les tâches à effectuer. En règlegénérale, toutefois, XFS et JFS ont donné de meilleurs résultats avec des petits fichiers(100 Mo), alors qu’ext2fs, ext3fs et, dans une moindre mesure, JFS, s’en sortaient mieuxlorsqu’il s’agissait de traiter des fichiers plus gros (1 Go). Certains tests de performancesévaluent l’utilisation du processeur, qui influe parfois sur la réactivité du système au coursd’opérations sollicitant énormément le disque. Avec les fichiers de petite taille, les résultatsétaient très variables : aucun système de fichiers ne s’est imposé comme gagnant incontes-table. En revanche, en ce qui concerne les fichiers de grande taille, ext3fs et JFS ont partagéla coupe du meilleur système de fichiers du point de vue du processeur.

Malheureusement, les tests de performances restent artificiels et ne reflètent pas systémati-quement les performances réelles. Par exemple, l’étude de von Hagen désigne ext2fs commevainqueur des tests de suppression de fichiers, et ReiserFS comme bon dernier. En fait, von

Page 7: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux322

Copyright ©

2004 Groupe E

yrolles

Hagen indique par la suite que ce résultat vient de son expérience personnelle ; et je le rejoinsd’ailleurs sur ce point. De la même manière, ReiserFS semble être relativement plus rapidequ’ext2fs lorsqu’il s’agit de supprimer un grand nombre de fichiers. Cette disparité est peut-être due au fait que von Hagen a testé le temps processeur alors que nous sommes surtout inté-ressés par le temps de réponse du programme. Ce que nous cherchons à vous dire ici, c’estqu’il ne faut pas se fier aveuglément à un test de performances. Si vous cherchez simplementà obtenir les meilleures performances possibles de votre disque, faites vos propres tests, envous assurant d’utiliser systématiquement le même matériel et la même partition. N’oubliezpas non plus de supprimer chaque système de fichiers avant de le remplacer par le suivant ;cela vous permettra d’utiliser le même disque et la même partition à chaque fois. Selon votresituation, installez des programmes ou des fichiers personnels, et notez la vitesse du système.Si cette procédure vous semble trop complexe, c’est peut-être parce que les écarts de perfor-mances entre les systèmes de fichiers ne jouent pas un rôle si important dans votre cas. Choi-sissez alors un système de fichiers en vous fondant sur d’autres critères.

Minimiser l’espace disque utiliséLa plupart des systèmes de fichiers allouent un espace donné aux fichiers dans des blocs. Lataille de ces derniers est généralement un multiple à la puissance deux de 512 octets (c’est-à-dire, 21 × 512, 22 × 512, 23 × 512, etc.). Pour être plus précis, la taille des blocs dans le cadredes systèmes de fichiers Linux varie de 1 Ko à 4 Ko (ext2fs et ext3fs). XFS gère des tailles deblocs allant de 512 octets à 64 Ko mais, dans la pratique, celles-ci sont limitées par l’architec-ture du processeur (4 Ko pour IA-32 et PowerPC, 8 Ko pour Alpha et Sparc). À l’heureactuelle, ReiserFS et le JFS de Linux prennent uniquement en charge les blocs de 4 Ko, bienque les structures de données de JFS prennent en charge des blocs de 512 octets. La taille debloc par défaut est de 4 Ko pour tous ces systèmes de fichiers, à l’exception d’ext2fs et ext3fs,pour lesquels ce chiffre dépend de la taille du système de fichiers.

Il est possible de minimiser l’espace utilisé par les fichiers, et donc de maximiser le nombrede fichiers pouvant être être stockés dans un système de fichiers, en réduisant la taille de cesblocs. En procédant ainsi, vous risquez néanmoins de diminuer sensiblement les perfor-mances puisque les fichiers connaissent plus de fragmentations et ont besoin d’un nombreplus important de pointeurs pour décrire complètement l’emplacement du fichier sur ledisque.

ReiserFS est inhabituel dans le sens où il prend en charge le stockage des queues de fichiers,c’est-à-dire la fin des fichiers qui n’occupent pas un bloc d’allocation entier (plusieurs fichiersdans un seul bloc). Cette fonctionnalité contribue largement à améliorer la capacité de stoc-kage de ReiserFS en ce qui concerne les fichiers de petite taille similaires à ceux des réper-toires de distribution d’un serveur de nouvelles. XFS utilise une approche différente pourarriver à un résultat semblable : il stocke complètement autant de petits fichiers que possibledans l’inode (une structure du disque qui pointe vers le fichier sur le disque, contient l’estam-pille du fichier, etc.).

Page 8: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

323

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

Aucune de ces fonctionnalités ne fait réellement la différence lorsque la taille moyenne desfichiers est importante. Par exemple, il ne sert à rien d’économiser 2 Ko en stockant la queuedes fichiers sur un seul bloc d’allocation si le système de fichiers ne contient que deux fichiersd’un gigaoctet. En revanche, si vous avez affaire à 2 000 000 de fichiers d’un kilo-octet, vousapprécierez de tous pouvoir les stocker sur un seul disque au lieu de devoir en acheter unautre.

Dans le cadre de l’utilisation de espace disque, vous devez également tenir compte de l’espacedédié au journal. Sur la majorité des disques, cet aspect est insignifiant, mais il a en revancheson importance lorsque vous gérez des disques de faible capacité, par exemple les disquesZip. En effet, sur un disque Zip de 100 Mo, ReiserFS dédie 32 Mo à son journal, contre 4 Mopour ext3fs et XFS. Avec JFS, l’espace alloué au journal est limité au début, mais croît au furet à mesure que celui-ci est utilisé.

Ext2fs et ext3fs doivent faire face à un autre problème : ils réservent par défaut 5 % de leurespace disque aux utilisations d’urgence par root. L’idée est de donner à root un espace qu’ilpourra utiliser si un système de fichiers est plein. Bien que cette solution présente un intérêtcertain pour les systèmes de fichiers critiques comme ceux de root et /var, elle est totalementinutile dans d’autres cas. Par exemple, root n’a absolument pas besoin d’un espace sur /homeou sur un support amovible. La section intitulée « Créer un système de fichiers pour desperformances optimales » décrit la marche à suivre si vous souhaitez réduire la taille de cetespace réservé.

Assurer la compatibilité avec un maximum de fichiersDans un sens, le stockage d’un maximum de fichiers sur une partition relève d’une allocationjudicieuse de l’espace aux petits fichiers, comme nous venons de le voir dans la section précé-dente. Cependant, il faut également tenir compte du nombre d’inodes disponibles. La plupartdes systèmes de fichiers prennent en charge un nombre limité d’inodes par disque, ce quiréduit la quantité de fichiers pouvant être stockés sur un disque. En effet, chaque fichierdevant être associé à son propre inode, vous serez vite à court si vous stockez trop de petitsfichiers sur le même disque. Avec ext2fs et ext3fs, le nombre d’inodes peut être modifié viales options -i ou -N de mke2fs lors de la création du système de fichiers. Ces options définis-sent respectivement le rapport octets-par-inode (en général, 2 ou 4 ; plus le chiffre est grand,moins il y a d’inodes sur le système de fichiers) et le nombre absolu d’inodes. XFS, quant àlui, vous permet de spécifier le pourcentage maximal d’espace disque pouvant être alloué auxinodes via l’option maxpct de mkfs.xfs. La valeur par défaut est 25, mais le système de fichiersest censé contenir de nombreux fichiers de petite taille, vous pouvez donc spécifier un pour-centage plus élevé.

ReiserFS est inhabituel dans le sens où il attribue dynamiquement les inodes ; vous n’avezdonc pas à vous charger de cette opération. Cela signifie également que l’option -i de l’utili-taire df, qui renvoie théoriquement des statistiques sur les inodes utilisées et disponibles,

Page 9: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux324

Copyright ©

2004 Groupe E

yrolles

fournit des informations dépourvues de sens sur les inodes disponibles dans les volumesReiserFS.

Sécuriser un système de fichiers avec les listes de droits d’accèsLinux, comme Unix en général, a toujours utilisé les propriétés et les permissions de fichierspour contrôler l’accès aux fichiers et aux répertoires. Certains outils permettant de gérer cesfonctionnalités sont décrits au chapitre 5, « Travailler en mode texte », mais une autreméthode est à votre disposition pour contrôler l’accès aux fichiers, à savoir les listes de droitsd’accès, ou ACL. Celles-ci permettent un contrôle plus précis des accès que les propriétés etles permissions. Leur fonctionnement est simple : elles associent au fichier des informationssupplémentaires, une liste d’utilisateurs ou de groupes, ainsi que les permissions octroyées.Supposons que vous disposiez d’un fichier contenant des informations confidentielles. Vousdevez être autorisé à le lire et à y écrire des informations, tandis qu’un groupe donné, disonslecteurs, aura uniquement le droit de le lire. Vous allez donc attribuer la propriété du fichieret les permissions de la façon suivante : vous serez la seule personne avec un droit de lectureet d’écriture sur ce fichier, tandis que tous les utilisateurs du groupe lecteurs pourront le lire(0640, ou -rw-r-----). Ce fichier doit être partagé avec un seul autre utilisateur qui, pour desraisons de sécurité, ne pouura pas être membre du groupe lecteurs. Les listes de droitsd’accès permettent de gérer cette situation en vous laissant attribuer une permission de lectureà cet utilisateur unique, indépendamment du groupe lecteurs. En l’absence de cette fonction-nalité, vous auriez dû créer un groupe (par exemple, lecteurs2) avec tous les membres delecteurs, plus cet utilisateur spécifique. Vous auriez ensuite été obligé d’assurer la mainte-nance de ce groupe supplémentaire. En outre, les utilisateurs ordinaires ont le droit de mani-puler les listes de droits d’accès, ce qui n’est pas le cas des groupes. Ces utilisateurs peuventdonc aisément autoriser certaines personnes à accéder à des fichiers donnés, ou bloquerl’accès à d’autres individus.

Peu de systèmes de fichiers natifs Linux prennent directement en charge les listes de droitsd’accès ; cet honneur revient à XFS. Cependant, si les ACL vous sont utiles, il est possibled’obtenir des paquetages complémentaires pour ext2fs, ext3fs et JFS. Dans cette optique, lesite http://acl.bestbits.at proposent des liens vers ces correctifs, des instructions, et bien plusencore. Quel que soit le système de fichiers utilisé, la compatibilité est assurée par des utili-taires spécifiques, disponibles sur le site que nous venons de mentionner. Ces outils vouspermettent de définir et de modifier les listes de droits d’accès. Par exemple, getfacl afficheles ACL d’un fichier, tandis que setfacl les modifie.

Les listes de droits d’accès restent une fonctionnalité relativement récente sous Linux, c’estpourquoi vous risquez de rencontrer quelques problèmes avec certains programmes ousystèmes de fichiers. En règle générale, les ACL ne vous sont pas d’une grande utilité sur unestation de travail normale ou un petit serveur. Cependant, si vous administrez un systèmemulti-utilisateur avec une structure de groupes complexe, cette solution est envisageable. Ellevous permettra, le cas échéant, de simplifier votre structure de permissions globale.

Page 10: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

325

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

Optimiser les systèmes de fichiersSi vous avez déjà installé Linux, vos partitions sont prêtes et configurées avec des systèmesde fichiers donnés. À ce stade, vous pouvez modifier votre configuration, mais cette procé-dure est parfois laborieuse. Par exemple, pour changer un système de fichiers, vous devezcommencer par sauvegarder l’ancien, créer ensuite le nouveau système, puis restaurer vosfichiers (sauf pour passer d’ext2fs à ext3fs). Un certain nombre d’options de création dusystème de fichiers vous permettront alors d’améliorer les performances du nouveau système.Quelques modifications sont relativement aisées, comme la défragmentation du disque (c’est-à-dire le repositionnement du contenu des fichiers pour que ceux-ci ne soient pas éparpillésn’importe où dans la partition) et le redimensionnement des partitions en vue de libérer de laplace.

Créer un système de fichiers pour des performances optimalesLa plupart des systèmes de fichiers prennent en charge diverses options pouvant influer sur lesperformances. Par exemple, l’allocation de grands blocs améliore les performances dans lamesure où elle réduit la fragmentation et le nombre d’opérations nécessaires à la récupérationd’un fichier complet. Certaines options peuvent uniquement être définies lors de la créationdu système de fichiers, tandis que d’autres sont susceptibles d’être modifiées par la suite.Toutes ces fonctionnalités ne sont pas nécessairement disponibles dans chaque système defichiers. En ce qui concerne les systèmes de fichiers Linux, les options d’optimisation desperformances les plus importantes sont les suivantes :

• Taille du bloc d’allocation – Comme nous l’avons vu dans la section précédente,« Minimiser l’espace disque utilisé », les blocs d’allocation de petite taille permettent derationaliser l’utilisation de l’espace disque, contre une légère dégradation de la vitessed’accès à ce même disque. Pour améliorer sensiblement les performances, vous pouvezdonc augmenter la taille des blocs. Il est difficile de modifier cette option une fois que lesystème de fichiers a été créé. Dans ext2fs ou ext3fs, vous pouvez utiliser l’option -btaille-bloc de mke2fs. En revanche, si vous avez installé XFS, vous devrez utiliserl’option -b size=taille-bloc de mkfs.xfs. En outre, dans ext2fs et ext3fs, taille-blocdoit être égale à 1024, 2048 ou 4096, alors que XFS prend en charge une taille de bloc théo-riquement égale à n’importe quel multiple de 512 octets à la puissance deux, jusqu’à64 Ko (65536 octets). Cependant, dans la pratique vous pouvez uniquement monter unsystème de fichiers avec des blocs de 4 Ko à 8 Ko sur les processeurs principaux.ReiserFS et la version Linux de JFS ne prennent pas encore en charge les paramètres decette fonctionnalité.

• Options de journalisation – Tous les systèmes de fichiers journalisés prennent encharge diverses options de journalisation, l’emplacement du journal figurant parmi lesplus importantes. En plaçant le journal sur un disque physique séparé du système defichiers principal, vous améliorerez les performances de votre machine, à condition que le

Page 11: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux326

Copyright ©

2004 Groupe E

yrolles

disque cible ne soit pas lent. Vous pouvez utiliser l’option -J device=- périphérique-journal de mke2fs ou l’option -j périphérique-journal de mkreiserfs ou mkfs.jfs pourdéfinir cette fonctionnalité. Ext3fs gère également la définition de la taille du journal avecl’option -J size=taille-journal, où taille-journal est en mégaoctets et doit être situéentre 1 024 et 102 400 blocs de système de fichiers. Si le journal est trop petit, vousrisquez de réduire les performances du système. En revanche, s’il est trop grand, il occupeun espace disque très important. En cas de doute, laissez mke2fs décider de la taille dujournal.

• Blocs réservés – Ext2fs et ext3fs réservent un certain nombre de blocs au super-utilisa-teur (ou à tout autre utilisateur que vous spécifiez). Par défaut, le pourcentage réservé estde 5 %, mais cette valeur est parfois excessive dans le cas de partitions de grande taille oumoins critiques (comme /home). Pour gagner de l’espace, utilisez l’option -m -pourcentage_réservé de mke2fs. La modification de ce pourcentage n’affectera en rien lesperformances réelles du disque, mais vous permettra de gagner un peu d’espace disquedisponible. Cette option peut être changée après la création d’un système de fichiers viaun paramètre identique à celui accepté par mke2fs pour le programme tune2fs, à savoirtune2fs -m 1 /dev/hda4 si vous souhaitez attribuer la valeur 1 au pourcentage de blocsréservés.

• Intervalle de vérification – Ext2fs et ext3fs forcent une vérification du système defichiers après un certain nombre de montages ou un intervalle de temps donné entre lesmontages. L’idée est de détecter tout problème éventuel dû à des erreurs d’écriture aléa-toires sur le disque ou à des bogues dans le système de fichiers. Pour modifier ces inter-valles, utilisez les options -c nb-max-montages et -i intervalle-entre-verifs detune2fs. Dans le cadre de cette dernière option, vous pouvez spécifier un intervalle enjours, en semaines ou en mois. Pour cela, il suffit d’entrer un nombre suivi respectivementde d, w ou m. La modification de l’intervalle des vérifications n’affecte pas les perfor-mances au quotidien, mais la fréquence de vérification complète du disque au démarrage.Cette dernière opération est parfois relativement longue, même pour ext3fs ; elle ne selimite pas aux transactions enregistrées récemment dans le journal, un peu comme unevérification forcée après un crash système.

• Hachage du répertoire – ReiserFS utilise une structure de répertoires triés pour accé-lérer la consultation de ces derniers, tandis que mkreiserfs propose diverses options dehachage (un type d’algorithme de consultation) à cet effet. Pour cela, utilisez l’option -hhachage de mkreiserfs, en affectant à hachage la valeur r5, rupasov ou tea. Certainshachages améliorent ou bien dégradent les performances selon les applications. Parexemple, la documentation du proxy Squid Web conseille d’utiliser rupasov, alors quecelle de qmail recommande r5. Cependant, sachez que r5 et rupasov ralentissent parfoisconsidérablement la création des fichiers dans les répertoires déjà chargés (de l’ordre dumillion du fichiers). En fait, rupasov a une forte tendance à provoquer ce type deproblèmes, c’est pourquoi il est préférable de l’éviter sur la plupart des systèmes. teavous expose nettement moins à ces difficultés, mais il est également beaucoup plus lent

Page 12: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

327

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

que r5 lorsque les répertoires contiennent un nombre standard de fichiers. En règle géné-rale, je vous conseille donc d’utiliser la valeur par défaut, r5, sauf si vous être sûr de créerde nombreux fichiers ou si le disque va être utilisé par des applications pour lesquelles lesperformances jouent un rôle important. Dans ces deux cas, consultez la documentationdes applications concernées ou effectuez une recherche sur Internet pour avoir desconseils.

• Options d’inode – XFS permet de définir la tailles des inodes lors de la création dusystème de fichiers grâce à l’option -i size=valeur de mkfs.xfs. La taille minimale pardéfaut est de 256 octets, tandis que la taille maximale atteint les 2 048 octets (cette valeurne peut pas dépasser la moitié de la taille des blocs d’allocation). La taille des inodesinflue sur la vitesse d’accès aux petits fichiers. Étant donné que XFS s’efforce de stockerautant de petits fichiers que possible dans l’inode, il est préférable de conserver les grosfichiers dans les inodes de grande taille pour accélérer la vitesse d’accès aux fichiers. Enrésumé, si une partition stocke de nombreux petits fichiers (inférieurs à 2 Ko), diminuezla taille des inodes. En fonction de la répartition des diverses tailles de fichiers, vousgagnerez ou perdrez ainsi de l’espace disque. Lorsqu’un nombre limité de fichiers faitmoins de 2 Ko, il est globalement inutile d’augmenter la tailles des inodes.

Les options par défaut de création des systèmes de fichiers donnent généralement des perfor-mances acceptables. Leur modification vous sera utile dans certains cas exceptionnels, parexemple pour des systèmes de fichiers qui stockent de grandes quantités de fichiers ou lorsquevous devez redémarrer votre ordinateur fréquemment. Évitez de modifier ces options auhasard, sauf en cas de tests destinés à déterminer la configuration la mieux adaptée à votresituation.

Convertir ext2fs en ext3fsLe système ext3fs présente un avantage sur ses homologues : il peut être aisément converti àpartir d’un système de fichiers ext2. Pour cela, il suffit d’utiliser le programme tune2fs et sonoption -j :

Si le système de fichiers auquel vous ajoutez un journal est monté au moment de la conver-sion, tune2fs crée le journal dans un fichier standard, nommé .journal, au niveau du réper-toire racine du système de fichiers. En revanche, si le système n’est pas monté lorsque vouslancez cette commande, le journal n’est pas stocké dans un fichier ordinaire. Dans les deuxcas, vous obtenez un système de fichiers ext3, susceptible d’être utilisé comme s’il avait étécréé en tant que tel dès le départ. Le cas échéant, il est possible d’accéder au système defichiers ext2fs, par exemple si vous utilisez un noyau qui ne prend pas en charge ext3fs.Cependant, certains noyaux plus anciens et quelques utilitaires autres que Linux refusent

# tune2fs -j /dev/hda4

Page 13: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux328

Copyright ©

2004 Groupe E

yrolles

d’accéder au système de fichiers de cette manière ou autorisent seulement un accès en modelecture.

Si votre système de fichiers ext3 est tellement corrompu qu’il interfère avec les opérations derécupération du disque, ce qui reste excessivement rare, vous pouvez reconvertir le systèmede fichiers en ext2, via l’outil debugfs :

Une fois cette opération terminée, vous devriez être en mesure d’utiliser fsck.ext2 avecl’option -f, comme nous le verrons dans la section « Options de vérifications du système defichiers », afin de récupérer le système de fichiers. Dans la mesure où le journal vient d’êtredésactivé, fsck.ext2 signale des erreurs qui étaient auparavant inexistantes dans le système defichiers. Vous avez alors la possibilité d’ajouter le journal via tune2fs, comme nous venonsde le voir.

Défragmenter un disqueLes systèmes de fichiers de Microsoft, comme FAT et NTFS, sont particulièrement sujets à lafragmentation du disque, c’est-à-dire par la division des fichiers en de nombreux segmentsnon contigus. La fragmentation du disque dégrade les performances en ce sens que le systèmed’exploitation est généralement contraint de déplacer la tête du disque plus souvent, sur deplus grandes distances, pour lire un fichier fragmenté.

Heureusement, les systèmes de fichiers natifs Linux résistent tous nettement mieux à la frag-mentation que ceux de Windows. La plupart du temps, vous n’avez donc pas besoin de vousoccuper de la défragmentation de vos disques. En fait, les outils de défragmentation de Linuxsont difficiles à obtenir. Ainsi, le paquetage defrag n’est pas inclus dans la plupart des distri-butions. De plus, il s’agit d’un outil ancien qui ne fonctionne pas avec la plupart despartitions ext2fs actuelles, et encore moins avec les systèmes de fichiers journalisés.

Si vous pensez que votre système rencontre des problèmes de fragmentation, vous pouvezvérifier l’ampleur du problème sur les systèmes de fichiers ext2 ou ext3 grâce à lacommande fsck. Vous devrez parfois forcer la vérification avec le paramètre -f. Cette actioncrée, entre autres, un rapport sur la fragmentation du disque :

# debugfs -w /dev/sda4debugfs 1.32 (09-Nov-2002)debugfs: features -needs_recovery -has_journalFilesystem features: dir_index filetype sparse_superdebugfs: quit

ATTENTION N’essayez pas de supprimer le journal d’un système de fichiers monté.

/dev/hda5: 45/8032 files (2.2% non-contiguous), 4170/32098 blocks

Page 14: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

329

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

Ce rapport indique que 2,2 % des fichiers ne sont pas contigus (c’est-à-dire qu’ils sont frag-mentés), ce qui est insignifiant. Malheureusement, les outils fsck des systèmes de fichiersjournalisés ne donnant pas cette information, vous ne disposez d’aucun indicateur de frag-mentation. Si vous pensez réellement devoir résoudre un problème de fragmentation sur votredisque, essayez de sauvegarder la partition, de créer un nouveau système de fichiers, puis derestaurer les fichiers. Cependant, cette procédure est parfois plus longue que le gain de tempsen accès disque pour les mois, voire les années à venir. Procédez à cette opération uniquementlorsque vous souhaitez remplacer votre système de fichiers, ou pour d’autres motifs, parexemple en cas de changement de disque dur.

Redimensionner les systèmes de fichiersIl vous est très certainement arrivé de constater que vos partitions n’avaient pas la taille opti-male, mais seulement après avoir installé Linux. Par exemple, vous découvrez un peu tard quevous avez alloué un espace trop important à /usr, mais insuffisant à /home. La plupart dutemps, vous corrigez ce problème en utilisant des liens symboliques destinés à stockercertains répertoires sur une partition, alors que leur nom figure dans une autre. Une autre solu-tion choisie par les utilisateurs consiste à sauvegarder, repartitionner, puis restaurer lesdonnées. Bien souvent, la démarche la plus simple revient à utiliser un redimensionneur dyna-mique des partitions, comme nous l’avons vu au chapitre 10 pour FAT et d’autres systèmesd’exploitation différents de Linux. Heureusement, les outils de redimensionnement de parti-tions existent également pour les systèmes de fichiers Linux les plus répandus.

Redimensionner ext2fs et ext3fsPlusieurs outils de redimensionnement des systèmes de fichiers ext2 et ext3 vous sontproposés :

INFO En règle générale, la fragmentation devient un problème uniquement si votre disque est presqueplein. Dans ce cas, Linux peine à trouver un bloc d’espace libre suffisamment grand pour stockerun fichier sans le fragmenter. Si votre disque se trouve dans cette situation et que vous suppri-mez des fichiers, le degré de fragmentation des fichiers restants dépend de ceux qui ont étésupprimés. C’est pourquoi la meilleure solution consiste encore à éviter de remplir vos partitions.Pour conclure avec la fragmentation, tout ce qui se trouve en dessous de 80 ou 90 % de remplis-sage est acceptable.

ATTENTION Les outils de redimensionnement dynamiques de partitions sont dangereux en raison de leurnature même. En cas de coupure de courant, de crash système ou de bogue, ils risquentd’endommager sérieusement une partition. Sauvegardez toujours les données d’une partition encours de redimensionnement et ne lancez jamais un outil de redimensionnement dynamique surune partition montée. Si nécessaire, lancez plutôt un système de démarrage d’urgence de Linuxpour procéder au redimensionnement.

Page 15: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux330

Copyright ©

2004 Groupe E

yrolles

• resize2fs – Ce programme fait partie du paquetage e2fsprogs, lui-même intégré dans laplupart des distributions. Les options qu’il offre sont relativement rudimentaires. Vousdevez au minimum lui passer le fichier de périphérique associé à la partition, par exempleresize2fs /dev/hda4. Cette commande redimensionne le système de fichiers sur /dev/hda4 pour qu’il corresponde à la taille de la partition. Vous pouvez également appliquer lataille de la partition en blocs d’allocation, ainsi resize2fs /dev/hda4 256000 redimen-sionne un système de fichiers à 256 000 blocs. Le programme resize2fs ne redimen-sionne pas les partitions, mais uniquement les systèmes de fichiers qu’elles contiennent.Vous devez donc utiliser resize2fs en parallèle avec fdisk pour redimensionner à la foisune partition et son système de fichiers. Pour diminuer la taille d’un système de fichiers,vous devez procéder de cette manière avant d’utiliser fdisk pour que la partition corres-ponde au système de fichiers. Si vous souhaitez augmenter la taille d’une partition,utilisez d’abord fdisk, puis resize2fs. Il est difficile de faire correspondre les tailles dusystème de fichiers et de la partition, c’est pourquoi il est conseillé d’utiliser GNU Partedou Partition Magic plutôt que resize2fs.

• GNU Parted – Ce programme permet de redimensionner le système de fichiers et lapartition simultanément. Il est donc plus facile à utiliser que resize2fs. Nous reviendronssur son fonctionnement plus en détail dans « Utiliser GNU Parted ».

• PartitionMagic – Ce programme commercial de PowerQuest (http://www.power-quest.com) gère les opérations intégrées de redimensionnement des systèmes de fichiers etdes partitions FAT, NTFS, ext2fs, ext3fs et Linux swap. PartitionMagic est plus facile àutiliser que les autres outils de redimensionnement de partitions destinés à ext2fs etext3fs, mais il fonctionne uniquement sous DOS ou Windows. Cet outil est inclus dansune image de disquette de démarrage DOS et un CD-Rom amorçable, il est donc utili-sable sur un système tournant uniquement sous Linux.

Redimensionner ReiserFS

Deux outils vous permettent de redimensionner ReiserFS :

• resize_reiserfs – Cet outil est l’équivalent ReiserFS du programme resize2fs. Toutcomme resize2fs, resize_reiserfs redimensionne le système de fichiers, mais pas lapartition dans laquelle il se trouve ; vous devez donc utiliser fdisk parallèlement. Si vouspassez seulement l’identifiant de la partition au programme, il redimensionne le systèmede fichiers en fonction de la partition. En revanche, si vous passez une option -s et la tailledu système de fichiers, cet outil redimensionne la partition à la taille demandée, définie enoctets, kilo-octets, megaoctets, ou gigaoctets, respectivement via les suffixes K, M, ou G. Ilest également possible de spécifier une modification de la taille de la partition en faisantprécéder le préfixe de la taille d’un signe moins (-) ou plus (+). Par exemple,resize_reiserfs -s -500M /dev/sda5 réduit la taille du système de fichiers de /dev/sda5à 500 Mo.

Page 16: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

331

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

• GNU Parted – Si l’on en croit la page Web de cet outil, il prendrait en charge ReiserFSet les autres systèmes de fichiers. Malheureusement, dans la version 1.6.4, cette prise encharge est plus théorique que réelle. En effet, elle repose sur des bibliothèques qui n’exis-tent pas dans la plupart des distributions et qui sont impossibles à trouver y compris dansle cadre d'une installation récente. Cette fonctionnalité sera peut être disponible dansquelque temps avec un peu de chance.

Les outils de redimensionnement de ReiserFS n’ont pas atteint un niveau de développementaussi avancé que ceux des systèmes de fichiers ext2 et ext3. En fait, resize_reiserfs affichedes messages vous avertissant que le programme est en phase bêta.

Redimensionner XFS

XFS inclut depuis longtemps un outil de redimensionnement de partitions, à savoirxfs_growfs. Ce programme est destiné à augmenter la taille d’un système de fichiers, et non àla réduire. Contrairement à la plupart des outils de redimensionnement de partitions, celui-cifonctionne uniquement sur des systèmes de fichiers montés. Pour l’utiliser, il est donc préfé-rable de procéder de la manière suivante : démontez le système de fichiers, supprimez la parti-tion via fdisk, créez une nouvelle partition, montez le système de fichiers et, enfin, appelezxfs_growfs:

Comme vous l’avez probablement deviné, /point/montage est le point de montage de la parti-tion. Vous devrez parfois ajouter l’option -D size afin de spécifier la taille du système defichiers en blocs d’allocation. Diverses options sont également à votre disposition, commevous pouvez le constater dans la page de manuel de xfs_growfs.

Bien que la page Web de GNU Parted ne mentionne pas la prise en charge de XFS, le codesource contient un sous-répertoire XFS. Pourtant, Parted refuse de travailler sur despartitions XFS, mais cette situation devrait évoluer.

Redimensionner JFS

JFS intègre une fonctionnalité de redimensionnement de partitions pour le moins inhabituellepuisqu’elle se trouve dans le pilote JFS du noyau. Vous pouvez l’utiliser de façon àaugmenter, et uniquement augmenter, la taille du système de fichiers. Comme avec la plupartdes outils de redimensionnement de partitions, vous devez modifier la taille de la partitionavec fdisk avant de la supprimer, puis d’en recréer une plus grande. Une fois cette opérationterminée, montez la partition comme vous le faites habituellement, puis exécutez lacommande suivante :

# xfs_growfs /point/montage

# mount -o remount,resize /point/montage

Page 17: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux332

Copyright ©

2004 Groupe E

yrolles

Cette commande redimensionne le système de fichiers monté sur /point/montage afind’occuper tout l’espace disponible sur la partition. Aucun autre outil de ce type n’est dispo-nible pour JFS, et ce malgré la présence d’un sous-répertoire prévu à cet effet dans le codesource de GNU Parted. Mais tous les espoirs sont permis en la matière.

Utiliser GNU Parted

Parted est le redimensionneur de partitions open source le plus élaboré de tous. Il mérite doncque nous l’analysions en détail. Vous pouvez lui passer directement une série de commandesou l’utiliser de manière interactive. Cette dernière méthode doit être privilégiée si vous avezl’intention de n’utiliser l’outil qu’une seule fois. Quant aux commandes Parted, elles vouspermettent de rédiger des scripts destinés à l’automatisation du redimensionnement de parti-tion. En règle générale, vous lancez Parted de manière interactive en tapant le nom duprogramme suivi du périphérique concerné. Vous pouvez alors entrer des commandes de redi-mensionnement, de création, de suppression, etc., en fonction de vos besoins :

Cet exemple supprime la deuxième partition du disque et redimensionne la première pourqu’elle remplisse l’espace disponible. À la différence de la plupart des outils de gestion despartitions de Linux, Parted fonctionne avec des chiffres exprimés en mégaoctets ; c’est pour-quoi il est parfois difficile de convertir les points de départ et d’arrivée de la partition deParted depuis et vers les limites des cylindres sur la base desquelles fdisk et d’autres outilsfonctionnent. Le tableau 12-1 résume les principales commandes Parted. Bien que la plupartde ces commandes soient censées avoir besoin d’arguments, cela n’est pas toujours le cas dansla pratique. En effet, elles vous demandent les informations requises lorsque Parted est lancéen mode interactif. part-type utilise les codes suivants : p pour les partitions principales, epour les partitions étendues et l pour les partitions logiques.

Redimensionner des partitions

Dans le cadre de la plupart des outils de redimensionnement des systèmes de fichiers, vousdevez modifier la partition à l’aide de fdisk (à l’exception de GNU Parted et PartitionMagic).La méthode de modification dépend du but recherché, à savoir si vous souhaitez étendre ou

# parted /dev/sda(parted) printDisk geometry for /dev/scsi/host0/bus0/target5/lun0/disc: 0.000-96.000 megabytesDisk label type: msdosMinor Start End Type Filesystems Flags1 0.023 48.000 primary ext2 2 48.000 96.000 primary ext2(parted) rm 2(parted) resize 1 0.00 96.00(parted) quit

Page 18: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

333

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

réduire la partition. Il est plus aisé d’agrandir une partition que de la diminuer. Pour effectuercette opération, procédez comme suit :

1. Lancez fdisk sur le disque en question.

2. Saisissez d dans fdisk pour supprimer la partition à étendre. L’outil vous demande alorsle numéro de la partition.

3. Saisissez n dans fdisk pour créer une nouvelle partition en lieu et place de l’ancienne.L’outil vous demande le numéro de partition, ainsi que les cylindres de début et de fin.Le cylindre de début doit être identique à celui d’origine, alors que le cylindre de fin doitlogiquement être supérieur à l’original.

4. Saisissez w dans fdisk pour écrire vos modifications sur le disque, puis sortir.

5. Suivez la procédure de votre outil de redimensionnement du système de fichiers pourétendre le système de fichiers.

Lorsque vous agrandissez une partition, vous devez bien évidemment disposer d’un espacedisque suffisant. Cela signifie que vous avez déjà supprimé ou réduit une partition qui suitcelle à étendre. En effet, il est nettement plus difficile d’utiliser l’espace qui précède celui dusystème de fichiers sur le disque. Pour cela, vous devez spécifier un point de départ situé avantsur le disque, puis utiliser dd afin de copier au début de la partition un système de fichiers setrouvant plus loin sur la nouvelle partition. Sachez toutefois que cette tâche est délicate, carvous devez calculer précisément le point de départ du système de fichiers dans la partition qui

Tableau 12-1 – Commandes principales de Parted

Commande Parted Effet

help [commande] Affiche des informations relatives à l’utilisation d’une commande. Si l’option commande n’est pas mentionnée, le résumé de toutes les commandes s’affiche.

mkfs partn fstype Crée un système de fichiers de fstype sur la partition numéro partn.

mkpart type-part [fstype] début fin

Crée une partition en lui donnant le code de type type-part, avec début et fin comme points de départ et d’arrivée.

mkpartfs type-part fstype début fin

Fonctionne comme mkpart, mais crée également un système de fichiers dans la nouvelle partition.

move partn début fin Déplace la partition vers un autre emplacement du disque.

print [partn] Affiche la table de partition ou, si partn est spécifié, des informations plus détaillées sur la partition.

rescue start end Tente de récupérer une partition supprimée.

resize partn start end Redimensionne la partition spécifiée à la taille donnée.

rm partn Supprime la partition spécifiée.

select device Commence à éditer un nouveau disque.

Page 19: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux334

Copyright ©

2004 Groupe E

yrolles

vient d’être agrandie. Or, la moindre erreur risque d’effacer toutes vos données. Je vousdéconseille donc fortement cette opération. Créez plutôt un nouveau système de fichiers dansl’espace libre situé avant la partition existante, puis montez-le dans votre arborescence. Sil’espace vide est plus grand que la partition à déplacer, vous pouvez créer une nouvelle parti-tion, déplacer l’originale, vérifier que la partition copiée est intacte, supprimer la partitionoriginale, puis étendre la partition copiée et le système de fichiers qu’elle contient.

Pour réduire la taille du système de fichiers, la taille de la partition doit correspondre à cellede ce dernier, ce qui est loin d’être évident. Heureusement, une procédure vous permet deréduire le risque d’erreur :

1. Avec votre outil de redimensionnement, réduisez le système de fichiers à une valeurinférieure à celle souhaitée. Par exemple, pour faire passer une partition de 700 Moà 500 Mo, réduisez-la à 400 Mo.

2. Utilisez fdisk pour redimensionner la partition à la taille souhaitée, 500 Mo dans notreexemple. Cette taille doit être supérieure à celle du système de fichiers, avec une margeconfortable.

3. Utilisez l’outil de redimensionnement de partition pour étendre le système de fichiersdans l’espace libre de la partition.

Le point de départ du système de fichiers doit rester inchangé. Lorsque vous déplacez l’espacesitué entre les systèmes de fichiers, vous risquez de créer des problèmes. En effet, s’il estpossible de réduire une partition précédente, il est en revanche risqué d’étendre la partitionsuivante dans l’espace libéré.

Récupérer un système de fichiers à la suite d’une corruptionLe cauchemar de tous les utilisateurs est de perdre des données à la suite de la corruption dusystème de fichiers en raison d’un crash système, d’un pilote du système de fichiers bogué(particulièrement si vous utilisez des pilotes autres que Linux pour accéder à des partitionsLinux), d’une erreur humaine impliquant des utilitaires disque de bas niveau, etc. Tous lessystèmes de fichiers Linux intègrent des outils de vérification du disque qui se distinguent surcertains points.

Vérifier le système de fichiersLa plupart des systèmes de fichiers fournissent des utilitaires chargés de scanner leur contenuà la recherche d’incohérences internes. Ces outils sont capables de détecter, et souvent decorriger, des erreurs comme des dossiers mutilés, des estampilles erronées, des inodes quipointent vers un emplacement du disque inapproprié, etc. Sous Linux, l’utilitaire fsck faitoffice d’interface graphique pour les outils de vérification des systèmes de fichiers spécifi-ques, dont les noms sont généralement construits de la façon suivante :

Page 20: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

335

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

fsck.systeme_de_fichiers, où systeme_de_fichiers correspond au nom du système defichiers, par exemple jfs ou ext2. Si vous avez besoin de vérifier manuellement un systèmede fichiers, vous pouvez soit taper fsck, qui appelle par la suite l’utilitaire spécifique dusystème de fichiers, ou bien appeler directement ce dernier.

Le rôle de chaque programme fsck dépend largement du système de fichiers concerné. Eneffet, ces divers programmes effectuent souvent plusieurs passages dans le système de fichiersen vérifiant un type de problème particulier à chaque fois. Si votre partition est gravementcorrompue, vous devrez peut-être lancer fsck à plusieurs reprises pour résoudre tous lesproblèmes. Il vous incombera également de répondre aux questions de fsck pour certainstypes d’erreurs. Malheureusement, ces questions sont incompréhensibles si vous n’êtes pas unexpert en systèmes de fichiers. En contrepartie, la plupart de ces questions vous demandentsimplement de répondre par oui ou par non, vous pouvez donc vous contenter de deviner laréponse juste (la valeur par défaut donne généralement de bons résultats).

Lorsque vous démarrez le système, Linux examine l’entrée du système de fichiers dans /etc/fstab afin de déterminer s’il doit lancer automatiquement fsck. Le dernier champ de l’entréed’un système de fichiers spécifie le moment où ce dernier doit être vérifié. Ainsi, 0 indiqueque fsck ne doit pas être lancé au démarrage. Cette valeur est appropriée pour des systèmesde fichiers autres que Linux. Le système de fichiers root (/) se voit théoriquement attribuer lavaleur 1, indiquant qu’il doit être vérifié en premier lieu. Tous les autres systèmes de fichiersnatifs Linux sont normalement associés à la valeur 2, ce qui signifie qu’ils doivent être véri-fiés après le système de fichiers racine. La vérification des systèmes de fichiers au démarragepose néanmoins quelques problèmes dans certaines distributions et avec certains systèmes defichiers journalisés. Pour être plus précis, l’outil de vérification du système de fichiers ralentit

INFO Dans certaines distributions, comme Mandrake, fsck.reiserfs n’est autre qu’un lien symboli-que vers /bin/true. Bien que déroutant, ce procédé évite des retards de démarrage si lesystème essaie de vérifier un système de fichiers à ce moment-là. Pour vérifier une partitionReiserFS sur un ordinateur exécuté sous Mandrake, vous devez appeler le programme via lenom reiserfsck. XFS intègre un programme fsck.xfs, mais celui-ci ne vous sera d’aucuneutilité. Si vous avez besoin de forcer une véritable vérification de cohérence, vous devez utiliserle programme xfs_check.

ASTUCE Si votre partition est gravement corrompue et que vous disposez d’un espace disque libre surune autre partition ou un autre disque dur, essayez de copier toutes les données à l’aide de dd(sauvegarde préalable) avant de lancer fsck. Par exemple, la commande dd si=/dev/sda5de=/dev/hda7 vous permet de sauvegarder la partition /dev/sda5 sur /dev/hda7. Vouspouvez alors restaurer cette image et tester d’autres options si fsck ne fonctionne pas correcte-ment. Vous pouvez également essayer d’ajouter l’option noerror à une commande dd afin decopier une partition sur un lecteur qui est à l’origine d’erreurs physiques de lecture. fsck serapeut-être en mesure de récupérer les données sur la partition copiée, alors qu’il n’y parvient passur la partition originale en raison de ces erreurs de lecture.

Page 21: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux336

Copyright ©

2004 Groupe E

yrolles

parfois le processus de démarrage en forçant inutilement une vérification complète du disque.C’est pourquoi la vérification est désactivée dans certains cas (valeur égale à 0 dans le dernierchamp de /etc/fstab), particulièrement pour ReiserFS, voire ext3fs et XFS. Ces systèmes defichiers sont tous capables de réutiliser automatiquement leur journal une fois montés, unevérification explicite du système de fichiers au démarrage est donc normalement inutile.

Options de vérification du système de fichiersLe programme principal fsck prend en charge diverses options, qu’il passe aux programmesspécifiques des systèmes de fichiers si nécessaire. Le tableau 12-2 résume ces options, qui ontgénéralement la syntaxe suivante :

fsck [options] [-t fstype] [peripherique] [options-supplementaires]

La plupart des options intéressantes sont propres à un ou plusieurs systèmes de fichiers. Ellesvous permettent notamment de spécifier les actions suivantes :

• Sauvegarder les superblocs – Les systèmes de fichiers ext2 et ext3 ont recours auxsuperblocs, qui contiennent de nombreuses informations vitales sur le système defichiers. Ces superblocs sont tellement importants que les systèmes de fichiers en conser-vent des sauvegardes sur le disque. Si le superbloc principal est endommagé, fsck.ext2 ala possibilité d’utiliser une sauvegarde dont vous spécifiez l’emplacement à l’aide de -b.Pour connaître l’emplacement des superblocs de sauvegarde, tapez mke2fs -n /dev/fichier, où /dev/fichier correspond au fichier de périphérique de la partition. N’oubliezsurtout pas l’option -n, faute de quoi mke2fs créera un nouveau système de fichiers quidétruira l’ancien !

• Détecter les mauvais blocs – Vous pouvez demander à fsck.ext2 de scanner physique-ment les mauvais secteurs du disque et de les marquer en tant que tel via l’option -c.

Tableau 12-2 – Options courantes de fsck

Options de fsck Effet

-t fslist Spécifie le(s) type(s) de système de fichiers à vérifier. Vous pouvez contrôler plusieurs systèmes de fichiers via une commande, fslist peut donc être une liste de types de système de fichiers séparés par des virgules.

-A Vérifie chaque système de fichiers spécifié dans /etc/fstab.

-R Ignore la vérification du système de fichiers racine (utilisée avec -A).

-C Affiche un indicateur de progression pour les systèmes de fichiers qui prennent cette option en charge (pour l’instant, ext2fs et ext3fs uniquement).

options-supplementaires

Les options qui ne sont pas reconnues par fsck sont appliquées aux programmes spécifiques des systèmes de fichiers.

Page 22: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

337

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

Doublez cette option (c’est-à-dire, utilisez -cc) pour lancer un test de lecture/écriture nondestructeur afin de rechercher des problèmes qu’un test en lecture seule ne verrait pas.

• Forcer une vérification – En temps normal, la plupart des utilitaires fsck n’effectuentque des vérifications minimales si le système de fichiers est indiqué comme correct. Vouspouvez cependant forcer une vérification avec les utilitaires fsck.ext2 et fsck.jfs en leurpassant l’option -f. Quant à l’option --check, elle demande à reiserfsck de rechercherles erreurs sans les corriger, cette dernière opération étant effectuée via --fix-fixablepour certains types d’erreur.

• Emplacement du journal – Pour indiquer à fsck.ext2, fsck.jfs ou reiserfsck l’empla-cement du journal externe, passez celui-ci via le paramètre -j emplacement-journal.

• Minimiser l’interaction avec l’utilisateur – L’option -p de fsck.ext2 et fsck.jfs limiteautant que possible les questions posées à l’utilisateur. Les options -n et -y de fsck.ext2permettent de répondre respectivement non ou oui à toutes les questions (non indique àfsck qu’il ne doit apporter aucune modification au système de fichiers). L’option -s dexfs_check permet d’afficher uniquement les erreurs graves. Elle facilite notamment ladétection d’un problème qui empêche le montage du système de fichiers lorsque celui-cidoit faire face à des problèmes moins importants.

• Reconstruire le superbloc – Le programme reiserfsck gère la reconstruction du super-bloc via l’option --rebuild-sb.

• Reconstruire l’arborescence du système de fichiers – Vous pouvez reconstruire l’arbo-rescence complète avec l’option --rebuild-tree de reiserfsck. Bien que présentantcertains risques, cette option permet de régler les problèmes principaux. Sauvegardez lapartition avec dd avant d’utiliser cette option.

• Ne pas réutiliser le journal – L’option -o de fsck.jfs indique au programme de ne pasréutiliser le journal. Cette option est particulièrement utile lorsque le journal lui-même aété corrompu.

En règle générale, vous n’aurez pas besoin d’utiliser fsck, sauf si vous rencontrez desproblèmes après un redémarrage. Le cas échéant, Linux vous envoie parfois dans un shell demaintenance et vous conseille de lancer fsck manuellement. Bien sûr, vous pouvez lancer cetutilitaire à tout moment. Cette opération est souhaitable lorsque les accès au disque vousjouent des tours, par exemple si des fichiers disparaissent ou si le disque semble avoir trop outrop peu d’espace libre.

ATTENTION Ne lancez jamais fsck sur un système de fichiers monté en lecture/écriture : Linux serait perduet corromprait davantage le système de fichiers. Si nécessaire, fermez le système et démarrezdepuis un système d’urgence afin de lancer fsck sur un système de fichiers non monté ou enlecture seule.

Page 23: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux338

Copyright ©

2004 Groupe E

yrolles

Récupérer des fichiers supprimésLe problème le plus courant lié aux systèmes de fichiers est probablement issu de la suppres-sion accidentelle de fichiers. En effet, il arrive fréquemment que des utilisateurs supprimentle mauvais fichier ou un fichier dont ils ont en fait besoin. Les utilisateurs de Windows sontpeut-être habitués aux utilitaires de récupération de ces fichiers, qui examinent le disque à larecherche de fichiers récemment supprimés pour les récupérer. Malheureusement, ce genred’outil est rare sous Linux. Afin de faciliter la récupération, vous pouvez avoir recours àcertains utilitaires qui ne suppriment pas réellement les fichiers, mais les stockent temporaire-ment dans un répertoire en vue d’une suppression ultérieure. En cas d’échec, il ne vous resteraplus qu’à récupérer les fichiers depuis une sauvegarde.

Utilitaires corbeillePour récupérer des fichiers « supprimés », la méthode la plus simple consiste à ne pas lessupprimer. La corbeille repose sur ce principe puisque cet outil, ou procédure, vous permet destocker les fichiers à supprimer sans vous en débarrasser réellement. Les fichiers sontsupprimés automatiquement ou manuellement selon la procédure ou l’outil sélectionné. Cetutilitaire est généralement représenté par l’icône d’une corbeille que vous retrouvez dans lesprincipaux environnements graphiques, dont KDE et GNOME. Pour utiliser une corbeillegraphique, glissez-déposez les fichiers à supprimer dans l’icône correspondante, qui n’estautre qu’un pointeur vers un répertoire spécifique caché, comme ~/Desktop/Trash ou ~/.gnome-desktop/Trash. Avec cette opération, vous vous contentez de déposer le fichier dansce répertoire. Par la suite, il vous suffit de cliquer une ou deux fois sur l’icône de la corbeillepour ouvrir un navigateur de fichiers permettant de faire glisser hors de la corbeille les fichiersà récupérer. En général, les fichiers ne sont supprimés de la corbeille que lorsque vous le

Systèmes de fichiers journalisés : ce n’est pas la panacée

De nombreux utilisateurs ont l’air de penser que les systèmes de fichiers journalisés les protègent contreles erreurs de système de fichiers, alors que ceux-ci n’ont pas été conçus dans ce but. En effet, lessystèmes de fichiers journalisés sont destinés en premier lieu à réduire autant que possible la durée devérification du système de fichiers à la suite d’un crash ou d’une autre erreur grave. Ext2fs est réputé pourêtre fiable. Il en va de même pour les systèmes de fichiers journalisés Linux, mais n’en déduisez pas pourautant qu’ils sont plus sûrs qu’ext2fs.

Les systèmes de fichiers journalisés réduisent la durée du processus de démarrage après une coupurede courant, ce qui pousse certains à penser qu’ils peuvent utiliser les systèmes de fichiers journaliséssans fermer Linux proprement. Or, cette pratique est risquée, dans le meilleur des cas. Linux cachetoujours les accès aux systèmes de fichiers journalisés, vous risquez donc de perdre les donnéesrécentes si vous éteignez l’ordinateur avant de l’avoir fermé. Fermez toujours votre ordinateur avecl’utilitaire shutdown (ou un programme qui l’appelle, par exemple un écran graphique de connexion)avant de couper l’alimentation.

Page 24: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

339

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

demandez en cliquant avec le bouton droit de la souris sur l’icône de la corbeille, puis ensélectionnant une option dont le nom est similaire à Vider corbeille.

Lorsque vous travaillez en ligne de commande, rm vous permet généralement de supprimer lesfichiers, par exemple rm un_fichier.txt. Par défaut, cette commande n’utilise rien quiressemble au répertoire de la corbeille. En outre, selon votre distribution et sa configuration,rm ne vous demande pas nécessairement si vous êtes sûr de vouloir supprimer les fichiers.Vous pouvez améliorer considérablement la sécurité de cette commande en l’obligeant àdemander la confirmation de chaque suppression via l’option -i (dans notre exemple, rm -iun_fichier.txt). Pour utiliser cette configuration par défaut, créez un alias dans vos scriptsde démarrage, comme nous l’avons vu au chapitre 4, « Maîtriser les shells et les scriptsshell ». Par exemple, la ligne suivante dans ~/.bashrc ou /etc/profile définit ce type d’aliaspour bash :

Cette configuration devient laborieuse si vous utilisez l’option -r afin de supprimer toute unearborescence ou un grand nombre de fichiers à l’aide des caractères joker. Vous pouvezremplacer l’alias en spécifiant le chemin complet de rm (/bin/rm) lorsque vous saisissez lacommande.

Lorsque vous forcez le système à demander confirmation avant de supprimer les fichiers,vous implémentez certes une mesure préventive utile, mais vous ne facilitez en aucun cas larécupération des fichiers supprimés. Pour cela, vous devez reproduire le comportement descorbeilles dans un environnement graphique : au lieu de supprimer des fichiers avec rm, vousles déplacez dans un répertoire de stockage à l’aide de mv. Vous pouvez alors vider tout ledossier à votre convenance. En fait, si vous utilisez un shell de commandes et un environne-ment graphique comportant une corbeille, vous pouvez vous servir du même répertoire pourles deux.

Si vous (ou vos utilisateurs) connaissez déjà rm, vous éprouverez peut-être quelques diffi-cultés à renoncer à cette commande pour mv. En outre, il est facile d’oublier combien defichiers ont été déplacés dans le répertoire corbeille et de remplir ainsi le disque. Pour remé-dier à ce problème, il suffit d’écrire un petit script qui prend la place de rm, mais déplace lesfichiers vers le répertoire corbeille. Ce script peut également supprimer des fichiers précédantune date donnée ou bien lorsque le répertoire de la corbeille a atteint un nombre de fichiersmaximum. Vous avez la possibilité de créer une tâche cron destinée à supprimer périodique-ment les fichiers du dossier corbeille. saferm, disponible sur http://myocard.com/sites/linker/pages/linux/saferm.html, présente un script prévu à cet effet. Pour utiliser saferm, ou un scriptsimilaire, installez-le à la place de la commande régulière rm, créez un alias permettantd’appeler le script à la place de rm ou de l’appeler par son véritable nom. Par exemple, l’aliassuivant fonctionnerait :

alias rm='rm -i'

alias rm='saferm'

Page 25: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux340

Copyright ©

2004 Groupe E

yrolles

Le script saferm demande confirmation avant de supprimer des fichiers, mais vous pouvezéliminer cette étape en remplaçant la ligne read answer par answer=A et en ajoutant le symboledu commentaire devant les lignes echo qui précèdent (consultez le chapitre 4 pour plusd’informations sur la création ou la modification de scripts shell comme saferm). Le scriptutilise un dossier corbeille dans le répertoire personnel de l’utilisateur, ~/.trash. Lorsqueles utilisateurs veulent récupérer des fichiers « supprimés », ils n’ont plus qu’à les sortir de~/.trash. Ce script spécifique n’essaie pas de vider la corbeille. Les utilisateurs doivent doncs’en charger via la commande rm ou une tâche cron.

Outils de récupération de fichiersLes utilitaires de récupération de fichiers Linux sont rares. La philosophie de Linux veut queles utilisateurs suppriment un fichier uniquement lorsqu’ils sont parfaitement sûrs de vouloirs’en débarrasser, et après avoir fait une sauvegarde. Dans le pire des cas, quelques astucesvous permettent de récupérer des fichiers supprimés accidentellement.

Dans cette optique, l’utilitaire recover (http://recover.sourceforge.net/linux/recover/), disponibleavec la plupart des distributions Linux, vous aidera à récupérer vos fichiers. Malheureuse-ment, cet outil présente plusieurs inconvénients. Tout d’abord, il a été conçu pour ext2fs et nefonctionne pas avec la plupart des systèmes de fichiers journalisés (sauf peut-être avecext3fs). Ensuite, recover met un temps infini à travailler, même sur de petites partitions.D’ailleurs, il m’est souvent arrivé de planter des programmes réseau, par exemple les naviga-teurs Internet et les clients d’e-mail quand recover fonctionne. Enfin, recover est connu pourson manque de fiabilité. Par exemple, si vous saisissez recover /dev/sda4 pour récupérer desfichiers sur /dev/sda4, le programme va peut-être mouliner quelque temps, accaparer presquetout le processeur, puis renvoyer le message Terminated. En résumé, malgré les problèmesqu’il crée, recover peut vous dépanner en désespoir de cause. Le cas échéant, je vous conseillede commencer par fermer tous les programmes liés au réseau dont vous n’avez pas une utilitéabsolue.

Une autre méthode de récupération des fichiers consiste à utiliser grep afin de rechercher letexte d’un fichier. Cette procédure fonctionne uniquement avec des fichiers texte. En outre,même dans ce cas, seule une partie de fichier est renvoyée, ou bien un fichier entouré de texteou de données binaires. Pour utiliser cette méthode, tapez une commande similaire à lasuivante :

INFO Les accès aux disques de bas niveau requièrent des privilèges complets de lecture (et parfoisd’écriture) sur la partition concernée. Théoriquement, seul root bénéficie de ce niveau d’accèsaux disques durs, même si les utilisateurs ordinaires peuvent disposer de ce type d’accès avecles disquettes. Par conséquent, seul root est généralement autorisé à récupérer des fichiers debas niveau.

# grep -a -B5 -A100 "Cher Sénateur Martin" /dev/sda4 > recuperation.txt

Page 26: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

341

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

Cette commande recherche le texte Cher Sénateur Martin sur /dev/sda4 et renvoie les cinqlignes (-B5) précédant cette chaîne, ainsi que les 100 lignes (-A100) qui la suivent. L’opérateurde redirection stocke les résultats dans le fichier recuperation.txt. Étant donné que cetteopération implique une recherche au niveau de tout le disque, elle est relativement longue.Pour accélérer les choses, vous pouvez toujours omettre l’opérateur de redirection et coller leslignes issues de la fenêtre xterm dans un éditeur de texte. Vous pouvez ainsi appuyer surCtrl+C pour annuler l’opération une fois le fichier trouvé. Il est également possible d’utiliserscript afin de lancer un nouveau shell destiné à copier la sortie dans un fichier, cela vousévite de copier le texte dans un éditeur. Cette méthode fonctionne avec tous les systèmes defichiers. Cependant, si le fichier est fragmenté, elle ne renvoie qu’une partie de celui-ci. Sivous avez mal évalué la taille du fichier en lignes, vous obtenez uniquement une partie dufichier, ou bien plus de données que nécessaire (généralement des données binaires avant,après, voire dans le fichier cible).

Restaurer des fichiers depuis une sauvegardeLe chapitre 17, « Protéger son système grâce aux sauvegardes » décrit les procédures desauvegarde du système. Il comprend également des informations sur les procédures de récu-pération d’urgence (restauration partielle ou totale d’un système opérationnel à partir d’unesauvegarde). Ces procédures prennent toute leur importance après un crash disque, un échec,une faille de sécurité ou une bévue d’administration ayant provoqué de sérieux dégâts. Lessauvegardes du système sont également très utiles pour restaurer des fichiers supprimés acci-dentellement. Cependant, si vos sauvegardes sont rares, vous risquez de récupérer un fichierne correspondant pas tout à fait à celui que vous avez perdu. Même si vous faites des sauve-gardes quotidiennes, cette procédure est inutile si un utilisateur crée un fichier, le supprimepresque aussitôt, puis veut le récupérer dans l’instant qui suit. Pour résumer, la solution idéalereste l’utilitaire de corbeille.

Supposons que vous souhaitiez créer des sauvegardes sur bande avec tar. Vous pouvezensuite récupérer les fichiers de cette sauvegarde via la commande --extract (-x). En règlegénérale, vous appliquez également l’option --verbose (-v) pour connaître le moment où lefichier a été restauré. Vous utilisez en outre --fichier (-f) pour pointer vers le fichier de péri-phérique de bande. Vous devez également passer le nom du fichier à restaurer :

Cette commande récupère le fichier home/julia/flute.txt sur le lecteur de bande /dev/st0.Quelques points de cette commande méritent d’être vus en détail :

• Permissions – L’utilisateur qui lance cette commande doit disposer des droits de lecture/écriture sur le lecteur de bande. Il doit également avoir des droits d’écriture dans le réper-toire où le fichier sera restauré (il s’agit en général du répertoire actif). En toute logique,root est donc chargé de lancer cette commande, même si d’autres utilisateurs disposent

# tar -xvf /dev/st0 home/julia/flute.txt

Page 27: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Accroître les performances d'un système Linux342

Copyright ©

2004 Groupe E

yrolles

de privilèges suffisants sur certains systèmes. Le propriétaire et les permissions du fichierrestauré peuvent changer si un utilisateur autre que root lance la commande.

• Spécification du nom de fichier – La commande précédente n’a pas mentionné la barreoblique initiale (/) du nom de fichier (home/julia/flute.txt), car tar le supprimelorsqu’il écrit des fichiers ; inutile donc de la spécifier pour les fichiers à restaurer.Certains utilitaires et méthodes de création de sauvegarde ajoutent ./ au début du nom defichier. Si votre sauvegarde prend cette fonctionnalité en charge, vous devrez l’ajouterdans la spécification du nom de fichier afin de restaurer ce dernier.

• Restauration du dossier – tar restaure théoriquement les fichiers dans le répertoireactif. Si vous tapez la commande que nous venons de voir alors que vous êtes dans /root,vous obtiendrez un fichier /root/home/julia/flute.txt (en supposant qu’il soit sur labande). Je vous conseille d’effectuer vos opérations de restauration dans un sous-réper-toire vide, puis de déplacer le fichier restauré vers son emplacement final : vous réduirezainsi les risques de fautes de frappe dans le fichier cible et d’écrasement d’un fichier plusrécent par l’ancien, voire d’écrasement de toute l’installation de Linux avec la sauve-garde.

Malheureusement, tar demande la saisie du nom de fichier complet (chemin inclus) pour larestauration. Si vous ignorez le nom exact du fichier, vous pouvez tentez d’extraire un réper-toire de la bande en tapant tar tvf /dev/st0 (en remplaçant par un autre périphérique debande si nécessaire). Si nécessaire, passez less ou grep au résultat afin de vous aider à trouverle nom de fichier exact ou d’être redirigé vers un fichier susceptible d'être recherché.

En résuméComme tout système d’exploitation, Linux repose sur ses systèmes de fichiers, ext2 étantdepuis longtemps installé en standard. Cependant, avec le développement des noyaux 2.4.x,de nouveaux systèmes de fichiers journalisés ont fait leur apparition. Ceux-ci vous proposentplusieurs options dont le rôle varie de façon subtile : utilisation de l’espace disque par lesdifférent types de fichiers, gestion de listes de droits d’accès, etc. La plupart des systèmesfonctionnent correctement quel que soit le système de fichiers choisi. Cela étant dit, si vousattachez une importance particulière aux performances du disque, il est conseillé d’étudier lesdifférentes options proposées afin de choisir celles qui conviennent le mieux à vos besoins.Vous pouvez également optimiser les systèmes de fichiers de plusieurs manières, des options

ASTUCE Vous pouvez conserver une archive des fichiers sur une bande au moment de la sauvegardeafin de simplifier les recherches lors de la restauration. Pour cela, utilisez l’option --verbose etredirigez les résultats vers un fichier. De plus, certaines méthodes de sauvegarde incrémentalestockent automatiquement des informations sur le contenu de la sauvegarde. Des outils desauvegarde, comme le logiciel commercial Backup/Recover Utility (BRU, http://www.bru.com),stockent un index des fichiers sur la bande. Celui-ci vous permet alors de rechercher rapidementdes données et de choisir les fichiers à restaurer.

Page 28: RODERICK Accroître les performances d’un système Linux · 12 Systèmes de fichiers et fichiers Toute opération effectuée sous Linux implique des fichiers, d’une manière ou

Systèmes de fichiers et fichiersCHAPITRE 12

343

Cop

yrig

ht ©

200

4 G

roup

e E

yrol

les

disponibles au moment de la création du système de fichiers à la défragmentation, en passantpar le redimensionnement des systèmes de fichiers. Malheureusement, les systèmes defichiers ne sont pas toujours totalement fiables. Ils sont parfois corrompus et vous devez alorsintervenir à l’aide de divers outils. En outre, vous n’êtes pas à l’abri d’un utilisateur quisupprime accidentellement des fichiers. La récupération de ces derniers est alors loin d’êtreaisée, même si vous avez anticipé le problème en installant des utilitaires de corbeille et eneffectuant des sauvegardes régulières.