LPI-101-2-4
Un article de RotomaLUG.
| Frontal web | Wiki accueil | Les forums | La galerie | La liste LUG | La liste INSTALL PARTY |
Site original
http://www.gentoo.org/doc/en/articles/lpi-101-advanced-p4.xml
Participer à la traduction
Pour participer aux traductions vous devez tout d'abord :
- vous inscrire sur le wiki (Pour créer un compte sur ce wiki, envoyez nous un courrier en suivant ce lien [1] )
- suivre au maximum le petit guide du traducteur
- nous contacter (via l'adresse info@rotomalug) pour l'organisation du travail
Notes de version
Date de version :
- EricDeschamps 4 février 2008 à 19:05 (CET)
- Aurelien 3 mars 2007 à 23:34 (CET)
Avancement : 75%
Note de licence : ce document est mis sous licence Creative Commons, pour respecter la licence du document original.
Avertissement
La version originale de ce document était publiée sur IBM developerWork et est la propriété de Westtech Information Services. Ce document est une version mise à jour de l'article d'origine et contient quelques améliorations de l'équipe de documentation Gentoo mais n'est pas maintenu à jour.
LPI certification 101 (version 2) préparation à l'examen, Partie 4 - traduction
Avant de commencer
A propos de ce document
Voici Administration avancée, dernier des 4 travaux dirigés destinés à vous préparer au certifications LPI 101 version 2. Dans ce TD, nous renforcerons vos compétences pour l'administration avancée sous Linux en couvrant des domaines comme les systèmes de fichiers, le processus de démarrage de Linux, les niveaux de fonctionnement (runlevel), les quotas de système de fichiers et les journaux systèmes.
Ce TD est particulièrement utile pour une personne qui occuperait le poste d'administrateur système pour la première fois, parce que nous y voyons un certain nombre de problèmes de bas niveau que tous les administrateurs Linux devraient connaître. Si vous commencez sous Linux, nous vous recommandons de suivre les TDs à partir du premier. Certains découvriront la plupart des éléments de ce cours alors que pour les utilisateurs Linux avancés ce sera l'occasion de réviser leurs compétences et de préparer la certification LPI.
A la fin de cette série de TD (8 en tout couvrant les examens pour les LPI 101 et 102), vous le niveau pour être Administrateur Système Linux et serez prêt à obtenir une certification LPI de niveau 1 si vous le souhaitez.
Pour ceux qui ont suivi la première version de ce document pour une raison autre que la préparation des certifications LPI, vous n'êtes pas obligé de suivre celui-ci. Par contre, si vous souhaitez passer les examens, vous devriez le lire.
Le logo LPI est une marque déposée du Linux Professsional Institute.
A propos des auteurs
Note du traducteur : reprise depuis le LPI-101-2-2
Daniel Robbins réside à Albuquerque, nouveau Mexique et est le créateur de la distribution Gentoo Linux une distribution Linux avancée basée sur les ports (au sens BSD). Il écrit également des articles, tutoriels ou conseils pour IBM developerWorks Linux zone et Intel Developer Services et a également contrbué à plusieurs livres comme Samba Unleashed et SuSE Linux Unleashed. Daniel apprécie de passer son temps libre avec sa femme, Mary et sa fille Hadassah. Vous pouviez contacter Daniel à drobbins _CHEZ_ gentoo _POINT_ org.
Note du traducteur : voir également le contenu actuel du Wikipedia sur l'auteur, plus à jour :
Créateur en 2002 de la distribution GNU/Linux Gentoo et fondateur de la fondation Gentoo. Le 26 avril 2004, il quitte le projet pour passer plus de temps avec sa famille. Du 13 juin 2005 au 9 janvier 2006, il rejoint Microsoft, expliquant qu'il souhaitait aider Microsoft à comprendre l'Open Source et les projets communautaires. Avant de quitter gentoo, il a transféré toute propriété intellectuelle de Gentoo vers la fondation Gentoo. Le 9 janvier 2006, il quitte Microsoft.
Chris Houser, connu par ses amis comme "Chouser", est un partisan d'UNIX depuis 1994 alors qu'il rejoint l'équipe d'administration à l'université Taylor dans L'Indiana, où il a obtenu son baccalauréat en informatique et mathématique. Depuis, il travaille dans la programmation d'applications Web, d'interfaces homme-machine, logiciels vidéo professionnels, et maintenant dans la programmation de pilotes UNIX pour Tru64 chez Compaq. Il a aussi contribué à divers projets libres et plus particulièrement Gentoo. Il vit avec sa femme et ses deux chats dans le New Hampshire. Vous pouvez le contacter à chouser _CHEZ_ gentoo _POINT_ org .
Aron Griffis est titulaire d'un diplôme d'informatique de l'université Taylor et d'une distinction qui le désigne : "Futur fondateur d'une communauté utopienne UNIX". Il travaille dans ce but. Aron est employé par la société Compaq afin de programmer des pilotes de cartes réseau pour UNIX Tru64, et il partage son temps avec entre jouer des airs au piano et développer pour Gentoo Linux. Il vit avec sa femme Amy, qui est elle aussi ingénieur UNIX à Nashua dans le New Hampshire
Systèmes de fichiers, partitions et périphériques blocs
Introduction aux périphériques de type bloc
Dans cette partie nous allons faire le tour de tout ce qui touche aux disques, c'est à dire les systèmes de fichiers, les partitions, et les périphériques bloc. Une fois que vous connaîtrez ces bases, nous vous indiquerons comment mettre en place vos partitions et vos systèmes de fichiers sous Linux.
Pour commencer, je vais vous parler des périphériques blocs. Le plus célèbre est sans doute celui qui représente le premier disque dur IDE sur un système Linux :
/dev/hda
Si vous utilisez plutôt des disques SCSI, alors votre premier disque sera :
/dev/sda
Couche d'abstraction
Les fichiers de périphériques bloc ci-dessus représentent une couche d'abstraction pour l'accès aux disques. Les programmes utilisateurs peuvent utiliser ces fichiers pour interagir avec votre disque sans se préoccuper de savoir si c'est un disque IDE, SCSI ou autre. Le programme se contente d'adresser les données sur le disque sous la forme de paquets de 512 octets accessibles aléatoirement.
Partitions
Sous Linux, nous créons des systèmes de fichiers en utilisant une commande particulière comme mkfs (ou mke2fs, mkreiserfs, etc.), en indiquant en argument le fichier périphérique.
Cependant, même s'il est possible théoriquement d'utiliser le disque dans son ensemble comme périphérique bloc, comme /dev/hda ou /dev/sda pour héberger un système de fichier, on ne le pratique presque jamais. Les disques sont découpés en plusieurs périphériques bloc, plus petits et plus faciles à gérer; On créé les partitions en utilisant un outil comme fdisk, qui permet de créer et d'éditer la table de partitions d'un disque. La table des partitions décrit exactement comment le disque est découpé.
Introduction à fdisk
Pour étudier la table de partitions d'un disque nous pouvons utiliser fdisk en lui donnant le périphérique bloc correspondant à un disque en argument.
Note : il y a d'autres interfaces pour étudier et modifier les tables de partition comme cfdisk, parted et partimage. Je vous recommande de ne pas utiliser fdisk (malgré ce que la mage de man de fdisk dit) parce qu'il lui arrive de mal calculer la géométrie des disques.
Utiliser fdisk sur un disque IDE
# fdisk /dev/hda
Utiliser fdisk sur un disque SCSI
# fdisk /dev/sda
Attention : vous ne devriez pas enregistrer ou modifier une table de partitions si un au moins une des partitions est utilisée (montée) ou si elle contient des données importantes. En le faisant vous risqueriez de perdre des données.
Utilisons fdisk
Une fois sous fdisk, vous arrivez à l'invite suivante :
Command (m for help):
Tapez p pour afficher la table des partitions actuelle.
Command (m for help): p Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders Units = cylinders of 15120 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 1 14 105808+ 83 Linux /dev/hda2 15 49 264600 82 Linux swap /dev/hda3 50 70 158760 83 Linux /dev/hda4 71 2184 15981840 5 Extended /dev/hda5 71 209 1050808+ 83 Linux /dev/hda6 210 348 1050808+ 83 Linux /dev/hda7 349 626 2101648+ 83 Linux /dev/hda8 627 904 2101648+ 83 Linux /dev/hda9 905 2184 9676768+ 83 Linux Command (m for help):
Ce disque est découpé en 7 systèmes de fichiers Linux (chacun sur partitions listée comme "Linux") et une partition d'échange (indiquée comme "Linux swap").
un mot sur les périphériques bloc et les partitions
Remarquez sur la gauche le nom des périphériques bloc correspondant aux partitions, en partant de /dev/hda1 jusqu'à /dev/hda9. Au début des PCs, les programmes de partitionnement n'e permettaient de créer que 4 partitions au maximum (appelées partitions primaires). C'était trop contraignant donc une solution pour contourner le problème a été trouvée : les partitions étendues.Une partition étendue est proche d'une partition primaire et est comprise dans les 4 partitions primaires. Cependant les partitions étendues peuvent contenir n'importe quel nombre de partitions logiques, ce qui permet de contourner la limite des 4 partitions.
Un peu plus sur les partitions
Toutes les partitions à partir de hda5 et ensuite sont des partitions logiques. Les nombres 1 à 4 sont réservés pour les partitions primaires ou étendues.
Dans notre exemple, les partitions hda1 à hda3 sont des partitions primaires, hda4 est une partition étendue qui contient les partitions logiques hda5 à hda9. Dans ce cas hda4 ne peut contenir un système de fichiers directement, il n'est utilisé que comme conteneur des partitions logiques
Les types de partition
De plus, on peut remarquer que chaque partition a un "Id", aussi appelé type de partition. Dès lors que vous créez une partition, vous devez vous assurer que le type de partition est correctement configuré. 83 est le bon type de partition pour accueillir un système de fichiers Linux, et 82 est celui adapté pour les partitions de type Swap Linux. Vous choisissez le type de partition en utilisant l'option t de fdisk. Le kernel Linux utilise le type de partition en détectant automatiquement les systèmes de fichier et le swap au démarrage.
Utiliser fdisk pour configurer une partition
Maintenant que nous avons découvert la façon dont le partitionnement est fait sous Linux, il est temps de voir comment procéder pour partitionner le disque et le système de fichier pour une nouvelle installation de Linux. Lors de cette étape, nous configurerons un nouveau disque en créant un système de fichier dessus. Ces étapes nous conduirons à un disque parfaitement propre, sans données dessus qui pourra être utilisé comme base de départ pour une nouvelle installation Linux.
Important : pour les étapes suivantes, vous devez avoir un disque dur qui ne contient aucune donnée importante, puisque ces étapes vont effacer toutes les données sur votre disque. Si c'est une découverte pour vous, peut être voudrez vous simplement lire ce document, ou utiliser un système Linux sur une machine de test qui ne risque rien.
A quoi ressemblera un disque partitionné
Après avoir suivi le processus de création des partitions sur votre disque, voici à quoi ressemblera votre configuration :
Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System /dev/hda1 * 1 14 105808+ 83 Linux /dev/hda2 15 81 506520 82 Linux swap /dev/hda3 82 3876 28690200 83 Linux
Command (m for help):
Commentaire sur cet exemple de partitionnement
Dans le partitionnement suggérée pour un débutant, nous avons trois partitions. La première (/dev/hda1) au début du disque est une petite partition appelée partition de démarrage. Son but est de contenir toutes les informations critiques relatives au démarrage -- les informations du chargeur de démarrage GRUB (si vous utilisez GRUB), ainsi que les informations sur le(s) noyau(x) Linux. La partition de démarrage est donc un endroit sûr où stocker toutes les informations liées au démarrage de Linux. Dans un usage qutidien de Linux, votre partition de démarrage devrait rester démontée pour des raisons de sécurité. Si vous configurez un système SCSI, votre partition de démarrage devrait être /dev/sda1.
Il est recommandé d'avoir une partition de démarrage (contenant tout ce qu'il faut pour le chargeur de démarrage) au début du disque. Bien que ce ne soit plus nécessaire, cette tradition vient de l'époque où le chargeur de démarrage LILO n'était pas capable de charger des noyaux sur un système de fichier au delà du cylindre 1024.
La deuxième partition (/dev/hda2) est utilisée pour le swap. Le noyau utilise l'espace de swap comme de la mémoire virtuelle, lorsque la RAM devient insuffisante. Cette partitionest relativement peu importante, typiquement environ 512 MB. Si vous configurez un système SCSI, cette partition sera appelée /dev/hda2.
La troisième partition (/dev/hda3) est assez importante et occupe le reste du disque. Cette partition est appelée la partition racine, et sera utilisée pour stocker le système de fichier principal, qui contient le système de fichier Linux. Sur un système SCSI, cette partition sera appelée /dev/hda3.
Commençons
Maintenant nous allons créer les partitions comme dans l'exemple qui précède. D'abord, utilisons fdisk en tapant fdisk /dev/hda ou fdisk /dev/sda suivant que vous disposiez d'un disque IDE ou SCSI (et SATA). Ensuite tapez p pour afficher la table des partitions actuelle. Souhaitez-vous conserver des données sur ce disque ? Si oui, n'allez pas plus loin pour le moment parce que toutes les données de votre disque seront écrasées.
Important : Si vous suivez les instructions qui suivent, vous perdrez toutes les données de votre disque. S'il y a quelque chose sur votre disque, vérifiez qu'il ne s'agit pas de données critiques. Vérifiez également que vous ne vous êtes pas trompé de périphérique afin d'éviter de détruire des données sur le mauvais disque.
Détruire les partitions existantes
Maintenant nous allons supprimer les partitions existantes. Pour ce faire, tapez d puis entrée. fdisk vous demande le n° de la partition à supprimer. Pour supprimer la partition /dev/hda1 vous feriez :
Command (m for help): d Partition number (1-4): 1
La suppression de la partition est programmée. Si vous tapez p, vous ne la verrez plus, mais elle n'est pas détruite réellement tant que vous n'avez pas inscrit vos modifications sur le disque. Si vous vous êtes trompé et que vous souhaitez annuler sans sauvegarder vos modifications, tapez q suivit d'entrée et votre partition ne sera pas détruite.
Maintenant, imaginons que vous souhaitez effacer toutes les partitions de votre disque, utilisez p pour afficher la liste des partitions puis d pour les supprimer une par une. Éventuellement, vous vous retrouverez avec une table des partitions vierge comme celle-ci :
Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id System Command (m for help):
Création de la partition boot
Désormais la table des partitions du disque en mémoire est vide. Nous pouvons donc créer la partition /boot. Tapez n pour créer une nouvelle partition puis p pour indiquer à fdisk que vous souhaitez que cette partition soit primaire. Ensuite, tapez 1 pour créer la première partition primaire. Lorsque fdisk vous demande le premier cylindre choisi pour cette partition, appuyez sur entrée. Pour le dernier cylindre de cette partition, écrivez +100M pour créer une partition de 100 Mo. Voici ce que ça donne :
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-3876, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +100M
Maintenant, affichez la table en tapant p. Voici ce que vous devriez obtenir :
Command (m for help): p Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id System /dev/hda1 1 14 105808+ 83 Linux
Création de la partition swap
Ensuite nous allons créer la partition swap. Tapez n pour créer une nouvelle partition, puis p pour qu'elle soit primaire. Ensuite, tapez 2 pour créer la deuxième partition primaire, dans notre cas /dev/hda2. Lorsque fdisk vous demande le premier cylindre, appuyez sur entrée. Pour le dernier cylindre, tapez +512M pour créer une partition de 512Mo. Après cela, tapez t pour choisir le type de partition puis 82 pour le placer sur "linux swap". Affichez la table des partitions en tapant p :
Command (m for help): p Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id System /dev/hda1 1 14 105808+ 83 Linux /dev/hda2 15 81 506520 82 Linux swap
Rendre une partition bootable
Pour finir, nous devons placer le drapeau "bootable" (NdT : ce qui signifie qu'on peut démarrer dessus) sur la partition boot et inscrire nos modifications sur le disque. Pour marquer la partition /dev/hda1 "bootable", tapez a puis 1 comme n° de partition. Si vous tapez p pour afficher la table, vous verrez qu'il y a un "*" dans la colonne boot pour /dev/hda1. Maintenant, inscrivons nos modifications sur le disque. Tapez w puis entrée; Vos partitions Linux sont maintenant prêtes pour installer Linux. (NdT : enfin il manque la partition racine ici quand même).
Note : Su fdisk vous demande de redémarrer, faites-le pour que votre système détecte votre nouvelle table de partitions.
Partitions logiques et étendues
Dans l'exemple précédent, nous avons créé une partition primaire unique qui contient un système de fichier qui stockera toutes les données de notre système. Cela signifie qu'une fois Linux installé, le système de fichier principal sera monté sur "/" et contiendra une arborescence de répertoires dans lesquels se trouveront tous les fichiers du système.
Bien que cette méthode d'installation soit assez commune, vous devriez vous familiariser avec une autre approche. Dans cette approche nous utilisons plusieurs partitions qui hébergent plusieurs systèmes de fichiers et qui sont liés entre eux pour former un arbre de système de fichiers cohérent. Par exemple, il est courant de placer /home et /var sur leur propre système de fichier.
Nous aurions pu placer hda2 dans une partition étendue au lieu d'une partition primaire. Ainsi, nous aurions créé les partitions logiques hda5, hda6 et hda7 (qui seraient techniquement parlant contenues dans hda2), qui hébergeraient respectivement /, /home et /var (NdT : mais où est passé la partition swap dans ce cas ;) ?).
Vous pouvez en apprendre un peu plus sur les configurations à multiples systèmes de fichiers en consultant les ressources présentées dans le prochain paragraphe.
Ressources sur le partitionnement
Pour plus d'informations sur les partitions, jetez un œil sur les documentations suivantes :
- Partition planning tips (en)
- Partitioning in action: consolidating data (en)
- Partitioning in action: moving /home (en)
Création des systèmes de fichiers
Maintenant que nos partitions sont créées, il est temps de mettre en place les systèmes de fichiers sur les partitions boot et racine de façon à ce qu'on puisse les monter et mettre nos données dessus. Nous allons également configurer la partition swap pour qu'elle serve d'espace de mémoire paginée.
Linux gère une assez large variété de systèmes de fichiers. Chaque type de système a ses défauts et ses qualités ainsi que ses caractéristiques. Nous allons voir la création des systèmes de fichiers ext2, ext3, XFS, JFS et ReiserFS. Avant de les créer, nous allons brièvement faire le tour des systèmes de fichiers disponibles sous Linux. Nous entrerons dans les détails un peu plus tard.
Ext2
Ext2 est le système de fichiers historique de Linux, mais il ne gère pas les informations de journalisation, ce qui signifie que les vérifications de routine du système de fichier au démarrage du système sont assez longues. Il y a désormais quelques systèmes de fichiers de nouvelle génération dont la vérification est particulièrement rapide grâce à la journalisation et qu'on aura tendance à préférer. Les systèmes de fichiers journalisés évitent d'attendre longtemps quand vous démarrez votre système et qu'un système de fichier est en mauvais état.
Ext3
Ext3 est la version journalisée d'Ext2. Il fournit des méta-données de journal pour une récupération rapide ainsi que d'autres modes de journalisation évolués, comme la journalisation de données complètes ou ordonnées (***traduction ~***). Ext3 est un système de fichier très fiable et très bon. Il offre des performances décentes dans presque toutes les conditions. Son fonctionnement interne utilise assez peu les "arbres", ce qui signifie qu'il n'est pas pas le choix idéal pour les systèmes de fichiers très grands ou lorsque vous allez gérer des fichiers très gros ou au contraire de très nombreux fichiers dans un répertoire. En dehors de cela, c'est un excellent système de fichiers.
Une bonne chose pour ext3 c'est que vous pouvez facilement transformer un système de fichiers ext2 existant en ext3. La méthode de mise à jour d'un système Linux qui utilise ext2 est donc très facile.
ReiserFS
ReiserFS est un système de fichier basé sur b-tree qui a de bonnes performances générales et qui dépasse largement ext2 et ext3 lorsqu'il s'agit de gérer des petits fichiers (plus petits que 4ko), souvent avec un facteur x10 ou x15. ReiserFS gère très bien les montées en charge ( *** traduction de scale = évolution ??? ***) et gère les méta-données de journalisation. Depuis les noyaux 2.4.18+, ReiserFS est particulièrement fiable et particulièrement recommandé, que ce soit pour une utilisation classique comme pour des cas extrêmes comme la création de systèmes de fichiers très grands, l'utilisation de nombreux petits fichiers, de très gros fichiers, et de répertoires contenant des dizaines de milliers de fichiers. ReiserFS est le système de fichier que nous recommandons par défaut pour toutes les partitions sauf boot.
XFS
XFS est un système de fichiers qui gère les méta-données de journalisation. Il est fourni avec une série de fonctionnalités de robustesse et est optimisé pour les montées en charge. Nous ne recommandons d'utiliser ce système de fichiers sur Linux que si vous disposez de supports de stockage SCSI très performants ou liés en fibre optique et d'un système empêchant les coupures d'alimentation électrique (NdT : onduleur et alimentation redondante par exemple). XFS utilise énormément le cache en mémoire des données en transit, ce qui fait que des programmes mal conçus (ceux qui ne prennent pas de précautions quand ils inscrivent des données sur le disque, et il y en a un certain nombre) peuvent perdre un bon bout de leur données si votre machine s'arrête sans prévenir.
JFS
JFS est le système de fichier journalisé d'IBM. Il n'est prêt à la production que depuis peu et nous préférons attendre quelques temps les retours pour le conseiller ou le déconseiller sur sa stabilité.
Recommandations sur les systèmes de fichiers
Si vous recherchez le système de fichiers journalisé le plus simple (***rugged ?? ***), utilisez ext3. Si vous recherchez un système de fichiers bon, pour une utilisation générale, disposant de bonnes performances et avec la journalisation, utilisez ReiserFS ; ext3 et ReiserFS sont tous deux murs, raffinés et recommandés pour une utilisation courante.
Si on se base sur l'exemple précédent, voici les commandes que nous tapons pour initialiser nos partitions :
# mke2fs -j /dev/hda1 # mkswap /dev/hda2 # mkreiserfs /dev/hda3
Nous choisissons ext3 pour notre partition boot parce que c'est un système de fichiers robuste géré par les principaux chargeurs de démarrage (NdT : Lilo, grub, etc.). Nous avons utilisé mkswap pour /dev/hda2 -- choix évident ici. Et pour notre système de fichiers racine sur /dev/hda3 nous avons choisi ReiserFS parce que c'est un système de fichiers journalisé très performant. Maintenant, initialisez vos partitions.
Formatage de la partition de swap
mkswap est la commande utilisée pour formater les partitions swap :
# mkswap /dev/hda2
Contrairement aux systèmes de fichiers, les partitions swap ne sont pas montées. Pour les utiliser, nous utilisons la commande swapon :
# swapon /dev/hdc6
Les scripts de démarrage de votre système Linux vont activer automatiquement votre partition de swap. Par conséquent, on n'utilise la commande swapon que lorsque vous avez besoin d'utiliser une partition de swap qui vient d'être créée. Vous pouvez voir quelles partitions de swap sont activées en tapant la commande cat /proc/swaps
Création des systèmes de fichiers ext2, ext3 et ReiserFS
Vous pouvez utiliser la commande mke2fs pour créer les systèmes de fichiers ext2 :
# mke2fs /dev/hda1
Si vous préférez utiliser ext3, utilisez la commande mke2fs -j :
# mke2fs -j /dev/hda3
Note : pour en savoir plus sur l'utilisation d'ext2 et ext3, visitez le site d'Andrew Morton : http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html
Pour créer un système de fichier ReiserFS, utilisez la commande mkreiserfs :
# mkreiserfs /dev/hda3
Création des systèmes de fichiers XFS et JFS
Pour créer un système de fichiers XFS, utilisez la commande mkfs.xfs :
# mkfs.xfs /dev/hda3
Note : vous devriez ajouter à cette commande les options suivantes : -d agcount=3 -l size=32m. L'option -d agcount=3 diminuera le nombre de groupes d'allocation (NdT ???). XFS insistera pour utiliser au moins 1 groupe d'allocation pour 4 Go. Par execmple, pour une partition de 20 Go, vous avez besoin au minimum de 5 pour agcount. L'option l size=32m augmentera la taille du journal à 32 Mo, ce qui améliore les performances.
Pour créer une partition JFS, utilisez la commande mkfs.jfs :
# mkfs.jfs /dev/hda3
Montage des systèmes de fichiers
Une fois le système de fichiers créé, nous pouvons le monter en utilisant la commande mount :
# mount /dev/hda3 /mnt
Pour monter un système de fichier, spécifiez le fichier périphérique de la partition et le point de montage en deuxième argument. Le système de fichier sera "greffé" sur le point de montage. Cela aura également pour effet de masquer les fichiers présents dans le répertoire /mnt sur le système de fichier parent. Plus tard, lorsque vous démonterez le système de fichier de /dev/hda3, ces fichiers réapparaîtront. Une fois la commande mount exécutée, tous les fichiers créées ou copiés dans /mnt seront sur votre nouvelle partition ReiserFS.
Disons que nous souhaitons monter notre partition boot sur dans /mnt. Nous pourrions le faire ainsi :
# mkdir /mnt/boot # mount /dev/hda1 /mnt/boot
Maintenant, nous pouvons accéder à notre partition (NdT : j'en ai marre d'écrire système de fichier, c'est super long !) boot via /mnt/boot. Si nous créons des fichiers dans /mnt/boot, ils seront stockés sur notre système de fichier ext3 qui se trouve sur /dev/hda1. Si nous créons in fichier dans /mnt mais pas /mnt/boot il sera stocké sur notre système de fichiers ReiserFS, c'est à dire physiquement sur /dev/hda3. Et si nous créons des fichiers en dehors de /mnt, ils ne seront stockés sur le système de fichiers de notre système actuel.
Pour voir quels systèmes de fichiers sont montés, tapez mount tout court (NdT :c'est à dire sans "tout court", mount, quoi). Voici ce que m'affiche mount sur une de nos machines, qui est configurée comme dans l'exemple ci-dessus :
/dev/root on / type reiserfs (rw,noatime) none on /dev type devfs (rw) proc on /proc type proc (rw) tmpfs on /dev/shm type tmpfs (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) /dev/hde1 on /boot type ext3 (rw,noatime)
Vous pouvez également voir ces informations en tapant cat /proc/mounts. Le système de fichier racine (root) /dev/hda3 est monté automatiquement au démarrage par le noyau et prend le nom symbolique /dev/hda3. Sur notre système, /dev/hda3 et /dev/root pointent sur le même périphérique bloc via un lien symbolique :
# ls -l /dev/root lr-xr-xr-x 1 root root 33 Mar 26 20:39 /dev/root -> ide/host0/bus0/target0/lun0/part3 # ls -l /dev/hda3 lr-xr-xr-x 1 root root 33 Mar 26 20:39 /dev/hde3 -> ide/host0/bus0/target0/lun0/part3
Encore plus de choses sur le montage
Mais à quoi correspond ce fichier /dev/ide/host0.... ? Des systèmes comme le mien qui utilisent devfs comme gestionnaire de périphériques pour le système de fichier /dev ont des noms officiels plus longs pour la partition et pour les fichiers de périphériques que ce que Linux avait l'habitude d'avoir par le passé. Par exemple, /dev/ide/host0/bus1/target0/lun0/part7 est le nom officiel pour /dev/hdc7, et /dev/hdc7 est en fait un lien symbolique qui pointe vers le fichier de périphérique officiel. Vous pouvez déterminer si votre système utilise devfs en vérifiant que le fichier /dev/.devfsd existe; si c'est le cas, alors devfs est actif.
Lorsque vous utilisez la commande mount pour monter le système de fichiers, il s'attend à auto-détecter le type de système de fichier. Parfois, cela peut échouer, et vous devrez alors spécifier manuellement le type de système de fichier à monter avec l'option -t, comme suit :
mount /dev/hda1 /mnt/boot -t ext3
ou
mount /dev/hda3 /mnt -t reiserfs
Les options de montage
Il est également possible de personnaliser divers attributs du système de fichier à monter avec des options de la commande mount. Par exemple, vous pouvez monter un système de fichier en "lecture seule" avce l'option "ro" :
mount /dev/hdc6 /mnt -o ro
Avec /dev/hdc6 monté en lecture seule, aucun fichier ne peut être modifié dans /mnt, mais uniquement lu. Si votre système de fichier est déjà monté en "lecture/écriture", et que vous souhaitez basculer en mode lecture seule, vous pouvez utiliser l'option "remount" pour éviter de démonter et remonter le système de fichier de nouveau :
mount /mnt -o remount,ro
Remarquez que vous n'avez pas besoin de spécifier un fichier de périphérique pour la partition car le système de fichier est déjà monté et mount sait que /mnt est associé à /dev/hdc6. Pour remettre le système de fichier en mode écriture, vous pouvez le remonter en lecture-écriture :
mount /mnt -o remount,rw
Remarquez que ces commandes de remontage échoueront si un processus a ouvert un fichier du répertoire /mnt. Pour vous familiariser avec les options disponibles sous Linux de la commande mount, tapez man mount.
Introduction à fstab
Jusqu'à maintenant, nous avons vu comment partitionner un disque, et monter manuellement un système de fichier à partir d'un disque. Mais maintenant que nous avons un système Linux installé, comment pouvons nous configurer ce système Linux pour qu'il monte le bon système de fichier au bon moment ? Par exemple, disons que nous avons installé Gentoo Linux sur l'exemple de configuration de système de fichier. Comment votre système sait comment trouver le système de fichier racine sur /dev/hda3 ? Et s'il y a d'autres systèmes de fichiers, comme le swap qui doit être monté au démarrage, comment peut il savoir lesquels ?
En fait, le chargeur de démarrage, que nous verrons plus tard dans ce tutoriel, indique au noyau Linux quel système de fichier racine utiliser. Mais pour tout le reste, le système Linux posséde un fichier nommé /etc/fstab qui indique quels systèmes de fichiers sont disponibles pour être montés. Voyons à quoi il ressemble.
Un exemple de fstab
Voyons un exemple de fichier /etc/fstab :
<fs> <mountpoint> <type> <opts> <dump/pass> /dev/hda1 /boot ext3 noauto,noatime 1 1 /dev/hda3 / reiserfs noatime 0 0 /dev/hda2 none swap sw 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0 # /proc should always be enabled proc /proc proc defaults 0 0
Chaque ligne non commentée dans /etc/fstab indique un fichier périphérique de partition, un point de montage, un type de système de fichier, les options du système de fichier à utiliser lors de son montage, et deux champs numériques. Le premier champ numérique est utilisé pour indiquer à la commande de sauvegarde dump quels systèmes de fichiers doivent être sauvegardés. Bien sur, si vous ne prévoyez pas d'utiliser la commande dump sur votre système, vous pouvez alors ignorer ce champ. Le dernier champ est utilisé par le programme de contrôle d'intégrité du système de fichier : fsck, il lui indique quels systèmes de fichiers doivent être vérifiés au démarrage. Nous reverrons bientôt la commande fsck.
Regardez la ligne /dev/hda1, vous voyez qu'il s'agit d'un système de fichier ext3 qui doit être monté au démarrage sur le point de montage /boot. Maintenant regardons les options de /dev/hda1. L'option noauto indique au système de ne pas monter automatiquement /dev/hda1 au démarrage. Sans cette option, /dev/hda1 serait monté automatiquement sur /boot au démarrage.
Remarquez également l'option noatime, qui désactive l'enregistrement de l'information atime (heure de dernier accès) sur le disque. Cette information n'est généralement pas requise, et cette option (noatime) améliore les performances du système de fichier.
Regardons maintenant la ligne /proc et ses options. Utilisez defaults lorsque vous souhaitez que votre système de fichier soit monté avec les options standards. Etant donné que /etc/fstab possède plusieurs champs, nous pouvons simplement les laisser vides.
Voyons la ligne pour /dev/hda2. Cette ligne définit /dev/hda2 comme un système de swap. Puisque le système de swap n'est pas monté comme un système de fichier, rien n'est spécifié pour le point de montage. Grâce à cette entrée de /etc/fstab, votre système de swap /dev/hda2 sera activé automatiquement lors du démarrage du système.
Avec une entrée dans /etc/fstab pour /dev/cdrom, le montage du lecteur de CD-ROM devient facile. Au lieu de taper :
mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro
Vous pouvez maintenant taper :
mount /dev/cdrom
En fait, /etc/fstab nous permet de tirer avantage de l'option user. Cette option indique au système qu'un système de fichier particulier peut être monté par n'importe quel utilisateur. Cela s'avère très pratique pour des périphériques amovibles comme les CD-ROM. Sans cette option dans fstab, seul l'utilisateur root pourrait utiliser le CD-ROM.
Démontage des systèmes de fichier
Générallement, tous les systèmes de fichier montés sont automatiquement démontés par le système lorsque vous redémarrez ou éteignez. Lorsqu'un système de fichier est démonté, toutes les données de ce système de fichier mises en cache en mémoire sont mises sur le disque.
Cependant, il est possible de démonter des systèmes de fichier manuellement. Avant qu'un système de fichier ne soit démonté, vous devez d'abord vous assurer qu'aucun des processus en cours ait un fichier ouvert sur le système de fichier concerné. Ensuite, utilisez la commande umount, en indiquant soit le nom du périphérique, soit celui de son point de montage :
umount /mnt
ou
umount /dev/hda3
Une fois démonté, tous le fichiers dans /mnt qui étaient "couvert" par le système de fichier précedemment monté vont maintenant réapparaître.
Introduction à fsck
Si votre système crashe ou se bloque pour une raison ou une autre, le système n'aura pas la possibilité de démonter proprement votre système de fichier. Lorsque cela arrive, les systèmes de fichiers sont laissés dans un état non intègre (qu'on ne peut pas deviner). Lorsque votre système redémarre, , le programme fsck détectera que les systèmes de fichier n'ont pas été proprement démontés et voudra procéder à une verification d'intégrité des systèmes de fichier listés dans /etc/fstab.
Important : pour qu'un système de fichier soit vérifié par fsck il faut une valeur non nulle dans le champ "pass" le dernier champ dans /etc/fstab. Typiquement, le système de fichier racine est réglé à 1, ce qui signifie qu'il doit être vérifié en premier. Tous les autres systèmes de fichier qui doivent être vérifiés au démarrage doivent avoir un numéro de "pass" à 2 ou plus. Pour quelques systèmes de fichier journalisés comme ReiserFS, il est plus sûr d'avoir un numéro de "pass" à 0 car le code de journalisation ( et pas un fsck externe) prend soin de revérifier l'intégrité du système de fichier.
Parfois, vous trouverez qu'après un redémarrage, fsck est incapable de réparer complètement un système de fichier partiellement endommagé. Dans ce cas, tout ce que vous pouvez faire, c'est de passer votre système en mode utilisateur unique (single-user), et de lancer fsck manuellement, en donnant le nom du fichier de périphérique de partition comme argument. Lorsque fsck répare le système de fichier, il peut vous demander comment il doit réparer certains défauts de votre système de fichier. Généralement, vous devrez répondre y (oui) à toutes ces questions pour que fsck puisse continuer.
Problèmes avec fsck
L'un des problèmes avec fsck est qu'il peut prendre du temps avant de se finir, puisque l'intégralité des métadonnées (structure de données interne) du système de fichier doit être scannée pour garantir son intégrité. Avec de gros systèmes de fichier, il n'est pas rare qu'un fsck complet prenne plus d'une heure.
Afin de résoudre ce problème, un nouveau type de système de fichier a été créé, les systèmes de fichier journalisés. La journalisation d'un système de fichier enregistre dans un fichier de log sur le disque les changements récents sur les métadonnées du système de fichier. Lors d'un crash, le pilote du système de fichier inspecte le fichier de log. Etant donné qu'il contient une liste fiable des changements récents sur le disque, seules ces parties des métadonnées du disque ont besoin d'être vérifiées pour les erreurs. Grâce à cette importante différence de conception, la vérification d'intégrité d'un système de fichier journalisé est juste une question de secondes, quel que soit la taille du système de fichier. C'est pour cette raison que les systèmes de fichier journalisés sont de plus en plus populaires dans la communauté Linux. Pour plus d'informationssur les systèmes de fichier journalisés, voir ce lien (anglais)
Voyons maintenant les principaux systèmes de fichier disponibles sous Linux, ainsi que les commandes et options qui leurs sont associées.
Le système de fichier ext2
Le système de fichier ext2 a été le satndard Linux durant de nombreuses années. Il présente de bonnes performances pour la plupart des applications, mais n'offre pas de journalisation. Cela le rend inadapté pour de gros systèmes de fichier, puisque fsck peut prendre beaucoup de temps. De plus, ext2 a des limitations intrinsèques du fait que tout système de fichier ext2 ne peut manipuler qu'un nombre fixe d'inodes. Comme cela a déjà était dit, ext2 est généralement condéré comme un système de fichier extrêmement robuste et efficace.
- kernels : 2.0+
- journalisation : non
- commande mkfs : mke2fs
- exemple mkfs : mke2fs /dev/hdc7
- commandes liées : debugfs, tune2fs, chattr
- option de montage liée aux performances : noatime
Le système de fichier ext3
Le système de fichier ext3 utilise le même format sur le disque que ext2, mais ajoute la journalisation. En fait, de tous les systèmes de fichier Linux, ext3 est celui qui a le support le plus complet de la journalisation, supportant non seulement la journalisation des métadonnées, mais également l'organisation de la journalisation (par défaut) et la journalisatin complète des métadonnées+données. Ces modes de journalisation "spéciaux" aident pour assurer l'intégrité des données, et pas de simples fsck comme pour les autres implémentations de journalisation. Pour cette raison, ext3 esthttp://www.gentoo.org/doc/en/articles/l-afig-p8.xml le meilleur système de fichier à utiliser si l'intégrité des données est un aspect primordial. Cependant, ces fonctions pour l'intégrité des données se répercutent quelque peu sur les performances. De plus, puisque ext3 a le même format que ext2, il souffre du même problème de limitaion de taille que son cousin. Ext3 est un bon choix si vous cherchez un système de fichier journalisé polyvalent et très robuste.
- kernels : 2.4.16+
- journalisation : métadonnées, écriture classée des données, complet métadonnées+données
- commande mkfs : mke2fs -j
- exemple mkfs : mke2fs -j /dev/hdc7
- commandes liées : debugfs, tune2fs, chattr
- option de montage liée aux performances : noatime
- autres options de montage :
- data=writeback (supprime la journalisation)
- data=ordered (par défaut, journalisation des métadonnées et es données sont écrites en dehors du disque avec les métadonnées)
- data=journal (journalisation complète des données pour l'intégrité des données et métadonnées. Perte de 50% de performances en écriture)
- quelques ressources sur l'ext3 (anglais)
Le système de fichier ReiserFS
Le système de fichier ReiserFS est relativement nouveau, il a été conçu pour être très performant sur les petits fichiers, avoir de bonnes performances générales et être très extensible. En général, ReiserFS offre de très bonnes performances dans la plupart des situations. Beaucoup préfèrent ReiserFS pour sa rapidité et son extensibilité.
- kernels : 2.4.0+ (2.4.18+ fortement recommmandé)
- journalisation : métadonnées
- commande mkfs : mkresiserfs
- exemple mkfs : mkreiserfs /dev/hdc7
- option de montage liée aux performances : noatime, notail
- quelques ressources sur ReiserFS (anglais)
Le système de fichier XFS
Le système de fichier XFS est un système journalisé de type entreprise, qui a été porté sous Linux par SGI. XFS est un système complet, extensible, journalisé qui est approprié pour les gros systèmes, avec du matériel fiable (puisqu'il repose fortement sur la mise en cache de données en RAM), mais n'est pas adapté au matériel bas de gamme.
- kernels : 2.5.34+, nécessite un patch pour la série 2.4
- journalisation : métadonnées
- commande mkfs : mkfs.xfs
- exemple mkfs : mkfs.xfs /dev/hdc7
- option de montage liée aux performances : noatime
- quelques ressources sur XFS (anglais)
Le système de fichier JFS
JFS est un système de fichier journalisé haute performances porté sous Linux par IBM. JFS est utilisé par IBM sur les serveurs d'entreprises, et est conçu pour les applicatinos à haute performances. Vous pourrez en savoir plus sur JFS en allant sur la page (anglais) du projet JFS
- kernels : 2.4.20+
- journalisation : métadonnées
- commande mkfs : mkfs.jfs
- exemple mkfs : mkfs.jfs /dev/hdc7
- option de montage liée aux performances : noatime
- quelques ressources sur JFS (anglais)
VFAT
Le système de fichier VFAT n'est pas vraiment un système de fichier que vous devriez choisir pour stocker des fichiers Linux. Cependant, c'est un système de fichier compatible DOS qui vous permet de monter et d'échanger des données avec des systèmes de fichier basés sur FAT utilisés par DOS et Windows. Le pilote de système de fichier VFAT est présent dans le kernel Linux standard.
Démarrage du système
A propos de cette section
Cette section est une introduction à la procédure de démarrage de Linux. Nous allons voir le concept de chargeur de démarrage, comment passer des options au noyau au démarrage, et comment détailler les journaux de démarrage pour les erreurs.
Le MBR
Le processus de démarage est identique pour toutes les machines, quelle que soit la distribution installée. Considérons l'exemple de disque sur suivant :
+----------------+ | MBR | +----------------+ | Partition 1: | | racine Linux | | (/) | | contenant | | le noyau et | | le système. | +----------------+ | Partition 2: | | swap Linux | +----------------+ | Partition 3: | | Windows 3.0 | | (dernier | | démarrage | | en 1992) | +----------------+
D'abord, le BIOS de l'ordinateur lit quelques uns des premiers secteurs de votre disque. Ces secteurs contiennent un tout petit programme, appelé zone amorce ou MBR (Master Boot Record). Le MBR stocke l'endroit où se trouve le noyau Linux sur votre disque dur (la partition 1 dans l'exemple ci-dessus), et il charge donc le noyau en mémoire et le démarre.
Le processus de démarrage du noyau
La chose suivante que vous verez (mais qui disparait rapidement) est similaire à celle-ci :
Linux version 2.4.16 (root@time.flatmonk.org) (gcc version 2.95.3 20010315 (release)) #1 Sat Jan 12 19:23:04 EST 2002
C'est la première ligne qui est affichée au démarrage. La première partie est la version de noyau, suivie de l'identification de l'utilisateur qui a construit le noyau (en général le root), le compilateur avec lequel il a été construit, et l'heure à laquelle il a été construit.
Après cette ligne, de nombreuses informations sont données par le noyau par rapport au matériel : le processeur, le bus PCI, le contrôleur de disque, les ports série, le lecteur de disquette, les périphériques USB, l'interface réseau, les cartes son, et éventuellement d'autres qui retourneront leur état.
/sbin/init
Lorsque le noyau a fini de se charger, il lance un programme appelé init. Ce programme reste en fonction jusqu'à ce que le système soit éteint. Il a toujours l'ID de processus 1 comme vous pouvez le constater :
$ ps --pid 1 PID TTY TIME CMD 1 ? 00:00:04 init.system
Le programme init démarre le reste de la distribution en lançant une série de scripts. Ces scripts sont typiquement dans /etc/rc.d/init.d ou /etc/init.d. Ils remplissent différentes tâches comme paramétrer le nom du système, vérifier les systèmes de fichiers, monter d'autres systèmes de fichiers, mettre en route le réseau, lancer les services d'impression, etc. Une fois ces scripts exécutés, init lance le programme getty qui vous affiche l'invite de connexion (login:).
Plonger dans LILO
Maintenant que nous avons fait un petit tour du processus de démarrage, regardons d'un peu plus près la première étape : le MBR et le chargement du noyau. La maintenance du MBR est la responsabilité du chargeur de démarrage (boot loader). Les deux chargeurs de démarrage les plus populaires pour les pcs (x86/64) sous linux sont "LILO" (Linux Loader) et GRUB (GRand Unified Bootloader).
Des deux, LILO est le plus ancien est le plus commun (NdT : à la rédaction de l'article d'origine, je pense que désormais c'est GRUB le plus commun). La présence de LILO sur votre système est visible au démarrage avec l'invite ""LILO boot:"". Remarquez que vous pourriez avoir besoin d'appuyer sur la touche Shift (Maj) au démarrage pour voir cette invite, les systèmes étant souvent configurés pour passer cette étape sans pause.
Il n'y a pas tellement d'informations à l'invite de LILO mais si vous appuyez sur la touche <tab>, vous aurez la liste des choix possibles (noyaux ou autres systèmes) à démarrer. Il n'y en a souvent qu'un. Vous pouvez en démarrer un en tapant son nom et en appuyant sur Entrée. Si vous appuyez sur Entrée directement, le système par défaut sera démarré. (NdT : Lilo dispose également de menus graphiques ou l'on peut sélectionner le système à démarrer à l'aide des touches de direction).
Utiliser LILO
On peut parfois souhaiter passer une option au noyau au démarrage. Les options les plus communes sont root= pour indiquer une racine alternative, init= pour indiquer une alternative au programme init (par exemple init=/bon/sh pour réparer un système endommagé), et mem= pour indiquer la quantité de mémoire dont dispose le système (par exemple mem=512M au cas où Linux ne détecte que 128 M). Vous pourriez passer ces options à l'invite de LILO :
LILO boot: linux root=/dev/hdb2 init=/bin/sh mem=512M
Si vous avez besoin de spécifier des options régulièrement ou à chaque fois, modifiez le fichier /etc/lilo.conf. Le format de ce fichier est décrit dans sa page man lilo.conf (5).
Note importante sur LILO
Avant de se pencher sur GRUB, notez bien ceci : vous devez lancer lilo à chaque fois vous modifiez /etc/lilo.conf ou que vous installez un nouveau noyau. Le programme lilo réécrit le MBR en tenant compte des modifications, y compris les coordonnées absolues des disques de votre noyau. L'exemple suivant utilise le drapeau -v pour plus d'exhaustivité :
# lilo -v LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger 'lba32' extensions Copyright (C) 1999,2000 John Coffman Reading boot sector from /dev/hda Merging with /boot/boot.b Mapping message file /boot/message Boot image: /boot/vmlinuz-2.2.16-22 Added linux * /boot/boot.0300 exists - no backup copy made. Writing boot sector.
Plonger dans GRUB
GRUB peut être considéré comme la nouvelle génération de chargeur de démarrage suivant LILO. Plus visuel pour les utilisateurs, il apporte un menu à la place de l'invite primitive de LILO. Pour les administrateurs systèmes, les changements sont plus significatifs. GRUB gère plus de systèmes d'exploitation que LILO, peut être sécurisé par mot de passe et est plus facile à administrer.
GRUB est généralament installé avec la commande grub-install (NdT : ici installé signifie mis en place sur le MBR, car les binaires peuvent être installés sans être utilisés). Une fois installé, le menu de GRUB s'administre en éditant le fichier /boot/grub/grub.conf. Ces tâches sortent du cadre de ce document, vous devriez lire la page info de GRUB avant de l'installer et de l'administrer.
Utiliser GRUB
Pour donner des paramètres au noyau vous pouvez appuyer sur e lorsque vous êtes sur le menu de GRUB. Vous pouvez ainsi éditer (en pressant de nouveau e) le nom du noyau à charger ou ses options. Une fois les changements opérés, appuyez sur Entrée puis b pour démarrer le noyau.
dmesg
Les messages au démarrage de la machine, pendant le chargement du noyau et l'exécution des scripts init, défilent assez rapidement. Vous pouvez remarquer une erreur mais le message aura disparu avant que vous ne l'ayez lu. Dans ce cas, il y a deux choses à regarder après le démarrage pour voir ce qui s'est passé et dans l'espoir de réparer.
Si l'erreur est apparue au chargement du noyau ou pendant la recherche de périphériques, vous pouvez consulter une copie du journal du noyau en utilisant la commande dmesg :
Linux version 2.4.16 (root@time.flatmonk.org) (gcc version 2.95.3 20010315 (release)) #1 Sat Jan 12 19:23:04 EST 2002
Hé mais cette ligne nous dit quelque chose ! C'est la première ligne que le noyau affiche lorsqu'il se charge. Si vous redirigez la sortie de dmesg sur un pager comme less ou more, vous pouvez voir tous les messages affichés par le noyau au démarrage plus tous les messages que le noyau a affiché sur la console depuis.
/var/log/messages
Le fichier /var/log/message est le deuxième endroit où aller chercher les informations. Ce fichier est enregistré par le service (démon) syslog qui peut prendre des entrées à partir de bibliothèques, services et du noyau. Chaque ligne du fichier message est datée. Ce fichier est la bonne place pour chercher les erreurs qui seraient apparues au lancement d'un des scripts lancé par init. Par exemple, pour voir les 3 derniers messages pour le serveur de noms :
# grep named /var/log/messages | tail -3 Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface lo, 127.0.0.1#53 Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface eth0, 10.0.0.1#53 Jan 12 20:17:41 time /usr/sbin/named[350]: running
Informations complémentaires
Vous trouverez de plus amples informations propos de chapitre dans les documents suivants :
- Tutorial: Getting to know GRUB (EN)
- LILO Mini-HOWTO (FR)
- la page de GRUB (EN)
- NdT : Manuel en français sur GRUB - merci Linux France !
- Les options de démarrage du noyau dans le fichier /usr/src/linux/Documentation/kernel-parameters.txt.
Runlevels - Niveaux d'exécution
Le mode mono-utilisateur (single-user)
Comme nous l'avons vu plus haut dans la section sur les chargeurs de démarrage, il est possible de passer des paramètres au chargement du noyau. Un des paramètres les plus utilisés est s qui va faire démarrer votre ordinateur en mode mono-utilisateur. Ce mode monte uniquement le système de fichiers racine, lance une faible quantité de scripts d'initialisation (pas de service ou démons lancés) et généralement une invite de commande est lancée à la place de la demande de nom d'utilisateur de connexion. De plus, le réseau n'est pas paramétré, ainsi aucun facteur externe ne peut modifier ce que vous faites sur la machine.
Comprendre le mode mono utilisateur
Alors qu'est-ce que vous pouvez vraiment faire sur un système dans un mode aussi limité ? Pour répondre à cette question, nous devons comprendre une énorme différence entre Linux et Windows. Windows est fait et pensé pour être utilisé par une personne à la fois, assis devant la console (ndt : l'ensemble écran, clavier, souris). Donc il est effectivement toujours utilisé en mode mono utilisateur. D'un autre côté Linux est plus souvent utilisé en tant que serveur d'applications réseau, pour fournir des shells interactifs ou des sessions graphiques à des utilisateurs distants sur le réseau. Ces variables supplémentaires sont malvenues lorsque vous souhaitez effectuer des opérations de maintenance comme restaurer une sauvegarde, créer ou modifier des systèmes de fichiers, mettre à jour le système à partir d'un cd-rom, etc. Dans ces cas, vous devriez travailler en mode mono utilisateur.
Niveaux d'exécutions
En fait, il n'est pas nécessaire de redémarrer pour basculer en mode mono utilisateur. Le programme init gère les modes utilisés par les systèmes ou les niveaux d'exécution (runlevels), pour le système. Les niveaux d'exécution standards pour un système Linux sont les suivants :
-* 0 : Éteindre l'ordinateur -* 1 ou s : mode mono utilisateur -* 2 : multi-utilisateurs, pas de réseau (NdT : pas sur Debian et dérivés ou c'est le runlevel par défaut) -* 3 : multi-utilisateurs, console en mode texte -* 4 : multi-utilisateurs, console graphique -* 5 : même chose que le 4 -* 6 : redémarrer le système
Ces niveaux d'exécution sont variables suivant les distributions donc consultez la documentation de votre distribution favorite.
telinit
Pour passer en mode mono utilisateur, utilisez la commande telinit, qui demande à init de changer de niveau d'exécution.
# telinit 1
Vous pouvez en déduire d'après le paragraphe précédent que vous pouvez arrêter ou redémarrer la machine en utilisant la même commande. telinit 0 éteindra votre ordinateur ; telinit 6 le redémarrera. Lorsque vous entrez la commande telinit, une série de scripts d'initialisation sera lancée pour arrêter ou pour lancer des services système.
éthique des changements de niveaux d'exécution
Notez cependant qu'il est assez rugueux d'éteindre le système de cette façon si des utilisateurs sont connectés sur votre système (ils pourraient vous en vouloir). La commande shutdown vous offre une méthode plus correcte de changer de niveau d'exécution. De la même façon que la commande kill envoie des messages aux processus, shutdown peut être utilisée pour éteindre, redémarrer, ou passer en mode mono-utilisateur. Par exemple, pour passer en mode mono-utilisateur en 5 mn :
# shutdown 5 Broadcast message from root (pts/2) (Tue Jan 15 19:40:02 2002): The system is going DOWN to maintenance mode in 5 minutes!
Si vous appuyez sur Ctrl+c à cet instant, vous annulez le passage en mode mono-utilisateur. Ce message sera affiché sur tous les terminaux, ainsi les utilisateurs disposent d'un temps raisonnable pour sauvegarder leur travail et se déconnecter (Certains diront que 5 mn n'est pas raisonnable mais ce n'est pas notre problème).
"now" et arrêt
Si vous êtes l'unique utilisateur de ce système, vous pouvez utiliser "now" au lieu d'un temps exprimé en minutes. Par exemple, pour redémarrer le système immédiatement :
# shutdown -r now
Dans ces cas, vous ne pourrez pas appuyer sur Ctrl+c ; le système est déjà en train de s'éteindre. Enfin, l'option -h de shutdown éteint le système :
# shutdown -h 1 Broadcast message from root (pts/2) (Tue Jan 15 19:50:58 2002): The system is going DOWN for system halt in 1 minute!
niveau d'exécution par défaut
Vous aurez compris désormais que le programme init est plutôt important sur un système Linux. Vous pouvez le configurer en éditant le fichier /etc/inittab, dont vous trouverez la documentation dans la page de man inittab (5). Nous ne verrons qu'une entrée de ce fichier :
# grep ^id: /etc/inittab id:3:initdefault:
Sur mon système, le niveau d'exécution par défaut est le 3. Cela peut vous être utile de modifier cette valeur si vous souhaitez démarrer immédiatement avec une fenêtre de connexion en mode graphique (généralement les niveaux 4 ou 5). Pour le faire il vous suffit de modifier la ligne en question dans le fichier, mais attention ! Si vous entrez une valeur invalide, vous devrez utiliser l'option init=/bin/sh mentionnée plus tôt au démarrage du système pour démarrer et corriger cette erreur.
Informations complémentaires
Vous pouvez consulter d'autres informations en rapport avec ce chapitre : • Sysvinit docs at Red Hat • Linux System Administrator's Guide section on init
les quotas sur les systèmes de fichiers
introduction aux quotas
Les quotas sont une fonctionnalité sur les systèmes Linux qui vous permet de surveiller l'utilisation de l'espace disque par utilisateur ou par groupe. C'est pratique pour empêcher un utilisateur ou un groupe d'utiliser une trop grande partie d'un système de fichiers, ou de le remplir. Les quotas sont gérés et activés uniquement par l'administrateur système, le root. Dans ce chapitre, je vous montrerais comment mettre en place les quotas sur votre système et comment les gérer efficacement.
Support du noyau
Les quotas sont une fonctionnalité des systèmes de fichiers, mais le noyau doit être capable de les gérer. La première chose que vous devez vérifier est de voir si votre noyau a les options nécessaires. Vous pouvez le savoir avec grep (NdT : si vous avez compilé votre noyau) :
# cd /usr/src/linux # grep -i quota .config CONFIG_QUOTA=y CONFIG_XFS_QUOTA=y
NdT : pour un noyau 2.6.22-14 sur un système récent (à adapter à votre noyau) :
$ grep -i quota /boot/config-2.6.22-14-generic CONFIG_NETFILTER_XT_MATCH_QUOTA=m CONFIG_QUOTA=y CONFIG_QUOTACTL=y CONFIG_XFS_QUOTA=y
Si cette commande vous retourne quelque chose de moins sympathique (comme par exemple CONFIG_QUOTA is not set) vous devrez recompiler un noyau avec le support des quotas. Ce n'est pas difficile mais ce n'est pas le sujet de ce TP. Si vous ne savez pas trop comment compiler et installer un nouveau noyau, vous devriez regarder ce TP *** LIEN.
Support des systèmes de fichiers
Avant de plonger dans l'administration des quotas, vous devez noter que le support des quotas sous Linux pour les noyaux 2.4.x n'est pas complet. Actuellement (NdT : au moment de l'écriture du tutoriel original) les quotas sur les systèmes de fichiers ext2 et ext3 posent problème et ReiserFS ne gère absolument pas les quotas. Ce TP base ses exemples sur XFS qui semble bien gérer les quotas.
Configurer les quotas
Pour débuter la configuration des quotas sur votre système vous devriez éditer le fichier /etc/fstab pour qu'il monte le système de fichier qui vous intéresse avec la gestion du quota activée. Pour notre exemple, nous utilisons un système de fichiers XFS avec les supports des quotas pour les utilisateurs et les groupes :
# grep quota /etc/fstab /usr/users /mnt/hdc1 xfs usrquota,grpquota,noauto 0 0 # mount /usr/users
Configuration des quotas, la suite
Vous remarquerez que les options usrquota et grpquota n'activent pas nécessairement les quotas sur un système de fichiers. Vous pouvez vous assurer que les quotas sont activés en utilisant la commande quotaon :
# quotaon /usr/users
Si vous souhaitez désactiver les quotas, il existe une commande quotaoff correspondante :
# quotaoff /usr/users
Mais pour le moment, si vous souhaitez essayer les commandes de ce TP, assurez vous d'avoir activé les quotas.
La commande quota
La commande quota affiche l'utilisation du disque et ses limites pour un utilisateur et pour tous les systèmes de fichier montés. L'option -v ajoute à la liste les systèmes de fichier où les quotas sont activés mais qu'aucun espace n'est actuellement utilisé par l'utilisateur. *** REFORMULER ***
# quota -v Disk quotas for user root (uid 0): Filesystem blocks quota limit grace files quota limit grace /dev/hdc1 0 0 0 3 0 0
La première colonne, les blocs, affiche la quantité d'espace disque utilisée par root sur les systèmes de fichiers listés. Les colonnes suivantes, quota et limit, affichent les limites actuellement en place pour l'espace disque. Nous expliquerons la différence entre quota et limit et le sens de la colonne grace un peu plus tard. La colonne files affiche le nombre de fichiers appartenant au root sur ce système de fichier. Les colonne suivantes sont en rapport avec les limites pour les fichiers.
=== Voir les quotas === *** observer ? surveiller ? ***
Tout utilisateur peut utiliser la commande quota pour voir son propre rapport d'utilisation comme affiché dans l'exemple précédent. Cependant, seul le root peut regarder les quotas des autres utilisateurs et des autres groupes. Prenons par exemple un système de fichiers /dev/hdc1 monté sur /usr/users avec deux utilisateurs : marie et joseph (NdT : liberté prise dans le choix des noms histoire de rompre la monotonie du travail de traduction). Consultons d'abord le rapport d'utilisation du disque et ses limites pour marie :
# quota -v marie Disk quotas for user marie (uid 1003): Filesystem blocks quota limit grace files quota limit grace /dev/hdc1 4100 0 0 6 0 0
Dans cet exemple, nous voyons que les quotas pour marie sont fixés à 0, c'est à dire pas de limite.
edquota
Disons maintenant que nous souhaitons fixer des quotas à l'utilisateur marie. C'est la commande edquota qui permet de le faire. Avant de fixer le quota, regardons combien d'espace il nous reste sur /usr/users :
# df /usr/users Filesystem 1k-blocks Used Available Use% Mounted on /dev/hdc1 610048 4276 605772 1% /usr/users
C'est un système de fichier plutôt petit avec seulement 600 Mo. Il paraît prudent de limiter l'espace pour marie de manière à ce qu'elle laisse de la place aux autres utilisateurs. La commande edquota crée un fichier temporaire pour chaque utilisateur ou groupe indiqué en option.
edquota, suite
La commande edquota vous place dans un éditeur qui vous permet d'ajouter ou de modifier les quotas dans ce fichier temporaire.
# edquota marie Disk quotas for user marie (uid 1003): Filesystem blocks soft hard inodes soft hard /dev/hdc1 4100 0 0 6 0 0
De la même façon que pour la commande quota vue précédemment, les colonnes blocks (blocs) et inodes présentes dans ce fichier temporaire se réfèrent à l'espace disque et au nombre de fichier actuellement utilisés par marie. Vous ne pouvez pas modifier le nombre de blocs ou d'inodes ; toute tentative sera sommairement annulée par le système. Les colonnes hard et soft (respectivement limite dure ou stricte et douce ou tolérée) montrent les quotas pour marie, qui comme nous pouvons le voir sont actuellement illimités (de nouveau, zéro signifie pas de quota).
Comprendre edquota
La limite douce (soft) est l'espace disque maximal alloué à marie sur ce système de fichier (en d'autres termes, son quota). Si marie utilise plus d'espace que celui alloué dans sa limite douce, elle recevra un avertissement par email lui indiquant qu'elle a dépassé son quota. La limite dure ou stricte indique la limite absolue qu'un utilisateur ne peut pas dépasser. Si marie tente d'utiliser plus d'espace que l'espace qui lui est accordé par sa limite stricte, elle verra le message d'erreur "Disk quota exceeded" et sera incapable d'aller plus loin.
Modifier les quotas
Modifions les quotas doux et dur pour marie et sauvons le fichier :
Disk quotas for user marie (uid 1003): Filesystem blocks soft hard inodes soft hard /dev/hdc1 4100 10000 11500 6 2000 2500
La commande quota affiche nos modifications :
# quota marie Disk quotas for user marie (uid 1003): /dev/hdc1 4100 10000 11500 6 2000 2500
Copie de quota
Souvenez-vous que nous avons également un autre utilisateur de ce système de fichiers, joseph. Si nous souhaitons donner à joseph les mêmes quotas qu'à marie, nous pouvons utiliser l'option de edquota -p, qui utilise les quotas de marie comme modèle pour tous les utilisateurs indiqués en option. C'est une manière simple de mettre en place les quotas pour un groupe d'utilisateurs.
# edquota -p marie joseph # quota joseph Disk quotas for user joseph (uid 1003): Filesystem blocks quota limit grace files quota limit grace /dev/hdc1 0 10000 11500 1 2000 2500
Restrictions sur les groupes
Il est également possible d'utiliser edquota pour limiter l'allocation d'espace disque en se basant sur l'appartenance au groupe des fichiers. Par exemple pour modifier les quotas pour le groupe users :
# edquota -g users Disk quotas for group users (gid 100): Filesystem blocks soft hard inodes soft hard /dev/hdc1 4100 500000 510000 7 100000 125000
La commande repquota
Regarder les quotas pour chaque utilisateur en utilisant la commande quota peut devenir fastidieux si vous avez de nombreux utilisateurs d'un système de fichier. La commande repquota affiche un résumé des quotas sur un système de fichier dans un joli compte-rendu. Par exemple, pour voir tous les quotas pour tous les utilisateurs et groupes sur /usr/users :
# repquota -ug /usr/users
*** Report for user quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
joseph -- 0 10000 11500 1 2000 2500
marie -- 4100 10000 11500 6 2000 2500
*** Report for group quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
users -- 4100 500000 510000 7 100000 125000
Options de repquota
Il y a deux autres options à indiquer pour repquota. repquota -a vous donnera un compte-rendu pour tous les systèmes de fichiers actuellement montés en lecture / écriture et pour lesquels la gestion des quotas est activée. repquota -n affichera les uids et gids sans les traduire en noms. Cela peut accélérer l'affichage d'une longue liste.
Surveillance des quotas
Si vous êtes administrateur système, vous souhaitez pouvoir surveiller les quotas pour être certain qu'ils ne seront pas dépassés. Une méthode simple est d'utiliser warnquota. La commande wanquota envoi des emails aux utilisateurs qui ont dépassé leur limite douce. Générallement, warnquota est lancée par une tâche cron.
Lorsqu'un utilisateur dépasse sa limite douce, la période de tolérance est celle que la commande quota affiche au niveau de la colonne grace. Cette période correspond à la durée de dépassement de limite douce tolérée. *** REFORMULER ***
Disk quotas for user marie (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 10800* 10000 11500 7days 7 2000 2500
Par défaut, cette période pour les blocs et les inodes est fixée à 7 jours.
Modifier la période de tolérance
Vous pouvez modifier la période de tolérance pour les systèmes de fichiers avec edquota :
# edquota -t
Vous vous retrouvez de nouveau à éditer un fichier temporaire ressemblant à ceci :
Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hdc1 7days 7days
Le commentaire de ce fichier est gentiment explicite. Assurez-vous de laisser à vos utilisateurs suffisamment de temps pour recevoir les emails d'avertissement et de trouver des fichiers à supprimer !
Vérifier les quotas au démarrage
Vous pouvez souhaiter vérifier les quotas au démarrage. Vous pouvez le faire en utilisant un script qui lancera la commande quotacheck ; il y a un exemple de script dans le Quota Mini HOWTO *** voir traduc.org ***. La commande quotacheck peut également réparer un fichier de quota endommagé ; familiarisez-vous avec cette commande en lisant la page de man quotacheck (8).
Rappelez-vous également ce que nous avons dit plus tôt sur les commandes quotaon et quotaoff. Vous devriez ajouter quotaon aux scripts de démarrage de façon à ce que les quotas soient activés. Pour activer les quotas sur tous les systèmes de fichiers qui pour lesquels les quotas sont activés dans /etc/fstab, utilisez l'option -a :
# quotaon -a
Journaux système
Introduction à syslog
Le service syslog apporte un mécanisme client / serveur mature pour gérer les messages des applications de vos systèmes. Syslog reçoit un message d'un démon ou d'un programme, le classe par priorité et type puis l'enregistre en fonction de règles d'administration que vous pouvez adapter. C'est une méthode robuste et standard de gestion de journaux système.
Lecture des journaux système
jetons un oeil de suite au contenu d'un fichier généré par syslog. Nous traiterons plus tard la configuration de syslog. La FHS (voir la deuxième partie de cette série de tutoriels) préconise que les journaux soient placés dans /var/log. Ici nous utilisons la commande tail pour afficher les 10 dernières lignes du fichier "messages" :
# cd /var/log
- tail messages
Jan 12 20:17:39 bilbo init: Entering runlevel: 3 Jan 12 20:17:40 bilbo /usr/sbin/named[337]: starting BIND 9.1.3 Jan 12 20:17:40 bilbo /usr/sbin/named[337]: using 1 CPU Jan 12 20:17:41 bilbo /usr/sbin/named[350]: loading configuration from '/etc/bind/named Jan 12 20:17:41 bilbo /usr/sbin/named[350]: no IPv6 interfaces found Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface lo, 127.0.0.1#5 Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface eth0, 10.0.0.1# Jan 12 20:17:41 bilbo /usr/sbin/named[350]: running Jan 12 20:41:58 bilbo gnome-name-server[11288]: starting Jan 12 20:41:58 bilbo gnome-name-server[11288]: name server starting
Vous vous rappelez peut-être que la commande tail vous affiche les dernières lignes d'un fichier. Dans cet exemple, nous voyons que le serveur named a été lancé récemment sur cette machine nommée bilbo. Si nous avions à mettre en place un architecture en IPv6, nous noterions que named n'a trouvé aucune interface compatible IPv6, ce qui poserait potentiellement problème. De plus nous pouvons voir qu'un utilisateur a récemment lancé GNOME, ce qui est indiqué par la présence de gnome-name-server.
Utiliser tail sur les journaux système
Un administrateur système expérimenté pourrait utiliser la commande tail -f pour suivre la sortie du fichier en temps réel :
# tail -f /var/log/messages
Par exemple, pour déboguer notre problème théorique d'IPv6, si nous lancions la commande précédente dans un terminal tout en relançant named dans un autre terminal, nous verrions les message que named nous adresse au démarrage. Cette méthode peut être utile lorsqu'on cherche à résoudre un problème. Certains administrateurs gardent même constamment un oeil sur les évènements système en laissant tourner la commande tail -f messages dans un terminal.
Recherche dans les journaux avec grep
Une autre technique efficace est d'utiliser grep pour effectuer des recherche dans un fichier journal (pour l'utilisation de grep, reportez-vous à la deuxième partie de cette série de tutoriels). Dans l'exemple précédent, nous pourrions utiliser grep pour rechercher quand named a changé de comportement :
# grep named /var/log/messages
petit tour des journaux système
Voici un résumé des journaux gérés par syslog que l'on trouve généralement dans /var/log :
- messages : messages d'erreur et d'information des applications système et des services ;
- secure : messages d'erreur et d'information en rapport avec l'authentification, séparés de messages pour plus de sécurité (NdT : sur votre système, vous risquez de trouver un auth.log en lieu et en place de secure) ;
- maillog : messages d'erreur et d'information relatifs au système de messagerie ;
- cron : messages d'erreur et d'information relatifs à cron ;
- spooler : messages d'erreur et d'informations en rapport avec le serveur de news ou UUCP.
syslog.conf
C'est peut-être le bon moment désormais pour explorer le fichier de configuration de syslog /etc/syslog.conf (remarque : si vous n'avez pas de syslog.conf, vous devriez quand même lire la suite à titre d'information, mais il est possible que vous utilisiez une alternative au démon syslog). En parcourant ce fichier, nous nous rendons compte qu'il y a des entrées pour chaque fichier journal que nous avons cité, plus peut-être quelques autres. Ce fichier a pour format fonction.priorité action, ces champs étant définis dans le paragraphe suivant.
syslog.conf, suite
- fonction (facility) : définit le sous-système qui fournit le message. Les mots-clés suivants sont valides pour ce champ : auth, authpriv, cron, daemon, kern, lpr, mail, news, syslog, user, uucp et de local0 à local7.
- priorité : indique l'importance du message, ce qui signifie qu'un message ayant cette priorité ou une priorité supérieure sera concerné par cette règle. Ce champ peut prendre les valeurs suivantes : debug, info, notice, warning, err, crit, alert, et emerg.
- action : Le champ action devrait contenir soit un nom de fichier, soit un fichier de terminal (tty) comme /dev/console, soit le nom d'une machine distante précédé par un @, soit une liste d'utilisateurs séparés par des virgules, ou encore * pour envoyer le message à toute personne connectée. L'option la plus courant est un nom de fichier.
relancer syslog et informations complémentaires
j'espère que cette vue d'ensemble du fichier de configuration vous permet de ressentir la puissance de syslog. Vous devriez lire la page de manuel syslog.conf (5) pour plus d'information avant de modifier ce fichier. La page de manuel syslogd(8) vous donnera des informations encore plus détaillées.
Notez que vous devez informer le service syslog des modifications effectuées sur son fichier de configuration avant qu'elles soient effectives. La bonne méthode est d'envoyer un SIGHUP et vous pouvez utiliser la commande killall pour faire cela facilement :
# killall -HUP syslogd
(NdT : vous pouvez également utiliser le script init qui lance syslog et faire un reload ou un force-reload).
Note de sécurité
J'attire votre attention sur le fait que les fichiers écrits par syslogd sont créés par le programme s'ils n'existent pas. Les fichiers créés par syslog sont accessibles en lecture par tout le monde quel que soit le umask. Si la sécurité vous préoccupe, vous devriez placer ces fichiers en lecture écriture uniquement pour le root. Le programme logrotate décrit un peu plus tard peut être paramétré de manière à créer de nouveaux fichiers avec les bonnes permissions. Le démon syslog conserve toujours les attributs des fichiers existants, donc vous n'avez plus à vous en soucier du moment que le fichier existe.
logrotate
Les fichiers dans /var/log vont grossir avec le temps et peuvent remplir l'espace disque. Il est conseillé d'utiliser un programme tel que logrotate qui gère l'archivage automatique des fichiers journaux. Le programme logrotate est généralement lancé par une tâche cron quotidienne et peut être paramétré pour alterner, compresser supprimer ou envoyer les fichiers par mail. (NdT : ici le sens d'alterner ou de faire tourner signifie renommer le fichier et en créer un nouveau).
Par exemple, la configuration par défaut de logrotate fait tourner les fichiers de façon hebdomadaire, conservant 4 semaines de journaux d'évènements (en ajoutant un numéro de séquence au nom du fichier) et compresse les anciens fichiers pour limiter la consommation d'espace disque. En outre vous pouvez configurer logrotate pour qu'il envoie un SIGHUP à syslog. De cette façon syslog prendra en compte la présence des nouveaux fichiers vides et les remplira comme il se doit (NdT : nouveaux fichiers = nouveaux inodes).
Pour plus d'informations sur logrotate consultez son manuel logrotate(8) qui contient une description du programme ainsi que la syntaxe de son fichier de configuration.
Un peu plus loin : klogd
Avant de quitter syslog, j'aimerais présenter aux lecteurs ambitieux deux points un peu plus avancés. Ces conseils pourront économiser votre peine quand vous chercherez à comprendre les sujets relatifs à syslog.
Tout d'abord, le démon syslog fait partie du paquet syslogd qui contient un autre démon, klogd. Le travail de klogd est de traiter les informations émises par le noyau et de les transmettre à syslog pour qu'il les trie et les journalise. Les messages que klogd va traiter sont exactement ceux que la commande dmesg vous donne. La différence est que dmesg affiche le contenu d'un tampon géré par le noyau alors que klogd envoie ces messages à syslogd, ce qui empêche que ces informations ne soient perdues lorsque le tampon se vide.
Encore un peu plus loin : outils de gestion de journaux alternatifs
Ensuite, il y a des alternatives au paquet standard syslogd. Les alternatives tentent d'être plus performantes, plus faciles à configurer, et si possible elles cherchent à apporter de nouvelles fonctionnalités. Syslog-ng et Metalog semblent être les alternatives les plus populaires ; vous devriez les essayer si vous considérez que syslog ne vous apporte pas la puissance que vous recherchez. Enfin, vous pouvez journaliser les messages de vos scripts en utilisant la commande logger. Consultez le manuel de logger(1) pour plus d'information.

