LPI-101-2-4

Un article de RotomaLUG.

Frontal web Wiki accueil Les forums La galerie La liste LUG La liste INSTALL PARTY




Retourner à l'index des cours

Sommaire

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 :

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 :

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 :

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
  1. 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.



Retourner à l'index des cours