You are on page 1of 74

Net-Pro Par : Ghaouti Mohamed

Chapitre 1 - Introduction

Unix est né de la volonté de Ken Thompson et Dennis Ritchie, issue de Bell Labs, de faire un système
d'exploitation à la fois multitâches et multi utilisateurs, ce système a vu le jour en 1969.

Dans la philosophie qui a accompagné la création d'UNIX, il était question de concevoir de petits
programmes ne faisant qu'un nombre limité de tâches, mais le faisant bien.

Afin de les combiner il a été rapidement question d'utiliser des pipes et redirections.

Depuis cette période, une quantité astronomique d'Unix ont vu le jour dont, parmi eux des Unix gratuits,
comme celui de l'université de Berkeley dont sont dérivés les célèbres OpenBSD, NetBSD, FreeBSD,
TrustedBSD, BSDi...

Concernant le système GNU/Linux, il a vu le jour en 1991 par un étudiant finlandais, Linus Torvalds.

Linux a su garder, au fil de ses évolutions, l'héritage des tous premiers systèmes Unix.

Parallèlement à cela, une philosophie nouvelle est apparu concernant le partage des connaissances,
protégée par une licence qui garantirait la transparence des fichiers sources et la possibilité de les modifier.

C'est la naissance de la GPL ("Gnu Public License") et de la FSF ("Free Software Foundation") toutes deux
fondées par Richard Stallman.

Depuis cette période, les Unix "conventionnels" ont fait leurs preuves et leur temps, et sont morts de leur
manque d'ouverture vers le monde et les nouvelles technologies. En effet, la plupart des Unix étaient
vendus avec des machines propriétaires.

Chapitre 2 - Etayage du shell

1. Les terminaux

Les systèmes Unix/Linux furent à l'origine conçus pour fonctionner en mode texte, sans interface
graphique.

Bien qu'aujourd'hui de nombreuses interfaces graphiques permettant de configurer le système ont été
développées, il demeure totalement administrable en ligne de commande (CLI - Command Line Interface),
cette méthode restant la plus simple et la plus puissante.

Cette ligne de commande est accessible via les terminaux qui jouent le rôle d'interface utilisateur/machine
et fonctionnent avec un interpréteur de commandes : le shell.

Il est possible de se connecter sur plusieurs terminaux via la combinaison des touches Alt+Fn où Fn est une
touche de fonction (Ex : F1,F2...).

1/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Note : Depuis un environnement graphique, il est possible de revenir sur un terminal via la combinaison des
touches Ctrl+Alt+Fn. Pour revenir au mode graphique, il faut en général utiliser la combinaison Alt+F7.

2. Le shell
Le rôle du Shell est d'assurer la correspondance entre ce que l'utilisateur tape et le système. Il en existe de
nombreuses versions. Le plus connus d'entre eux, bash est celui que nous utiliserons pendant ce cours.

Chacun des shells existant dispose de ses propres avantages et points faible. L'intérêt d'avoir un shell plutôt
qu'un autre dépend des fonctionnalités offertes par celui-ci, et donc de l'utilisation que l'on souhaite en
avoir.

Le tableau suivant vous présente les principaux shells ainsi que leurs caractéristiques.

Nom Description
(Bourne Again Shell) offre l'édition de la ligne de commande et le rappel des
bash
commandes précédentes
(C Shell) développé à Berkeley, compatible avec le shell Bourne. Pas d'édition
csh
de la ligne de commande ni d'historique des commandes
(Korn Shell) offre l'édition de la ligne de commande (touches compatibles
ksh
Emacs)
sh le shell original, pas d'édition de la ligne de commande.
version améliorée du csh, avec un support de l'édition de la ligne de commande
tcsh
avec correction des commandes tapées
shell similaire au Korn shell, avec plus de dynamisme lors des affichages et gère
zsh
la non redondance des commandes.

Un système Unix / Linux fonctionne à l'aide d'une multitude de programmes qui assurent, en général,
chacun une fonction bien distincte et sont capables de communiquer au sein du shell.

Afin de pouvoir accéder au terminal, vous devez au préalable vous identifier grâce à un couple login/mot de
passe. En fonction de cela, vous aurez accès à plus ou moins de programmes sur le système.

On distingue principalement 2 types de comptes utilisables sur le système :

 Le compte utilisateur classique
 Le compte root (Administrateur)

Un symbole de l'invite de commande vous permet de determiner le type de compte que vous utilisez.

 Accés simple utilisateur :

user@localhost $

 Accés root :

root@localhost #

2/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

3. Utilisation de l'aide
3.1 Les pages de manuel ou man pages

Sur un système Unix / Linux, la plupart des logiciels sont installés avec un manuel accessible par la
commande man.

La syntaxe est la suivante :

man fonction_ou_commande

La commande : man man donne des informations sur l'utilisation du manuel en général.

La commande man peut également être utilisée pour rechercher un terme dans l'ensemble des pages de
manuel, grâce à l'option -K

user@localhost $ man -K "disk space"

Celle-ci me retourne :

/usr/share/man/man1p/df.1p.gz? [ynq]

Correspondant à une occurrence de "disk space" dans la liste des manuels disponibles sur le système.

Afin de se déplacer dans les résultats, les commandes suivantes sont disponibles :

Commande Description
y Afficher le manuel du résultat
n L'occurrence continue d'être recherchée dans la liste des manuels
q Retour au shell

Il peut arriver que plusieurs manuels soient disponibles pour une même commande. Il suffit alors de
préciser en paramètre de la commande man la section à rechercher.

Il suffit alors de saisir man 2 ex_prog ou man 7 ex_prog pour avoir l'aide souhaitée.

Afin de naviguer dans le manuel, il convient d'utiliser les touches haut et bas mais aussi les commandes
suivantes :

Commande Description
Espace Avance dans le manuel d'une page entière
Entrée Avance dans le manuel d'une ligne
b Recule dans le manuel d'une page
/mot Recherche mot dans le manuel. Ce peut être un nom ou une expression

3/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

régulière
q Quitte le manuel

3.2 Aide simplifiée

Nous venons de voir qu'il était possible de connaître la définition d'une commande par le manuel de celle-ci,
mais il est aussi possible d'en avoir un résumé via l'option -help.

user@localhost $ df --help
Usage: df [OPTION]... [FILE]...
Show information about the filesystem on which each FILE resides,
or all filesystems by default.

Mandatory arguments to long options are mandatory for short options too.
-a, --all include filesystems having 0 blocks
-B, --block-size=SIZE use SIZE-byte blocks
-h, --human-readable print sizes in human readable format (e.g., 1K 234M
2G)
-H, --si likewise, but use powers of 1000 not 1024
-i, --inodes list inode information instead of block usage
-k like --block-size=1K

Celle-ci permet donc de voir rapidement ou encore de vérifier l'existence d'une option.

Chapitre 3 - Commandes de base

Suite de commandes utiles à l’utilisation de votre machine sous Linux

Opérations sur les fichiers et répertoires

Nous allons lister ici, une suite de commandes utiles à l’utilisation de votre machine sous Linux :

Equivalence
But de la commande Linux
MsDos
Se déplace vers le répertoire rep cd rep cd rep
Liste le contenu d’un répertoire (-R pour un
ls rep dir
listage récursif)
Copie un fichier source vers un fichier destination cp source
copy
(-R pour un répertoire) destination
Déplace un fichier source vers une destination mv source
move
(peux servir à renommer un fichier destination
Crée un répertoire mkdir rep mkdir rep
del / deltree
Efface un fichier (-rf pour effacer un répertoire) rm fichier
fichier
Crée un lien destination qui va pointer sur une ln source
non disponible
source (-s pour un lien symbolique) destination
Met à jour la date de modification du fichier, ou touch fichier ou non disponible

4/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

crée un fichier vide si le fichier n’existe pas. repertoire

Lecture de fichier
cat fichier Affiche le contenu du fichier sur la sortie standard
Lit le contenu d’un fichier page par page. (Il doit lire l’intégralité du
more fichier
fichier avant de l’afficher)
Equivalent à more sauf qu’il n’est pas obligé de lire l’intégralité du
less fichier
fichier et permet de remonter dans l'affichage
N’affiche que les dernières lignes d’un fichier (-n permet de spécifier
tail fichier
le nombre de lignes à afficher)
Comme tail, mais affiche les N premières lignes d’un fichier (N=10
head fichier
par défaut)
grep "chaine" Recherche l’occurence d’une chaine de caractères "chaine" dans un
fichier ou plusieurs fichiers

Noms, attributs des fichiers et globbing
3.1 Noms des fichiers

Les noms de fichiers sont "case sensitives", c’est à dire qu’ils tiennent compte des majuscules et des
minuscules. Le nom d’un fichier peut contenir jusqu’à 255 caractères.

Pour accéder à un fichier comportant des caractères spéciaux dans son nom, on doit placer le nom du
fichier entre guillemets (ou utiliser des backslash avant les caractères spéciaux) :

luser@localhost $ vi "ceci est un test.txt"
luser@localhost $ vi ceci\ est\ un\ test.txt

3.2 Attributs des fichiers

Pour lister le contenu d’un répertoire, nous utiliserons la commande ls

Afin de disposer de plus d'informations, nous ajouterons l’option -l

luser@localhost $ cd /tmp
luser@localhost $ mkdir un_repertoire
luser@localhost $ touch un_fichier
luser@localhost $ ln -s un_fichier un_lien

luser@localhost $ ls
un_fichier un_lien un_repertoire

luser@localhost $ ls -l
total 4
-rw-r--r-- 1 ualc galc 10 Dec 3 00:42 un_fichier
lrwxrwxrwx 1 ualc galc 10 Dec 3 00:43 un_lien -> un_fichier
drwxr-xr-x 2 ualc galc 4096 Dec 3 00:42 un_repertoire

5/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Notons que les fichiers ou répertoires débutant par un "." sont cachés, c'est-à-dire qu’ils ne seront pas
visible avec la commande ls. Si nous souhaitons voir les fichiers cachés, on passe en argument -a à ls :

luser@localhost $ ls
toto profile tools

luser@localhost $ ls -a
. .profile
.. .rhosts
.cshrc .shrc
.login tools
.login_conf profile
.mail_aliases toto
.mailrc test.c

Le type du fichier est reconnaissable par la présence d'un symbole à l'extrême gauche du listing :
- Fichier ordinaire
d Répertoire
l Lien symbolique

4. Le globbing

Le globbing est l’utilisation de caractères spéciaux tels que "*", "?".

 *: correspond à aucun ou plusieurs caractères
 ? : correspond à un caractère
 [a-z] : correspond à un ensemble de caractères
 [^a-z] : correspond à tous les caractères sauf ceux de cet ensemble

Voici la liste des fichiers utilisés pour l'exemple :

luser@localhost $ ls
index.htm sommaire.htm t0st.c table.htm test.c

On affiche tous les fichiers finissant par ".htm"

luser@localhost $ ls *.htm
index.htm sommaire.htm table.htm

On affiche tous les fichiers sauf les fichiers finissant par la chaîne "htm".

luser@localhost $ ls *[^htm]
t0st.c test.c

Exemple avec "?" qui signifie un caractère non vide :

6/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

luser@localhost $ ls t?st.c
t0st.c test.c

On affiche tous les fichiers comportant "st" dans le nom :

luser@localhost $ ls *st*
t0st.c test.c

5. L'editeur VIm
Nous avons choisis de vous présenter cet éditeur de texte car c'est le plus utilisé sur la plupart des
systèmes UNIX. VIm est une version améliorée de l'éditeur VI, possédant plus de commandes et d'options.
VI est toujours le plus distribué sur les systèmes Unix, mais une maitrise de VIm vous permettra de vous
débrouiller avec l'éditeur VI.

Le logiciel "vimtutor" permet d'apprendre les principales commandes très simplement, en vous les
présentants pas à pas.

5.1 Appel de l’éditeur

Editer un fichier s’il existe, sinon, éditer un nouveau fichier vide :

vi fichier

Editer chacun des fichiers :

vi fichier_1 fichier_2

5.2 Modes d’édition

Contrairement aux éditeurs wysiwyg (what you see is what you get) VIm fonctionne par mode.

2 modes bien distincts existent :

Le mode insertion :

Les caractères tapés s'insèrent directement dans le texte en cours

Le mode commande

Les caractères tapés sont considérés comme des commandes d'édition de texte

Le logiciel démarre par defaut en mode commande.

7/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

i permet de passer en mode insertion

: permet de passer en mode commande

ESC permet de sortir des différents modes.

Le tableau ci-dessous présente les commandes principales à utiliser en mode commande.

Commande Description
:w Sauvegarde les changements
:q Quitte le document en cours
:q! Quitte le document en cours sans sauvegarder les changements
:wq Enregistre et quitte l'editeur
Enregistre sous un autre nom le document (équivalent de enregistrer
:f file2
sous)
Recherche l'occurence hop et la met en surbrillance, "n" se positionne
/hop
sur la prochaine occurence
Permet de passer en mode visualisation pour faire une sélection par
v
exemple
d Equivalent de couper, aprés une sélection par exemple
dd Coupe la ligne entière
y Equivalent de copier, après une sélection par exemple
yy Copie la ligne entière
p Coller après le curseur

5.3 Mode Edition

Après l'utilisation de ces commandes, l'éditeur passe en mode édition :

Commande Description
a Ajoute après le curseur
A Ajoute après la ligne courante
i Insère avant le curseur
Insère au debut de la ligne courante avant le premier caractère non-
I
blanc
o Ouvre une nouvelle ligne en-dessous de la ligne actuelle
O Ouvre une nouvelle ligne au-dessus de la ligne actuelle

6. tar, gzip, bzip2

6.1 tar

tar [options] [fichiers]

8/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

La commande tar est une ancienne commande Unix qui permet aisément d’archiver, c’est-à-dire de réaliser
la sauvegarde d’un ensemble de fichiers en un seul fichier. Ce fichier peut être compressé après, mais tar
ne compresse pas les fichiers qu'il archive.

La plupart des archives se trouvent sous ce format.

fichiers désigne un ensemble de fichiers ou toute une arborescence précédée d’un chemin absolu (à partir
de /) ou relatif.

Si c’est un chemin absolu qui est indiqué, il sera conservé dans l’archive et permettra ensuite d'être
récupéré par la suite.

options

Commande Description
-x Extraire le contenu d’une archive
-c Créer une nouvelle archive
-t Afficher seulement la liste du contenu de l’archive, sans l’extraire
-f fichier Indiquer le nom du fichier archive
-v Mode verbeux, affiche le détails des opérations
-z Compresser ou décompresser en faisant appel à l’utilitaire gzip
-j Compresser ou décompresser avec l’utilitaire bzip2
-p Préserver les permissions des fichiers

Exemples :

Création d'archives

1 - Effectuer la sauvegarde de tous les fichiers du répertoire /home/toto dans le fichier sauve.toto.tar placé
dans le répertoire courant :

luser@localhost $ tar -cvf sauve.toto.tar /home/toto

2 - Effectue, en plus de l’archivage, une compression des fichiers :

luser@localhost $ tar -cvzf sauve.toto.tar.gz /home/toto

Listing

luser@localhost $ tar -tvf sauve.toto.tar

Extraction

1 – Extrait tout le contenu de l'archive dans le répertoire courant :

9/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

luser@localhost $ tar -xvf sauve.toto.tar

2 - Décompresse et extrait :

luser@localhost $ tar -xvfz sauve.tar.gz

3 – Extrait de l’archive le répertoire passé en argument :

luser@localhost $ tar -xvfz sauve.tar.gz home/toto/tmp

6.2 gzip

Elle est utilisée pour compresser un fichier quelconque, et en particulier une archive tar. L'extraction se fait
par la commande gunzip, ou de manière totalement équivalente par gzip -d.

gzip [options] [fichiers]

Elle peut décompresser les fichiers .gz, mais aussi les fichiers .z , .Z

options :

-1 à -
Fixe le niveau de compression -1 etant le plus faible
9
-d Décompresse l'archive passée en argument
-c Ecrit sur la sortie standard au lieu de remplacer le fichier d’origine
-l Affiche des infos sur les fichiers de l'archive (taux de compression...)
Gzip parcoure tous les répertoires de manière récursive lors de la
-r
dé/compression

Exemples :

1 - Compresse backup.tar et le remplace par le fichier backup.tar.gz d’une taille beaucoup plus réduite :

luser@localhost$ gzip backup.tar /home/toto

2 - Compresse au maximum chaque fichier .txt séparément, et les renomme en ajoutant le suffixe .gz :

luser@localhost $ gzip -9 *.txt

6.3 bzip2

10/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Bzip2 admet la même syntaxe que gzip, mais effectue une compression plus efficace au détriment d'un
besoin accru de mémoire et cpu.

7. Recherches de fichiers
7.1 find

find [chemin] [options] [expression]

Trouve tous les fichiers sur un du répertoire chemin qui correspondent à une expression. find recherche
dans les sous répertoires.

Exemple : pour rechercher tous les fichiers mp3 contenus dans les répertoires personnels des utilisateurs :

luser@localhost $ find /home/ -name "*.mp3"

Option Description
-atime +n (- Trouve les fichiers auxquels on a accédé il y a plus de n jours (ou
n) moins de n jours)
-mtime +n (-
Trouve les fichiers modifiés il y a plus de n jours (ou moins de n jours)
n)
-name "toto*" Trouve les fichiers dont le nom commence par toto
-maxdepth n Définit le niveau maximum de sous-répertoire à explorer
Indique le type de fichier à rechercher :

 l pour les liens symboliques
-type
 d pour les répertoires
 f pour les fichiers

Exemple : nous voulons rechercher tous les répertoires du répertoire courant contenant "rep" dans leur
nom, en ne descendant pas dans les sous-répertoires

luser@localhost $ find . -type d -maxdepth 0 "*rep*"

On peut utiliser find pour exécuter une commande sur certains fichiers :

find [chemin] [option] -exec cmd {} \;

 Les fichiers trouvés sont passés à cmd comme des paramètres.
 {} sera remplacé par le nom du fichier.

11/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

 Le point virgule execute la commande sans demander d'arguments supplémentaires, normalement
le cas avec un "\;".

Exemple :

Pour effacer tous les fichiers .avi de mon répertoire :

luser@localhost $ cd ~
luser@localhost $ find . -name "*.avi" -exec rm {} \;

7.2 slocate – locate

locate est un lien symbolique de la commande slocate.

La commande slocate utilise une base de données que vous devez mettre à jour régulièrement.

Des fichiers récemment créés ne sont donc pas forcément référencés. La base de données peut être mise à
jour manuellement par le super utilisateur (root) avec la commande slocate -u ou encore updatedb

L’avantage de slocate est de permettre une recherche beaucoup plus rapide qu’avec la commande find.
En effet, lors d'une recherche, la commande find parcourant à chaque lancement le contenu entier du
disque, il est bien plus rapide d'utiliser la commande locate

Exemple : recherche tous les fichiers dont le nom comporte la chaîne toto :

luser@localhost $ locate toto

8. "Pipes" et Redirections

Une des bases essentielles d'un système Unix / Linux est la redirection d'un flux émanant d'un programme
en direction d'un autre.

8.1 Les flux standards

Les flux standards sont au nombre de trois :

STDIN (0) : STDIN n’est ni plus ni moins que l’entrée au clavier (dite "entrée standard"). Cela veut dire
que tout ce que vous tapez au clavier va passer par ce canal d’entrée/sortie.

STDOUT (1) : STDOUT est ce que l’on appelle la "sortie standard". Les informations qui apparaissent à
l’écran passent par le canal STDOUT.

STDERR (2) : STDERR est la "sortie d’erreur standard". L’utilité d’avoir deux flux de sortie permet de
séparer les messages d’erreurs et la sortie normale.

Les numéros 0,1,2 désignent respectivement STDIN, STDOUT et STDERR, et peuvent être utilisés dans les
commandes shell.

8.2 Redirections

12/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Ainsi, si nous exécutons un programme comme ls, il va afficher le résultat sur la sortie standard, c'est à
dire l'écran par défaut. Il est possible de rediriger ces différents flux vers des fichiers, d’autres flux…

Ceci se fait par le biais des signes "<" et ">" Une commande "commande > un fichier" va créer un fichier
"un fichier" contenant le résultat de la commande "commande".

De même, avec le signe "<" au lieu de ">" aurait utilisé le contenu du fichier "un fichier" en entrée de la
commande "commande".

Exemple :

$ cd /tmp
$ ls -l /bin
total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
-rwxr-xr-x 1 root bin 295012 Sep 3 1999 bash1
lrwxrwxrwx 1 root root 5 Nov 10 2000 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
...

$ ls -l /bin > un_fichier
$ cat un_fichier
total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
-rwxr-xr-x 1 root bin 295012 Sep 3 1999 bash1
lrwxrwxrwx 1 root root 5 Nov 10 2000 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
...

Si on utilise plusieurs fois des redirections sur un même fichier, avec ce que l’on a vu, le fichier est écrasé à
chaque fois. Pour éviter cela il est possible d’utiliser "<<" à la place de "<" et ">>" à la place de ">",
auquel cas les données seront concaténées dans le fichier (mises à la suite).

luser@localhost $ ls linux-lfs/
linux-lfs-flat.vmdk linux-lfs.vmx nvram
linux-lfs.vmdk linux-lfs.vmx.WRITELOCK vmware.log

luser@localhost $ ls evolution/
addressbook-sources.xml config mail shortcuts.xml
cache gtkrc-mail-fonts meta vfolders.xml
camel-cert.db local searches.xml views

luser@localhost $ ls linux-lfs/ >> fichier
luser@localhost $ ls evolution/ >> fichier

luser@localhost $ cat fichier
linux-lfs-flat.vmdk
linux-lfs.vmdk
linux-lfs.vmx

13/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

linux-lfs.vmx.WRITELOCK
searches.xml
shortcuts.xml
vfolders.xml
views

Voici un exemple montrant la redirection de la sortie standard et de la sortie d’erreur standard :

Avec l’outil find, on va rechercher un fichier dont le nom comporte "tes" dans le répertoire /etc. On redirige
les résultats dans le fichier "fichier" et les erreurs dans le fichier "erreurs" :

2> signifie que l’on redirige l’erreur standard et > signifie implicitement 1>

luser@localhost $ find /etc/ -name "*tes*" > fichier 2> erreurs

luser@localhost $ cat fichier
/etc/CORBA/servers/gnotes_applet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
/etc/dumpdates
/etc/openldap/ldaptemplates.conf

luser@localhost $ cat erreurs
find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied

Notons que l’on peut rediriger l’erreur standard et la sortie standard vers le même fichier :

luser@localhost $ find /etc/ -name "*tes*" > fichier 2>&1
luser@localhost $ cat fichier
find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied
/etc/CORBA/servers/gnotes_applet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
/etc/dumpdates
/etc/openldap/ldaptemplates.conf

Voici un dernier exemple montrant la redirection de l’entrée standard :

luser@localhost $ cat .bashrc
export PS1="\[\033[1;35m\][\u@\h \W]$\[\033[0m\] "
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
BLA=‘ps aux | grep XFree86‘
if [ ! "$BLA" == "" ]; then
export TERM=xterm-color
fi
alias ncftp=’ncftp3’
alias ls=’ls -G’
alias vi=’vim’

luser@localhost $ tr ’A-Z’ ’a-z’ < .bashrc
export ps1="\[\033[1;35m\][\u@\h \w]$\[\033[0m\] "

14/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

export path=$path:/usr/local/bin:/usr/local/sbin
bla=‘ps aux | grep xfree86‘
if [ ! "$bla" == "" ]; then
export term=xterm-color
fi
alias ncftp=’ncftp3’
alias ls=’ls -g’
alias vi=’vim’

Avec tr, on a converti les caractères majuscules en minuscules, le flux d’information venant du fichier
".bashrc".

8.3 Pipes

Les "pipes" ("|") quand à eux sont "des voies de communication" d’un processus vers un autre.

Par exemple si nous faisons "commande 1 | commande 2", le résultat de la commande "commande 1" va
être utilisé en entrée de la commande "commande 2".

Il est possible de chaîner ce type de commande autant que l’on veut. Rien de tel qu’un exemple :

luser@localhost $ ls -la /bin > un_fichier
luser@localhost $ grep "bzip" un_fichier
lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover

luser@localhost $ ls -la /bin | grep "bzip"
lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover

Chapitre 4 - Organistation du FHS

FHS (Filesystem Hierachy System) est une convention qui organise l'arborescence des répertoires sous
Linux. Cette convention est aussi valable pour Unix. Cette convention est primordiale, grâce au FHS lorsque
vous installez un programme sous linux, peu importe votre distribution, les fichiers iront toujours dans les
mêmes répertoires.

1.1 Hiérarchie root

Sous Linux, toute l'arborescence part de "/" appelé root. Ici se trouvent tous les dossiers élémentaires dont
voici la description.

Répertoire Description
/bin Contient les binaires (exécutables) vitaux pour l'utilisateur
/boot Contient les fichiers relatifs au bootloader
/dev Contient tout les périphériques
Contient les fichiers de configuration et des fichiers nécessaires au
/etc
démarrage (rc scripts)
/home Contient les répertoires utilisateurs

15/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

/lib Contient les librairies partagées et les modules du noyau (/lib/modules)
/mnt Contient les dossiers pour les points de montage temporaires
/proc Contient les informations sur le noyau
/root Répertoire personnel de root
/sbin Contient les binaires vitaux pour l'administrateur (root)
Contient les dossiers et fichiers temporaires. Le dossier est vidé à chaque
/tmp
démarrage
/usr Contient tout ce qui n'est pas vital au système (voir ci-dessous)
Contient des fichiers qui changent fréquemment, tel que : les logs, les
/var
mail, queues d'impression... (voir ci-dessous)

1.2 Hiérarchie usr

Le répertoire "/usr" contient certains dossiers déjà présents dans "/" (bin, sbin, lib, tmp)

Mais ceux-ci ne sont pas nécessaires au fonctionement minimal du système. On va donc y trouver les
fichiers relatifs aux programmes tierce partie, par exemple le navigateur web ou les lecteurs multimédias.

Répertoire Description
/usr/bin Contient les binaires pour l'utilisateur
/usr/doc Contient la documentation des programmes installés (hors manpages)
/usr/lib Contient les librairies partagées
/usr/man Contient les manpages (pages de manuel)
/usr/sbin Contient les binaires pour l'administrateur
/usr/src Contient les sources du noyau
/usr/X11R6 Contient les fichiers du serveur X

1.3 Hiérachie var

Un fichier variable est un fichier dont le contenu va changer fréquemment et sans l'intervention directe de
l'homme (ex : fichier de log). Ils sont opposés aux fichiers statiques, fichiers dont le contenu ne varie pas
(ex : fichier de configuration)

Le dossier "/var" contient tous les fichiers variables.

/var/log Contient tous les fichiers de log
/var/mail Contient les boites aux lettres de chaque utilisateur
/var/run Contient les fichiers des PID des deamons
/var/spool Contient les queues en cours (envoi de mail, impression, crontab)

Chapitre 05 - Gestion des utilisateurs

16/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

1. Gestion des utilisateurs et groupe
1.1 Les utilisateurs

Unix est un système multi-utilisateurs. Plusieurs personnes peuvent l'utiliser de façon simultanée (dans le
cas de configurations en réseau).

Pour le système, un utilisateur n'est pas obligatoirement une personne physique. Un utilisateur peut détenir
des fichiers, exécuter des programmes ou encore déclencher automatiquement des fonctions systèmes.

Par exemple, un utilisateur peut être créé dans le seul but de détenir des fichiers publics. On parle alors de
pseudo utilisateur.

Un utilisateur possède un nom d'utilisateur appelé aussi login lui permettant d'établir une connexion. Ce
login est associé à un mot de passe personnel. Pour accéder aux ressources du système, l'utilisateur doit
entrer la bonne paire login/mot de passe : c'est l'authentification(le login).

Les utilisateurs sont identifiés par le système grâce à un UID (identifiant d'utilisateur) unique. Cet identifiant
est une valeur numérique.

1.1.1 Le fichier /etc/passwd

Le fichier /etc/passwd contient les informations relatives à tous les utilisateurs du système. On y touve leur
:

 login
 mot de passe (chiffré)
 UID
 GID principal
 nom complet et autres informations
 répertoire principal
 leur shell

La syntaxe de "/etc/passwd" est très simple, chaque ligne concerne un utilisateur. les différents champs
sont séparés par des ":" :

login:mot-de-passe:UID:GID:info-utilisateur:répertoire-principal:shell

Détaillons les champs :

 Login : c'est l'identifiant que doit entrer l'utlisateur pour s'authentifier. La convention veut qu'un
utilisateur John Smith possède jsmith ou smith_j comme login.
 Mot de passe : il est évident que le mot de passe n'apparait pas en clair dans le fichier, il est chiffré
en md5. C'est la commande passwd qui s'occupe de chiffrer le mot de passe. Ce champ peut
prendre plusieurs siginifications :
o "*" : il est impossible de s'authentifier sur le système avec ce compte
o "!!" : Le compte est désactivé
o "x" ou "!" : le mot de passe est dans un fichier shadow (voir ci-après)
o champ vide : Il n'y a pas de mot de passe pour ce compte.
 UID : il s'agit de l'identifiant unique de l'utilisateur.
o L'utilisateur root possède l'UID 0
o Par convention, les UID inférieurs à 100 sont réservés aux comptes système.
 GID : l'identifiant du groupe principal de l'utilisateur

17/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

 Info utilisateur : des informations sur l'utilisateur. chaque information est séparée par une virgule
(le nom complet, numéro de poste ...).
 répertoire personnel : Il s'agit du répertoire dans lequel sont stockés les fichiers appartenant à
l'utilisateur. En général de la forme /home/login.
 shell : c'est l'interpréteur de commandes qui sera lancé après l'authentification.

1.1.2 Le fichier /etc/shadow

Le fichier /etc/passwd est accessible à tout le monde. en effet, certaines commandes ont besoin de
connaitre la liste des utlisateurs ou la correspondance login/UID.

La présence du mot de passe dans /etc/passwd, même crypté, pose un problème de sécurité. La solution
à ce problème est de stocker les mots de passe dans un fichier différent : /etc/shadow. Pour garantir la
sécurité, seul l'administrateur peut le lire.

Note: sous Linux, si le fichier /etc/shadow n'est pas utilisé, l'utilitaire pwconv
permet, à partir d'un fichier /etc/passwd unique, de créer le fichier
/etc/shadow qui lui correspond.

1.2 Les Groupes

Le fichier /etc/group contient les information relatives au groupes présents sur le système.

Voici sa syntaxe :

groupe:*:GID:utilisateurs

 groupe : le nom du groupe
 * : la présence de ce champ est lié aux anciennes versions d'Unix et n'est plus utilisé. Il peut rester
vide ou contenir le caractère "*" ou "x".
 GID : c'est l'identifiant unique du groupe sous la forme d'une valeur numérique.
 utilisateur : il s'agit de la liste des utilisateurs appartenant au groupe. Ils sont séparés par des
virgules :

compta:x:230:pierre,romain,jerome

1.3 Les commandes de gestion des utilsateurs

Afin de manipuler les fichiers passwd, shadow et group facilement, des commandes ont été crées. Elles
automatisent les vérifications (l'utilisateur à créer existe-t-il déja ? le mot de passe est-il assez compliqué
?...) évitant ainsi toute erreur de saisie.

1.3.1 Ajouter un utilisateur

La commande useradd permet de créer un utilisateur :

18/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

useradd [options] login

Principales options de useradd
Option Explication
-c commentaire Informations concernant l'utilisateur (nom, poste)
-d répertoire Chemin du répertoire personnel de l'utilisateur
-e date Date d'expiration du compte. Le format est AAAA-MM-JJ
C'est le nombre de jours suivant l'expiration du mot de passe
après lequel le compte est désactivé. La valeur 0 permet de
-f nombre de
désactiver le compte dès que le mot de passe expire. La valeur -1
jours
permet de désactiver cette caractéristique. La valeur par défaut
est -1
Le nom du groupe ou le numéro du groupe de connexion initial de
-g groupe
l'utilisateur. Le nom ou le numéro du groupe doivent exister. Le
principal
numéro de groupe par défaut est 1
-G groupes Les autres groupes auxquels appartient l'utilisateur (séparés par
supplémentaire des virgules)
Le répertoire de l'utilisateur sera créé (par défaut, cela n'est pas
-m
fait)
A utiliser si et seulement si l'option -m est présente. Permet de
copier les fichiers et répertoires contenus dans le répertoire
-k [ répertoire ]
répertoire (/etc/skel si non spécifié) dans le répertoire de
l'utilisateur
Vous pouvez saisir le mot de passe en option. Il doit être chiffré
-p le mot de (pour récupérer la version cryptée d'un mot de passe il faut utliser
passe chiffré la bibliothèque crypt). Le comportement par défaut est de
désactiver le compte
-s chemin vers un
Shell lancé à la connexion de l'utilisateur
exécutable
-u uid L'identifiant unique de l'utilisateur

Exemple : nous voulons créer l'utlisateur lambda :

 commentaire : "utilisateur lambda"
 son shell : /bin/zsh
 son répertoire personnel : /home/lambda
 nous recopions le contenu de /etc/skel dans son répertoire
 il appartient aux groupes "dev" et "final"
 le compte sera désactivé immédiatement après expiration du mot de passe

root@localhost # useradd -c "utilisateur lambda" -f 0 -G final,dev -m -k
/etc/skel -s /bin/zsh lambda

La commande useradd -D montre les options par défaut :

19/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel

Il est possible de changer les valeurs par défaut grace aux options suivantes :

Options de useradd -D
Option Explication
-h répertoire Répertoire dans lequel créer les répertoires utilisateurs
-e date La date d'expiration du compte
-f nombre de jours Délai de désactivation après expiration du mot de passe
-g GID Le groupe par défaut
-s chemin vers un exécutable Le shell par défaut

1.3.2 Suppression d'un utilisateur

La commande userdel permet de supprimer un utilisateur :

root@localhost # userdel options login

L'option -r efface le répertoire personnel de l'utilisateur.

1.3.3 Changer le mot de passe d'un utilisateur

La commande passwd permet de changer le mot de passe d'un utilisateur. L'administrateur peut changer
n'importe quel mot de passe. Un utilisateur normal ne peut changer que son propre mot de passe.

passwd [ options ] [ login ]

Si l'argument login n'est pas spécifié, le changement de mot de passe s'applique sur l'utilisateur courrant.

Options passwd
Option Explication
Indique que seul le mot de passe doit être mis à jour sans toucher aux
-k
propriétés d'expiration
Permet de verrouiller le compte spécifié en préfixant le mot de passe crypté
-l
par le caractère "!". Seul l'utilisateur root peut utiliser cette option
Le mot de passe doit être lu à partir de l'entrée standard qui peut alors être
--stdin
un tube (pipe)
-u Déverrouille le mot de passe du compte. Seul l'utilisateur root peut utiliser

20/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

cette option
Supprime le mot de passe d'un compte. Le champ réservé au mot de passe
-d crypté sera supprimé dans le fichier de configuration. Seul l'utilisateur root
peut utiliser cette option
Affiche des informations sur le statut du mot de passe pour un compte donné.
-S
Seul l'utilisateur root peut utiliser cette option

1.3.4 Afficher des informations sur un utilisateur

Pour connaître l'identité de l'utilisateur courant (bien que cela soit affiché dans la majorité des prompts par
défaut) on utilise la commande whoami.

Elle affiche le login de l'utilisateur courant. Les commandes who, users et w permettent de connaître les
utilisateurs actuellement connectés sur la machine.

1.4 Les commandes de gestion des groupes

1.4.1 Créer un groupe

La commande groupadd permet de créer un nouveau groupe :

root@localhost # groupadd option groupe

Options de groupadd
Option Explication
Permet de choisir la valeur numérique du GID du nouveau groupe. Cet
-g
identifiant doit être unique
Cette option permet d'ajouter un groupe système (dont le GID est inférieur à
-r
500)
Permet de stopper la commande lorsque le groupe ou le GID du nouveau
-f
groupe existe déjà

1.4.2 Suppression d'un groupe

Pour supprimer un groupe, on utilise la commande groupdel :

groupdel GID

Note: on ne peut pas supprimer un groupe si c'est le groupe principal d'un
utilisateur.

1.4.3 Modifier les groupes secondaires d'un compte

21/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Pour modifier les groupes secondaire d'un utilisateur, on utilise la commande usermod qui est similaire à
useradd et supporte les mêmes options :

root@localhost # usermod -G toto,users,fileshare,dev toto

Ceci permet d'ajouter l'utilisateur "toto" dans les groupes "toto", "users", "fileshare" et "dev".

Attention : lors de l'utilisation de la commande usermod -G il est nécessaire de rappeler l'ensemble de
groupes secondaires auxquels appartient l'utilisateur.

On peut aussi ajouter et enlever des utilisateurs d'un groupe grâce à la commande gpasswd

Options de gpasswd
Option Explication
-a Ajout d'un utilisateur
-d Suppression d'un utilisateur

1.4.4 Afficher des informations sur les groupes

Pour connaître les groupes auxquels appartient un utilisateur, on utilise la commande groups. Sans
argument, elle affiche les groupes de l'utilisateur courant. Pour connaître less groupes d'un utilisateur
particulier, il suffit de passer son login en argument de la commande :

root@localhost # groups
root wheel disk adm sys daemon bin
luser@localhost $ groups toto
toto users fileshare

Sur de très anciens SystemV, il n'était pas possible d'activer plusieurs groupes simultanément pour le même
utilisateur. La commande id permet de connaître les groupes actifs :

root@localhost # id
uid=0(root) gid=0(root) groupes=0(root),
10(wheel),6(disk),4(adm),3(sys),2(daemon),1(bin)

Pour changer le groupe actif sur un tel système, on utilise la commande newgrp. Lorsqu'elle est utilisée
sans argument, elle active le groupe principal de l'utilisateur (le groupp e qui figure dans "/etc/passwd").

1.5 Changer d'identité

Il se peut qu'un utilisateur soit obligé d'effectuer des tâches avec une identité différente. La situation la plus
courante étant un utilisateur normal voulant effectuer quelques tâches en tant qu'administrateur.

La commande su (switch user), permet de changer d'identité:

Commande Explication

22/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Sans option, su permet de se connecter en tant
su
qu'administrateur
su lambda Agir en tant qu'utilisateur lambda
Se connecter en tant que lambda. Avec "-" on récupère tout
su - lambda
l'environnement de l'utilisateur lambda
su -c "mount l'option -c permet simplement d'exécuter la commande entre
/dev/cdrom guillemet en tant que root (pas d'option). Une fois la
/mnt/cdrom" commande terminée, on reprend son identit

Chapitre 06 - Gestion des permissions

1. Les permissions
Comme vu précedement, la commande ls -l nous donne beaucoup d'informations sur un fichier.

root@localhost # ls -l
-r-xr-xr-x 1 root wheel 32464 27 May 09:35 /bin/ls

Nous allons nous interesser aux parties : droits et propriétaire du fichier.

1.1 Propriétaire

Un fichier appartient à un utilisateur et un à un groupe. Généralement le groupe dans lequel est
l'utilisateur. Dans l'exemple ci-dessus, root est l'utilisateur propriétaire et wheel le groupe propriétaire.

1.1.1 Changer l'utilisateur propriétaire

Nous allons pouvoir changer l'utilisateur propriétaire grâce à la commande : chown

La commande chown n'est utilisable que par root.

Note:
les options entre crochets [ ] sont des options facultatives

Syntaxe :

chown [-R] user[:group] fichier

L'option -R est utilisée pour changer le propriétaire de façon recursive pour les dossiers.

Exemple :

root@localhost # ls -l fichier
-rw-r--r-- 1 andrew kernel 0 7 Sep 10:52 fichier
root@localhost # chown linus

23/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

-rw-r--r-- 1 linus kenrel 0 7 Sep 10:52 fichier
root@localhost # chown richard:gpl
-rw-r--r-- 1 richard gpl 0 7 Sep 10:52 fichier

1.1.2 changer le groupe propiétaire

La commande chown n'étant utilisable que par root, les utilisateurs disposent de la commande chgrp pour
changer le groupe propriétaire. L'utilisateur doit appartenir au nouveau groupe.

Syntaxe :

chgrp [-R] group fichier

Exemple :

richard@localhost # ls -l fichier
-rw-r--r-- 1 richard gpl 0 7 Sep 10:52 fichier
richard@localhost # chgrp gnu fichier
-rw-r--r-- 1 richard gnu 0 7 Sep 10:52 fichier

1.2 Les droits

Sous linux il y a trois actions que l'on va autoriser ou non :

 lire : Read
 ecrire : Write
 exécuter : eXecute

Ces trois actions vont être définies pour trois types de personnes :

 l'utilisateur propriétaire : User
 le groupe propriétaire : Group
 les autres : Others

1.2.1 Les fichiers

Read : lire le contenu du fichier

Write : modifier le contenu du fichier

eXecute : exécuter le fichier

1.2.2 Les dossiers

Read : lister le contenu du dossier

Write : modifier le contenu (supprimer un fichier, renommer un fichier)

eXecute : exécuter des commandes à l'interieur du dossier.

24/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

1.2.3 Modifier les droits

Nous allons pouvoir modifier les droits avec la commande chmod. Cette commande peut etre utilisée de
deux façons différentes : avec des lettres ou avec des chiffres.

Syntaxe :

chmod [–R] droits fichier

1.2.3.1 Mode lettré

Dans ce mode, nous allons utiliser des lettres et des opérateurs pour ajouter ou supprimer des droits.

lettre signification lettre signification
u utilisateur r read
g groupe w write
o others x execute
a tous

Les opérateurs disponibles sont :

+ ajoute un droit
- supprime un droit
= ajoute un droit et supprime les autres

Exemple :

root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod u+x fichier
-rwxr--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod g+wx,o-r fichier
-rwxrwx--- 1 root wheel 0 7 Sep 10:52 fichier
root@lab# chmod a=r fichier
-r--r--r-- 1 root wheel 0 7 Sep 10:52 fichier

1.2.3.2 Mode chiffré

Dans ce mode, nous allons transformer les droits en valeurs octales :

chiffre signification
4 read
2 write
1 execute

25/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

En additionant ces chiffres, on arrive à un nombre à trois chiffres. Les centaines pour l'utilisateur, les
dizaines pour le groupe et les unités pour les autres.

Exemple :

Nous allons donner les droits de lecture, écriture et exécution à l'utilisateur. Les droits de lecture et
exécution au groupe et aux autres.

4+2+1 = 7
4+1 = 5

root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod 755 fichier
-rwxr-xr-x 1 root wheel 0 7 Sep 10:52 fichier

1.3 Umask

Par défaut, tous les fichiers créés ont comme droit 666 et les dossiers 777. L'umask est un masque qui va
réduire ces droits. Lors de la création d'un fichier, le système va soustraitre l'umask aux droits par défaut.
Par l'umask est à 0022.

On a donc 666 - 022 = 644.

Vérifions en créant un fichier.

root@localhost # touch document
root@localhost # ls -l document
-rw-r--r-- 1 root wheel 0 7 Sep 11:02 document

On peut définir le umask grâce à la commande umask.

root@localhost # umask 077

1.4 Les droits spéciaux

Il existe trois droits spéciaux : suid, sgid et sticky bit. Il sont ajoutés grâce à la commande chmod.

droit lettre chiffre
suid s 4
sgid s 2
sticky t 1

1.4.1 SUID

Lorsque vous exécutez une commande, celle-ci se lance avec votre uid. Cette commande aura donc accès
seulement aux fichiers où vous possedez des droits.

26/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Si le suid est placé sur un exécutable, ce dernier se lancera avec l'uid de son propriétaire.

1.4.2 SGID

Le droit sgid fonctionne de la même façon que le suid en ce qui concerne les exécutables.

Mais le sgid peut aussi être attribué à un dossier. Tout fichier créé dans un dossier portant le sgid aura
comme groupe propriétaire le groupe du dossier.

1.4.3 Sticky

Si vous possedez le droit d'écriture sur un dossier, vous pouvez renommer ou supprimer tous les fichiers
qu'il contient. Ce fonctionnement n'est pas adéquat pour un dossier public, où tout le monde à accès en
écriture comme "/tmp". Si le sticky bit est placé sur un dossier, seul le possesseur d'un fichier pourra le
renommer ou le supprimer.

Chapitre 07 - Gestion des disques

1. Boot-loader

1.1 Qu'est ce que le boot-loader?

Le boot loader est un programme lancé juste après le chargement du Bios. Il permettra à l’utilisateur de
choisir quel système d’exploitation il veut lancer. Dans le cas de linux, le boot loader permet aussi de choisir
quel noyau l’utilisateur veut charger.

Il existe deux principaux bootloaders sous Linux qui sont Grub et Lilo. Il en existe d’autre, mais nous ne les
verrons pas dans ce cours.

Le bootloader peut faciliter la réparation d'un système Linux dans certains cas (perte du mot de passe root,
maintenance sur les systèmes de fichiers).

1.2 Démarrage

Que se passe-t'il entre le moment où l'on allume sa machine jusqu'au moment où l'on entre son login et
mot de passe :

1. le BIOS effectue une série de tests sur le matériel (RAM, détection des disques, ...) nommé POST :
Power On Self Test. C'est pendant cette étape que l'utilisateur peut appuyer sur une touche pour
entrer dans le BIOS.
2. le bootloader est chargé en mémoire, l'utilisateur peut alors choisir le système à démarrer
3. le noyau linux est chargé en mémoire par le bootloader, il s'initialise, détecte les périphériques, ...
4. le noyau passe alors la main au programme sysvinit, souvent dénommé init, père de tous les
processus. En effet c'est ce programme ayant comme PID 1, qui va lancer tous les services au
démarrage.
5. init lance en dernier un terminal virtuel qui demande un login/password pour ouvrir un shell

Bootloader utilisé suivant les os

Windows Linux

27/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

NTLDR Lilo
Grub

2. Configuration de lilo et grub
2.1 Lilo

Lilo est le bootloader le plus connu sous linux car c’est l’un des plus vieux. Il ne peut pas être installé sur
tous les systèmes de fichier, mais il est compatible avec les plus répandus : ext2, ext3, ...

Lilo est séparé en deux stages

 le stage_1 est un petit programme (<= 512 octets) pouvant être placé dans le MBR (Master Boot
Record) ou une disquette. Ce stage fait appel au second qui possède plus d'espace mémoire
 le stage_2, appelée chargeur d'amorçage, est généralement placé sur le disque dur. Il offre un
menu permettant la sélection des systèmes d'exploitations et de charger le noyau en RAM

Lilo est configuré grâce au fichier de configuration : /etc/lilo.conf

A chaque modification du fichier de configuration, la commande /sbin/lilo doit obligatoirement être
exécutée pour mettre à jour le stage_1.

boot = /dev/hda # Emplacement du stage_1, ici le MBR

default = Linux # Image à lancer par défaut (voir ci-dessous)
timeout = 100 # Temps en dixeme de secondes
# avant de booter sur l’image par défaut

prompt # Affiche la liste des images
message=/boot/message # Fichier contenant le texte qui sera affiché

password = secret # Le mot de passe en clair
restricted # Un mot de passe sera demande si
l’utilisateur
# ajoute des options à une image

## Configuration pour linux

image=/boot/bzImage # Specifie l'emplacement du noyau
label=linux # Nom affiche dans le menu
initrd=/boot/initrd.img # Image ramdisk
read-only # Montera « / » en lecture seul
root=/dev/hda5 # partition où se trouve « / »

## Configuration pour non-Linux
other=/dev/hda1
label=windows

2.2 Grub

Grub (Gnu Grand Unified Bootloader) est un bootloader qui devient de plus en plus courant.

Comme lilo, grub fonctionne par stages.

28/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

En plus des 2 stages évoqués dans lilo, grub intègre un stage intermédiaire, le stage 1_5 qui permet de
charger le stage 2 sur n'importe quel système de fichier.

Pour installer Grub il faut taper les commandes suivantes.

root@localhost # grub
grub> root (hd0,1) # partition où sont les fichiers
# de configuration de grub
grub> setup (hd0) # Emplacement du stage_1, ici le MBR
grub> quit

Comme lilo, grub possède un fichier de configuration : "/boot/grub/grub.conf"

timeout=30 # Temps d'attente en seconde avant le démarrage par défaut.
default=0 # Système par défaut, ici le premier de la liste.

splashimage=(hd0,1)/grub/splash.xpm.gz # image de fond

## Configuration pour Linux

title Linux # Nom qui apparaitra dans la liste
root (hd1,0) # Partition où sont les fichiers
# de configuration de grub

kernel /boot/vmlinuz-2.4.25 root=/dev/hdb2
# Emplacement de l’image suivit de la partion “/”
initrd /initrd.img # Image ramdisk

## Configuration pour Windows

title Windows
rootnoverify (hd0,0)
chainloader +1

3. Boot loader sur disquette
L'un des autres moyens de booter un système est de placer le boot loader sur disquette.

Ceci peut être très utile si on écrase le MBR, ou si une erreur dans un fichier de configuration empêche la
machine de redémarrer.

3.1 Lilo

L'installation de lilo sur disquette se fait en changeant l’option "boot" du fichier de configuration.

boot=/dev/fd0

Puis on exécute la commande lilo pour copier le stage_1 sur une disquette.

29/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

3.2 Grub

Pour grub, pas besoin de modifier le fichier de configuration. On va simplement copier les deux stages sur
deux disquettes.

Premièrement, formatez les deux disquettes

roto@localhost # fdformat /dev/fd0
root@localhost # mke2fs /dev/fd0

Copiez les deux stages sur deux disquettes différentes, sinon vous écraserez le premier.

root@localhost # dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
root@localhost # dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 count=1

Rendre la disquette contenant le stage 1 bootable

root@localhost # grub
grub> root(fd0)
grub> setup(fd0)
grub> quit

4. Gestion des disques
4.1 Les disques durs sous Linux

Comme vu précédemment, sous Linux tout est représenté par un fichier. Les disques durs n'échappent pas
à cette règle. Par convention tous les périphériques sont représentés dans le dossier "/dev". On distingue
deux types de disques : les IDE et les SCSI. Ils sont nommés respectivement "hd" et "sd" suivit d'une lettre
et d'un chiffre. La lettre représente la position du disque sur le bus et le chiffre représente l'une des
partition de ce disque.

Par exemple, le disque maître du premier contrôleur IDE sera nommé "/dev/hda". La seconde partition de
ce disque sera "/dev/hda2".

4.2 Partitions

Un disque ne peut contenir que 4 partitions primaires. Mais il est possible de remplacer une partition
primaire par une partition étendue. Cette partition étendue peut contenir maximum 12 partitions logiques.
Notre disque pourra donc, au maximum, contenir 15 partitions utilisables soit 3 primaires plus les 12
partitions logiques.

Cette méthode est la plus utilisée, indépendemment du système d'exploitation. Il existe une autre méthode
appelé LVM (Logic Volume Manager) mais elle ne sera pas abordée dans ce cours.

Sous Linux, contrairement à Windows, chaque partition n'est pas représentée sous forme de lecteur. Nous
allons pouvoir monter, c'est à dire ajouter cet espace disponible à notre système de dossier hiérarchique.

30/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Par exemple si notre machine fait office de serveur FTP, nous pourrons créer une partition dédiée qui sera
montée dans "/var/ftp/". Ainsi le serveur FTP n'utilisera pas la place réservée aux utilisateurs ou aux fichiers
de logs.

Il faudra aussi prévoir une partition réservée à la swap.

4.2.1 Partitionner un disque dur

Il existe plusieurs outils pour partitionner un disque dur sous linux. Les plus communs sont :

 fdisk : utilitaire en mode texte avec menu interactif
 cfdisk : utilitaire en mode curses (pseudo graphique) avec une liste des partitions.

Ces deux utilitaires se lancent de la même façon :

commande /dev/disk

Il est possible de modifier les partitions d'un disque dur en cours d'utilisation. Mais vous devrez redémarrer
pour que les changements soient prises en compte.

Voici un exemple avec fdisk

Nous allons créer 1 partition primaire contenant la swap (512Mo) et une partition logique contenant "/"
(5Go)

root@localhost # fdisk /dev/hda

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2434, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2434, default 2434): +512M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (64-2434, default 64):
Using default value 64
Last cylinder or +size or +sizeM or +sizeK (64-2434, default 2434):
Using default value 2434

Command (m for help): n

31/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (64-2434, default 64):
Using default value 64
Last cylinder or +size or +sizeM or +sizeK (64-2434, default 2434): +5000M

Command (m for help): p

Disk /dev/hda: 20.0 GB, 20020396032 bytes
255 heads, 63 sectors/track, 2434 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 63 506016 82 Linux swap
/dev/hda2 64 2434 19045057+ 5 Extended
/dev/hda5 64 672 4891761 83 Linux

Command (m for help): w
Writing table partition

m Aide
p Affiche l'état du disque
n Crée une nouvelle partition
d Supprime une partition
t Change le type de partition (82 : Linux Swap, 83 : Linux Native)
w Sauver et quitter
q Quitter sans sauver

4.2.2 Formater une partition

Une fois nos partitions créées, il faut les formater afin de pouvoir créer un système de fichier dessus.

Le système de fichier indique, entre autres, comment organiser les données sur le disque dur.

Dans la majorité des cas, nous utiliserons la commande mkfs. Certains systèmes de fichiers utilisent leur
propre commande, nous les verrons ci-dessous.

Il existe deux moyens d'utiliser la commande mkfs :

mkfs -t type /dev/partition
mkfs.type /dev/partition

voici un tableau des systèmes de fichiers utilisables sous linux avec la commande à utiliser.

swap mkswap
ext2 mke2fs, mkfs -t ext2, mkfs.ext2
ext3 mke2fs -j, mkfs -t ext3, mkfs.ext3

32/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

reiserfs mkreiserfs
xfs mkfs -t xfs, mkfs.xfs
jfs mkfs -t jfs, mkfs.jfs
vfat mkfs -t vfat, mkfs.vfat

4.3 Access aux périphériques de stockage

Une fois le disque dur partitionné et formaté, nous allons pouvoir l'utiliser. Comme dit précedemment, pour
accéder à ce disque nous allons devoir le monter. Le terme monter signifie que nous allons ajoute un
disque ou un partage réseau à notre arborescence.

Concrètement, nous allons définir un répertoire, appelé point de montage, qui va pointer vers la ressource
voulue.

Par convention, les points de montage sont regroupés dans le dossier "/mnt".

4.3.1 commande mount / umount

La commande mount va permettre de monter un périphérique. Si l'on utilise la commande mount sans
paramètres, on obtiendra la liste des périphériques déjà montés.

Syntaxe :

mount -t type /dev/partition /mnt/dir

L'option -t renseigne le système de fichier utilisé. On peut mettre auto pour que mount essaye de trouver
le système de fichier lui-même.

Pour connaître tous les systèmes de fichier supportés par votre noyau, consultez le fichier
"/proc/filesystems"

Il est possible de passer plus d'options grâce à l'argument -o (voir tableau ci-dessous)

La commande umount va, au contraire, démonter un périphérique.

Syntaxe :

umount /mnt/dir

4.3.2 fichier /etc/fstab

Ce fichier va nous être utile pour deux choses. Premièrement, on va pouvoir y entrer toutes les partitions à
monter automatiquement au démarrage. Deuxièmement, faciliter l'utilisation de la commande mount, en
entrant toutes les options à utiliser pour chaque périphérique.

Dans le ficher "/etc/fstab" chaque ligne représente un périphérique à monter. Chaque ligne est composée
de six parties :

 le chemin du périphérique
 le point de montage

33/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

 le système de fichier
 les options (argument -o de mount)
 dump : activer ou non la sauvegarde du disque avec l'utilitaire dump (1 ou 0)
 fsck : activer ou non la vérification du système de fichier avec l'utilitaire fsck (0, 1, 2 ou 3)

Exemple de fichier /etc/fstab

/dev/hda1 none swap sw 0 0
/dev/hda5 / ext3 defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,users,ro 0 0

Gr?ce à ce fichier, maintenant les deux commandes suivantes sont équivalentes.

mount -t iso9660 -o noauto,users,ro /dev/cdrom /mnt/cdrom
mount /mnt/cdrom

no/auto Monte automatiquement le périphérique
defaults Active rw, suid, exec, auto, nouser
no/exec Autorise l'exécution de binaires
no/suid Autorise l'utilisation du suid et guid
ro Lecture seule
rw Lecture écriture
nom d'utilisateur Autorise un utilisateur à monter et démonter un périphérique
no/users Autorise tous les utilisateurs à monter ou démonter un périphérique

Chapitre 08 - Gestion des processus

1. La vie d'un processus
Un processus durant tout sa vie évolue par états et ce jusqu'à sa mort. Les principaux états connus sont :
l'état "actif", désigné comme tel lorsque le processus est pris en charge par le processseur, l'état "prêt",
indiquant que le processus attend sa prise en charge par le processeur et l'état "attente" permettant au
processus de se mettre en mode sommeil afin d'attendre l'arrivée d'un signal qui le passera à l'etat prêt. Il
existe beaucoup d'autres états qui seront mis en évidence par l'utilisation de certaines commandes.

Une fois un processus lancé, le système lui affecte non seulement une identification numérique unique
portant le nom de PID (Process Identifier) permettant de le reconnaître dans la masse des processus mais
aussi un héritage. En effet lorsqu'un processus est lancé celui-ci fait partie d'une descendance, tout
processus est le "fils","le petit fils" , ou "l'arrière petit fils" d'un processus parent dénommé "init". C'est le
premier processus lancé par le système et c'est lui qui prend en charge l'exécution de l'ensemble des
processus lancés par l'utilisateur par l'intermédiaire du shell (interpréteur de commande).

Ainsi le processus init a un pid égale à 1. De même qu'il existe des commandes indiquant l'état d'un
processus, des commandes mettant en evidence l'arbre généalogique d'un processus existant.

Voyons un peu l'ensemble de ces commandes :

34/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Commande Description
ps Permet de lister les processus suivant un certain nombre de critères
Permet d'avoir un suivi de l'évolution des processus et ce faisant,
top d'effectuer des traitements comme on pourrait le faire avec ps, mais de
façon interactive
Permet de lister les processus dans un arbre indiquant les liens de
pstree
parentés entre eux
jobs Permet de lister les processus lancés dans le shell courant

Découvrons plus précisément les sorties des commandes ps et top qui sont similaires : elles possèdent des
champs définis ainsi :

PID Identifiant du processus
USER Le propriétaire du processus
PRI Priorité de la tâche (plus le chiffre est petit plus la tâche est prioritaire)
SIZE Taille du processus en mémoire incluant la partie données et la pile
Quantité totale de mémoire occupée par la tâche (les bibliothèques
RSS
chargées sont comptabilisées pour les programme ELF)
SHARE Quantité de mémoire partagée
Ce champ identifie par des lettres les différents états possibles pour un
processus

 D : En sommeil imperturbable (ce qui arrive souvent à certain
modules kernel)
STAT  R : En cours d'exécution
 S : En sommeil
 T : Stoppé ou stracé (notamment pour le débugage)
 Z : Zombie (peut arriver lorsqu'un processus n'a pas attendu la fin
de l'exécution de l'un de ses fils)

Nombre de pages occupées par les bibliothèques (sauf pour les
LIB exécutables au format ELF ; autant dire que ça ne fonctionne quasiment
jamais)
Taux d'occupation du(des) processeur(s) par ce processus. Il peut être
%CPU
supérieur à 100% dans le cadre de machine ayant plusieurs processeurs
%MEM Taux d'occupation de la mémoire physique du processus
Temps total d'exécution au sein du(des) processeur(s) depuis le
TIME
lancement du processus
COMMAND Affiche la ligne de commande qui a permis de lancer le processus

2. Envoi de signaux aux processus

35/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Ce procédé se concentre essentiellement autour de la commande kill. Il n'est pas, comme son nom pourrait
le laisser supposer, dédié à tuer des processus. Il va permettre de faire effectuer un certain nombre de
tâches à l'un ou plusieurs d'entres eux.

Tout dépend, finalement, de comment réagissent les programmes aux signaux qui leurs sont envoyés.

Pour obtenir la liste des signaux disponibles, il suffit de taper dans l'invite de commande du shell : kill -l

Voici dans un tableau les principaux signaux utilisés :

Nom du
Nombre Description
SIGNAL
Ce signal est envoyé directement lors de la déconnection à un
SIGHUP 1 modem ou oblige un daemon à relire son fichier de
configuration
Ce signal est équivalent au Ctrl-C et met fin à l'exécution d'un
SIGKINT 2
processus
Tue un processus de manière immédiate. Ce signal est à envoyé
SIGKILL 9 dans des mesures drastiques et ne peut être ignoré par le
processus
SIGTERM 15 Termine un signal "proprement" si possible
SIGTSTP 18 Mets un processus en attente et , équivalent à Ctrl-Z

3. Arrière plan / Avant plan /
Détachement
Lorsque vous lancez un programme, le shell prend en compte l'exécution du processus, ainsi il faut attendre
la fin de celui-ci avant d'avoir à nouveau le prompt. On dit que le processus est en "Avant Plan" dans cet
état il peut recevoir directement des signaux par les combinaisons de touches Ctrl-?. Il existe un autre
mode dans lequel le processus est dit en "Arrière plan", contrairement au mode "Avant Plan" lors de
l'exécution du programme, le shell affiche le prompt directement sans attendre la fin du processus. Afin de
mettre le processus dans ce mode il suffit de placer un "&" à la fin de la commande, il est ainsi vu comme
un job possédant un numéro, attaché au terminal (tty) ou pseudo terminal (pts/?) dans lequel il a été
lancé. Dans cet état aucun caractère de contrôle (Ctrl-?) n'est possible.

Si nous nous trouvons dans les cas présentés plus haut, nous savons dès le départ dans quel mode nous
voulons être, mais imaginons que l'on voudrait "switcher" d'un état à un autre. Des commandes ont été
crées spécialement à cette effet.

Commande Description
fg %N° de Job * Permet de mettre un processus en avant plan
bg %N° de Job * Permet de mettre un processus en arrière plan
Ctrl-Z Permet de mettre un processus en attente

* : lorsque vous utilisez ces commandes et que vous avez mis un processus en attente, il met le processus
dans l'état prêt et dans le mode pour lequel il a été crée.

36/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Toutes les commandes que nous avons vues jusqu'à maintenant sont placées dans un mode d'arrière ou
d'avant plan mais le processus est attaché à un terminal. Il existe un mode appélé mode de "détachement"
où un processus n'est attaché à aucun terminal ou pseudo terminal. Généralement c'est le cas des daemon.
On indentifie facilement un daemon par le champ TTY d'une sortie des commandes ps ou top ou il y a le
symbole "?"

La commande permettant le détachement des processus est : disown et possède un paramètre qui est le
PID du processus.

Exemple :

disown 1394

4. Modification des priorités du
Scheduler
Nous avons vu en introduction que les processus avaient des priorités et qu'elles étaient modifiables. En
effet les propriétés évoluent sur une échelle de -20 à +19. Tout processus, au lancement, peut avoir une
priorité quelconque supérieure ou égale à zéro. Par contre un processus lancé par un utilisateur, à son
exécution et durant celle-ci ne peut avoir une priorité négative. Seul l'administrateur système possède ce
droit. Par défaut un processus est lancé avec la priorité 10.

les commandes permettant de contrôler les priorités des processus sont nice et renice.

Commande Description Options
Permet d'affecter une priorité aux -n N :permet d'ajuster la priorité
nice priorité
processus dès leur lancement par défaut à N
Permet de modifier la priorité d'un -u "User" :change la priorité de
renice
processus alors que celui-ci est déjà tous les processus d'un
priorité
lancé utilisateur

-p "PID" : change la priorité d'un processus ayant un pid précis

5. Planification de tâches
Il est possible de planifier des tâches sur linux afin que celles-ci s'éxécutent de manière répétitives ou
différées. Pour cela deux daemons existent l'un crond qui est le daemon permettant d'éffectuer des tâches
répétitives et le daemon atd destiné aux tâches différées. Chacun de ces deux daemons possèdent une
commande en premier plan : crontab pour crond et at pour atd. Cependant beaucoup de ces commandes
ne peuvent pas être utilisés par n'importe qui.

Pour gérer les accès à ces commandes, l'administrateur dispose de fichiers de permissions situés dans le
répertoire /etc : cron.allow et at.allow qui definissent les autorisations et cron.deny et at.deny les
refus.

Selon la présence ou l'absence de ces fichiers plusieurs règles rentrent en jeu :

 Aucun des fichiers n'existe : dans ce cas seul root à le droit d'utiliser les commandes

37/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Note: dans le cas d'un système RedHat l'abscence des fichiers donne le droit à
l'ensemble des utilisateurs d'utiliser les commandes

 Les fichiers cron.allow et at.allow existent : les utilisateurs dont les noms sont présents sont
abilités à exécuter les commandes
 Les fichiers cron.deny et at.deny existent : les utilisateurs dont les noms sont présents ne peuvent
exécuter les commandes les autres oui.

5.1 La commande crontab

Il est important de ne pas faire l'amalgame entre la commande crontab et le fichier crontab. La commande
crontab permet de créer un fichier crontab possédant les différentes requêtes que l'utilisateur veut
effectuer. Ce fichier porte le nom de l'utilisateur et est stocké dans le répertoire /var/spool/cron avant
d'être exécuté par crond. Cette commande permet notament d'éditer le fichier et d'en supprimer le
contenu.

Voici dans un tableau récapitulant les différentes options possibles:

Option Définition
-u Installation du fichier crontab pour utilisateur (nécessaire d'être root
utilisateur pour l'utiliser)
Modification du fichier crontab à l'aide de l'éditeur spécifié par les
-e
variables VISUAL ou EDITOR
-l Liste le contenu du fichier crontab courant
-r Elimination du fichier crontab courant

Le fichier crontab créé par l'utilisateur est composé de cinq champs marquant la périodicitété et la
commande à effectuer. Ces champs sont ainsi définis:

Minute heure date mois "jour du mois" commande

La périodicité de chacun de ces 5 champs est représentée par des valeurs numériques comme ci dessous:

 minutes (0-59)
 heures (0-23)
 date (0-31)
 mois (1-12)
 jour de la semaine (0-7)ou (0 ou 7 indique le Dimanche)

Vous pouvez affiner la notion de périodicité par l'utilisation de:

 , : sépare plusieurs valeurs
 - : marque une période (exemple: 1-7,du lundi au dimanche)
 * : représente l'ensemble des valeurs possibles
 / : permet de spécifier tous les x temps (exemple: */2 dans la colone des jours veut dire chaque 2
jours).

Note:

38/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

vous pouvez séparer les champs d'une entrée par des espaces simples, ou de
tabulations.

5.2 Le fichier crontab système

Le fichier /etc/crontab est également lu par le daemon crond et est différent du format d'un fichier crontab
ordinaire, en effet celui-ci possède des informations d'environnement qui précèdent généralement ses
entrées (cela est aussi permis pour les fichiers crontab ordinaires mais ce n'est pas souvent utilisé). Après
les cinq champs initiaux se trouve le nom d'un utilisateur pour lequel la commande doit être appelée.

Ce fichier est généralement utilisé pour appeler les scripts contenus dans les répertoires "cron.periode" se
situant dans le répertoire /etc,énumérés ci-dessous :

 /etc/cron.hourly
 /etc/cron.daily
 /etc/cron.weekly
 /etc/cron.* répertoire contenant les exécutables

L'autre différence du fichier système crontab est qu'il fait appel à une commande particulière : run-parts.
Cette commande prend en argument un nom de répertoire et appelle tous les programmes compris dans ce
répertoire (le programme run-parts se trouve dans /usr/bin et n'est accompagné d'aucune documentation
en ligne).

Voici un exemple de fichier /etc/crontab:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/bin:/usr/sbin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * * root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Ainsi, chaque matin, à 4:02, tous les scripts (ou programmes du répertoire /etc/cron.daily sont exécutés. Le
répertoire cron.daily est créé lors de l'installation de votre distribution et contient des scripts servant à
mettre à jour les bases de données slocate et whatis, à nettoyer les répertoires temporaires et à exécuter
d'autres tâches de maintenance.

5.3 La commande at

at est un outil pratique pour planifier un seul évènement futur, et son utilisation est très simple:

Exemple :

luser@localhost $ at 6:00 ;
mail joe < joe.msg

Beaucoup d'autres commandes utilisent le daemon atd :

39/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

 la commande atq (pour at queue, la file d'attente de at), fournit une liste des travaux at
actuellement en cours. Tout utilisateur privilégié (root) peut entrer un nom d'utilisateur comme
argument pour obtenir les travaux en cours d'autres utilisateurs.
 la commande atrm est utilisée pour éliminer les travaux at en cours. L'atJobID s'affiche lorsque le
travail est soumis ainsi qu'à la demande de la commande atq. Tout utilisateur privilégié peut éliminer
les travaux at d'autres utilisateurs en fournissant le nom d'utilisateur (user ID) de ceux-ci.

Les commandes peuvent être indiquées (une par ligne), en terminant l'entrée par Ctrl-d seul, sur sa propre
ligne.

Chapitre 09 - Reseau

1. Introduction
Afin d'utiliser le réseau, il vous faudra activer le support de votre carte en "dur" dans votre noyau ou encore
la charger par le biais d'un module au lancement du système.

De plus certaines distributions incluent des outils de détection automatique.

2. Configuration Automatique
Lorsque le réseau possède un serveur DHCP, il devient trés simple de configurer sa carte réseau sous Linux
en tapant simplement :

dhclient

Note: la commande dhclient est la plus récente et la plus utilisée, mais il existe
d'autres commandes tel que dhcpcd et pump.

3. Configuration manuelle
3.1 Les interfaces

Le noyau Linux attribue des noms d'interfaces composées d'un préfixe précis selon le type. Toutes les
interfaces Ethernet, par exemple, commençant par eth. Le préfixe est suivi d'un chiffre, le premier étant 0
(eth0, eth1, eth2...)

Ethernet eth[01234...]
Anneau à jeton tr[01234...]
FDDI fddi[01234...]

3.1.1 ifconfig

La commande ifconfig permet de connaitre l'état des interfaces réseaux présentes et détectées par le
système.

40/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

L'option -a permet d'afficher toutes les interfaces actives ou non.

luser@localhost $ /sbin/ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:04:AC:45:63:7E
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:164442 errors:0 dropped:0 overruns:0 frame:1
TX packets:133671 errors:0 dropped:0 overruns:72 carrier:0
collisions:0 txqueuelen:100
RX bytes:91115012 (86.8 Mb) TX bytes:33953990 (32.3 Mb)
Interrupt:10 Base address:0xc000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3431 errors:0 dropped:0 overruns:0 frame:0
TX packets:3431 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:197669 (193.0 Kb) TX bytes:197669 (193.0 Kb)

La commande ifconfig permet aussi de configurer la carte réseau avec la syntaxe suivante :

ifconfig adr_ip netsmask masque_ss_réseau broadcast adr_broadcast

3.1.2 ifup/ifdown

La commande ifup permet d'activer une carte réseau :

ifup <interface>

Exemple :

root@localhost # ifup eth0

La commande ifdown permet de désactiver une carte réseau :

ifdown <interface>

Exemple :

root@localhost # ifdown eth0

Note:

41/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

attention les commandes ifup et ifdown ne sont pas présentes dans certaines
distributions.

Dans ce cas il faut avoir recourt à la commande ifconfig :

root@localhost # ifconfig eth0 up

OU

root@localhost # ifconfig eth0 down

3.2 Les routes

La commande route permet d'afficher la table de routage du système :

root@localhost # route
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use
Iface
172.16.0.0 * 255.255.0.0 U 0 0 0
eth0
default gate.esi-supinf 0.0.0.0 UG 0 0 0
eth0

voici un exemple de modification de la table de routage :

Pour attacher un sous réseau local à une interface :

root@localhost # /sbin/route add -net 172.16.1.0/25 dev eth0

Pour atteindre un sous réseau distant, il est nécessaire de spécifier une passerelle (gateway, en anglais) :

root@localhost # /sbin/route add -net 172.16.1.128/25 gw 172.16.1.125

Les communications ne correspondant à aucune des routes présentes utilisent la route par défaut (pour
l'Internet notamment) :

root@localhost # /sbin/route add default gw 172.16.1.1

3.3 La résolution de nom

Pour résoudre les noms sur le réseau, il faut stocker dans le fichier "/etc/resolv.conf" l'adresse IP de vos
serveurs DNS :

42/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

domain nux.net
nameserver 216.223.224.7
nameserver 216.223.224.6

Nous avons ici configuré le domaine du réseau (nux.net) et l'IP de deux serveurs DNS.

4. Les outils de tests réseau
4.1 Ping

La commande ping est LA commande de base pour tester le réseau. elle vérifie la connectivité entre votre
interface réseau et une autre :

luser@localhost $ ping 127.0.0.1

127.0.0.1 est l'adresse loopback de votre interface réseau (lo). faire un ping sur votre adresse loopback
revient à vous "pinger" vous meme. Si votre interfaces lo vous répond, c'est que votre carte réseau est
supportée : votre kernel supporte le TCP/IP, le driver de votre carte fonctionne.

ping <votre_ip>

Ici vous pouvez vérifier que vous avez bien configurer votre adresse IP.

ping <une_ip>

Si une_ip fait partie de votre réseau, il s'agit de vérifier la connexion au réseau local.

Dans le cas contraire, vous serez en mesure de tester le bon fonctionnement de votre passerelle.

ping <un_nom>

Ici, c'est votre configuration DNS que vous vérifiez.

4.2 Traceroute

La commande traceroute vous permet de connaître le chemin des paquets émis par votre interface.

Cela peut, en outre vous permettre, de détecter des problèmes éventuels de congestion sur un routeur du
réseau.

Note: la commande traceroute fonctionne au niveau réseau du modèle OSI. Elle ne
détectera donc pas les passages par des équipements réseau fonctionnant sur

43/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

des couches inférieures ( hub,switchs).

Par exemple, voyons le chemin que prend nos paquets pour atteindre la machine www.google.com :

luser@localhost $ /usr/bin/traceroute mail.supinfo.com
traceroute to mail.supinfo.com (212.80.91.71), 30 hops max, 40 byte packets
1 gougniafier (192.168.1.1) 0.282 ms 0.147 ms 0.105 ms
2 193.253.160.3 (193.253.160.3) 55.493 ms 55.736 ms 58.933 ms
12 easy-interlan.router.easynet.fr (212.180.0.135) 55.892 ms 53.760 ms
13 easy-interlan-10.easynet.fr (212.180.93.42) 59.920 ms 56.677 ms 59.887
14 supinfo-2.supinfo.com (212.180.91.71) 57.182 ms 51.742 ms 53.876 ms

4.3 Netstat

Netstat permet d'afficher des détails sur les connexions actives de votre machine (statistiques, ports...)

root@localhost # netstat -tlp
Active Internet connexions (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program
name
tcp 0 0 *:36167 *:* LISTEN 20091/artsd
tcp 0 0 *:6000 *:* LISTEN 20032/X
tcp 0 0 *:www *:* LISTEN 17170/apache
tcp 0 0 *:ssh *:* LISTEN 8283/sshd

Pour afficher la liste des connexions actives :

root@localhost # netstat -top
Active Internet connexions (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Pro
tcp 0 0 192.168.1.10:35514 205.188.9.63:5190
ESTABLISHED 7981/centericq
tcp 0 0 192.168.1.10:36240 nephtys.lip6.fr:45196
ESTABLISHED 28124/ncftp
tcp 0 0 192.168.1.10:33605 207.46.106.47:1863
ESTABLISHED 7981/centericq
tcp 0 0 192.168.1.10:35936 gougniafier:ssh
ESTABLISHED 18543/ssh

Chapitre 10 - Installation de programmes

1. Introduction
Beaucoup de linuxiens utilisent des distributions différentes de linux alors que celles-ci ne sont différentes
que parce qu'elles possèdent une version personnalisée d'un même kernel ou noyau de base.

On pourrait ainsi se demander quels critères font que l'on choisisse telle distribution plutôt qu'une autre.

En réalité, tout informaticien, qu'il soit sous linux, Windows ou Mac va être à la perpétuelle recherche d'un
large panel d'applications ou paquetages (packages) de tous genres (commerciaux ou libres (publiés sous

44/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

license GPL:Gnu Public License)) et répondant aussi bien à ses besoins professionels (bureautique,gestion)
que ludiques (multimédia, jeux).

Son choix ainsi va se tourner vers des systèmes où il pourra facilement obtenir ce qu'il veut.

Sur linux suivant les distributions, la gestion des paquetages peut être très souple et peut offrir beaucoup
de possibilités, allant du téléchargement à l'installation automatique d'un paquetage par une simple
commande. Nous allons donc voir trois modes de packaging propres aux distributions Debian, Gentoo et
RedHat et une forme de gestion standard à toutes les distributions qui est celle dite par les sources.

2. Redhat
Les paquetages de la distribution Redhat sont présent sous deux formats. La première portant l'extension
".rpm" représente l'application binaire et la seconde portant l'extension "src.rpm" représente les sources
(fichiers sources, documentation, fichiers d'installation et de configuration) utilisées généralement pour
créer des ".rpm". Ces deux types de paquetages sont installés via la commande rpm.

2.1 Comment obtenir ces Paquetages ?

Redhat est une distribution commerciale destinée aux entreprises, elle est donc livrée avec un certain
nombre de paquetages de base, testés et approuvés par la société Redhat.Toutes les applications autres
que celles qui sont proposées doivent donc être téléchargées par l'utilisateur. Généralement le
téléchargement se fait en allant directement sur le site du paquetage après une recherche sur un moteur
de recherche (exemple : Google). La difficulté de ce genre de méthode est la gestion des dépendances. En
effet lorsque vous installez un paquetage il très rare que ce dernier ne dépende d'aucun autre paquetage
ou d'aucune librairie. Ce faisant, vous devrez récupérer l'ensemble de ces dépendances avant de lancer son
installation. Bien souvent dans ces conditions, le découragement prend vite le dessus car la mise à jour
continuelle des paquetages fait qu'un paquet A peut dépendre d'une certaine version d'un packet B et que
cette version n'existe plus.

Cependant, l'arrivée de Fedora a changé l'esprit de la distribution Redhat qui est une distribution destinée
au "Grand Public". Ainsi elle s'est munie d'une commande appelée "yum", basée sur le rpm et permettant
de télécharger des applications avec l'ensemble de leurs dépendances sur des mirroirs dont le but principal
est l'hébergement d'applications (exemple: ftp://freshrpms.net).

2.2 L'installation, désinstallation , récupération, mise à jour

Comme on l'a vu la commande rpm permet d'installer les fichiers ".rpm" et permet aussi de créer des
fichiers rpm par les rpm sources (src.rpm) mais elle permet de faire beaucoup d'autres choses. Voici une
liste des options les plus fréquemment utilisées de rpm :

2.2.1 Installation

-i foobar.rpm : permet d'installer un rpm

-R foobard.rpm : permet de lister les dépendances d'un fichier

2.2.2 Suppression

-e foobar.rpm : permet de supprimer un rpm

2.2.3 Informations sur les paquetages

45/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

L'option -q permet de récuperer des informations sur un ou plusieurs paquetages. Cependant cette option
doit être combinée avec un autre caractère indiquant la nature de l'information.

Voici donc le listing des options les plus souvent rencontrées :

Option Description
-qi
Récupère les informations d'un paquetage déjà installé
paquet
-qa Récupère les noms de l'ensemble des paquetages installés.
-ql
Récupère la liste des fichiers d'un paquetage
paquet
-qf
Permet de savoir à quel paquetage appartient ce fichier
fichier
-qpi
affiche des informations sur les paquetages non installés
rpm
Vérifie un paquetage. Si le paquetage est bon il n'y aura aucune sortie sinon
nous verrons apparaître des lettres indiquant les différents problèmes
rencontrés. Voici donc ci-dessous un listing de ces différents caractères :

 5 : somme de contrôle md5
 S : taille du fichier
-V
 L : lien symbolique
fichier
 T : date de modification
 D : fichier périphérique
 U : l'utilisateur propriétaire du fichier
 G : le groupe propriétaire du fichier
 M : le mode du fichier

Note: l'ensemble de ces options peuvent être combinées afin de former une requête
précise, exemple : rpm -qpi paquetage.rpm et l'utilisation des globbings est
autorisée.

2.3 Création d'un rpm à partir des sources rpm

Tout fichier rpm est un fichier destiné à une architecture précise, par exemple : samba-2.2.5.i586.rpm est
destiné aux ordinateurs dotés d'un processeur de type i586. Cependant il est intéressant de compiler une
application de manière à ce qu'elle soit optimisée pour notre processeur. Dans ce cas il est intéressant
d'utiliser les RPM sources. Bien sûr, il existe des paquetages génériques c'est à dire qui correspondent à
toute une famille de processeurs.

exemple : samba-2.2.5-i386.rpm correspond à la famille x86.

Pour compiler un paquetage RPM source, il faut passer l'option --rebuild à la commande RPM comme ci-
dessous:

root@localhost # rpm --rebuild samba-2.2.5.src.rpm

46/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Après avoir compilé, le paquetage crée se retrouvera dans le répertoire /usr/src/redhat/RPMS/ dans lequel
existe d'autres répertoires portant le nom d'architecture comme i386,i586,etc... Tous les paquetages
généralement crées de cette manière placent le fichier compilé dans le répertoire i386.

3. Debian
Les paquetages débian existent comme ceux de Redhat sous deux formats, un format binaire identifié par
l'extension (.deb) et un format source indentifié lui par l'extension (.dsc). Les commandes généralement
utilisées pour les installer sont celles présentées ci-dessous :

dpkg : commande dite de bas niveau, en ligne de commande, elle permet l'installation , la désinstallation
et la gestion des informations des paquetages installés.

apt-get : cette commande est la commande la plus populaire du système débian.C'est une commande de
haut niveau, servant d'interface à la commande dpkg. Elle permet le téléchargement et l'installation
automatique des paquetages en gérant toutes les dépendances de celui-ci.

dselect : c'est une interface de la commande apt-get. Elle est exécutée lors de l'installation d'un système
Débian.

3.1 Débian, un système "Grand Public"

La distribution débian est populaire grâce à la grande diversité des paquets qu'elle distribue. Elle fournit des
paquets à la fois commerciaux et provenant du "monde libre", mais la majorité de ces paquets sont ceux
empruntés au "monde libre". Ses logiciels proviennent de milliers voir de millions de personnes développant
des applications pour Linux. Cependant on pourrait se demander si la provenance de ces paquets est sûre
et surtout fiables pour être intégrés dans un système Débian. C'est d'ailleurs à cause de cette notion de
fiabilité, que les Entreprises furent timides à donner un accord favorable à l'intégration de tels systèmes dit
"Grand Public" au sein de leurs réseaux. Préférant bien souvent des solutions comme Microsoft ou Redhat,
qui sont jugées plus fiables du fait qu'ils soient beaucoup plus commerciales. Mais aujourd'hui la barrière de
l'a-priori s'est effondrée. Essayons de comprendre, Comment Debian est devenue une distribution digne de
confiance malgré son image "Grand Public" bien affichée.

En fait ce qu'il est important de savoir c'est que chaque paquet provenant du monde libre est testé au
maximum de ses possibilités, ceci permettant de lever tous les bugs possibles afin de les corriger et ainsi de
les faire migrer vers le niveau de stabilité le plus sûr possible. Ces paquetages ainsi testés évoluent d'une
version à une autre de Débian. En effet on distingue trois distributions de base chez Debian définie par le
niveau de stabilité des logiciels, c'est à dire du niveau le moins stable à celui le plus stable.

Unstable ou "Sid" : cette distribution est la moins stable et la plus récente de Débian. Une fois certains bugs
corrigés, les paquets migrent en testing. Elle est utile pour les utilisateurs expérimentés voulant bénéficier
des dernières versions des applications.

Testing ou "Sarge" : cette distribution offre des paquetages stables mais dont l'ensemble des tests de
sécurité n'ont pas été effectués. Elle est non-adapté pour une utilisation courante.

Stable ou "Woody" : cette distribution est la plus stable de Débian.Elle est utilisé pour les Serveurs et les
utilisateurs normaux.

Les paquetages Debian, quelque soit la version utilisée, sont généralement téléchargés via la commande
apt-get que nous avons vue plus haut. Ce qui fait la force d'apt-get est le fait qu'elle récupère les
applications dans une arborescence bien définie appelée "pool" et présente sur différents mirroirs Debian.

Cette arborescence est répartie en 3 grandes familles de répertoire.

Main : contient uniquement des logiciels libres qui représentent la distribution officielle Débian.

47/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Contrib : c'est la que sont stockés des logiciels libres mais dépendant de paquetages propriétaires.

Non free : c'est le répertoire des logiciels payant ou possédant des licences très restrictives.

vous verrez bien souvent dans les noms des répertoires ci-dessus, la
Note: dénomination Non-US. Celle-ci a pour but d'indiquer que les applications
contenu dans ces répertoires ne pourront être téléchargés à partir des Etats-
Unis.

Si vous voulez de plus amples renseignements concernant Debian allez sur le site
http://www.debian.org

3.2 Installation, désinstallation, informations, mise à jour

3.2.1 Installation

L'installation, d'une manière générale, est faite à l'aide de la commande apt-get, mais la connaissance de
la commande dpkg est quand même nécessaire. Ainsi vous sera présentée l'utilisation des deux
commandes :

dpkg -i samba-2.2.5.deb
apt-get install samba

si vous ne connaissez pas le logiciel que vous voulez installer, il est possible
Note: d'avoir une description des différents logiciels pouvant faire ce que vous
voulez. En faisant apt-cache search "mot_clé" et vous aurez un listing de tous
les paquetages ayant soit dans leurs descriptions le mot clé recherché soit
dans leurs noms. Bien sûr ce mot clé accepte les globbings.

3.2.2 Suppression

dpkg -r samba
ou
dpkg --purge samba

apt-get remove samba
ou
apt-get --purge remove samba

l'option --purge indique ici de supprimer à la fois le paquetage mais aussi l'ensemble des fichiers de
configurations installés.

3.2.3 Information concernant les paquetages

L'ensemble des informations d'un paquetage installé sont mises en évidence grâce à la commande dpkg.
Voici quelques options les plus souvent utilisées dans ce cas :

48/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

 dpkg -l : permet d'afficher l'ensemble des paquetages installés
 dpkg -L foobar : affiche l'ensemble des fichiers constituant un paquetage
 dpkg -s foobar : affiche l'état d'un processus
 dpkg -S fichier : permet de retrouver l'appartenance d'un fichier à un paquetage

De même que Redhat, il est possible d'afficher notament des informations sur les paquetages non installés,
mais ce via la commande apt. L'option de la commande apt à utiliser fait appel à un cache ou est listé
l'ensemble des fichiers à jour pouvant être téléchargés sur Debian.

la commande est :

apt-cache show feh

Permet de visualiser les informations d'un paquetage installé ou pas sur la machine.

afin de mettre à jour le cache une commande doit être utilisée qui est :

apt-get update.

3.2.4 Mise à jour des paquetages

apt-get distuprgrade

Note: l'utilisation de la commande apt-get update est primordiale avant de faire la
mise à jour des paquetages.

3.3 Création d'un deb à partir des sources dsc

Si vous êtes un féru de programmation et que vous vous intéressez d'étudier le code source ou
éventuellement de faire des corrections sur du code bogué avoir les sources d'une application serait
intéressant.

Pour cela apt mets à votre disposition des commandes permettant de télécharger les sources et des fichiers
permettant la création d'un fichier .deb .

Pour télécharger un paquet source, vous devez utiliser la commande suivante :

apt-get source nomdupaquet

Cela va télécharger trois fichiers : un .orig.tar.gz, un .dsc et un .diff.gz. Dans le cas où les paquet sont faits
spécialement pour Debian, le dernier de ceux-ci n'est pas téléchargé et le premier n'a généralement pas «
orig » dans le nom.

49/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Le fichier .dsc est utilisé par dpkg-source pour dépaqueter le paquet source dans le répertoire
nomdupaquet-version. Avec chaque paquet source téléchargé, il y a un répertoire du nom de l'application
qui contient les fichiers nécessaires pour la création d'un paquet .deb.

Pour créer le .deb allez à l'intérieur du répertoire créé pour le paquet après le téléchargement et tapez la
commande suivante:

dpkg-buildpaquetage -rfakeroot -uc -b

4. Gentoo
Gentoo est une méta-distribution jeune née au début de l'année 2002. Elle en est à sa version 1.4 et est
disponible sur beaucoup d'architectures dont : x86,PowerPc, Sparc et Sparc64, amd64, arm etc.

Gentoo a été dévéloppée par l'intégration d'idées provenant du monde BSD et Linux, mais en essayant
d'automatiser un maximum de tâches. L'une des particularités de gentoo est qu'elle fait partie de la
génération des distributions appelées "source-based".

Que veut dire "source-based" ?

Les paquetages fournis par gentoo ne sont pas des binaires que l'on peut installer comme ceux que l'on a
vu avec Redhat et Debian mais sont sous forme de sources, contenant les instructions nécessaires à la
compilation des paquetages devant être installés. Les fichiers sources sont des fichiers aux formats
".ebuild". Ces scripts ont notament été définis pour permettre la gestion des dépendances.

L'ensemble de ces paquetages fait partie d'une d'une arborescence appelée : Portage,qu'il est important de
toujours mettre à jour.

La commande de base utilisée pour installer des paquetages Gentoo est la commande emerge, cette
commande permet non seulement d'installer des paquetages mais aussi de supprimer , d'obtenir des
informations sur un paquetage et aussi de mettre à jour l'ensemble du Portage.

4.1 Installation, désinstallation, informations, mise à jour

4.1.1 Installation

emerge samba

Note: bien sûr de la même manière que Debian, si vous ne connaissez pas le nom
exact d'un logiciel à télécharger vous pouvez faire une recherche en faisant :
emerge search "mot_clé".

4.1.2 Suppression

emerge -C samba

4.1.3 Information

50/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

emerge -searchdesc samba

4.1.4 Mise à jour

emerge sync

5. Installation par Les sources
Les paquetages installés par les sources sont présent sous la forme de fichier tar compréssé soit en bzip2
soit en gzip2. Ces paquetages sont construits toujours de la même manière. On les appelle des "tarballs".
Installer un tarball permet de bénéficier de la dernière version d'un logiciel.

La procédure d'installation d'un tarball suit toujours la même logique ainsi définie :

Prenons l'exemple d'un paquetage appelé foobar.tar.gz.

5.1 Téléchargement du tarball

luser@localhost $ wget http://www.foobar.com/Dowload/foobar.tar.gz

5.2 Décompression du tarball à l'aide de l'utilitaire tar

luser@localhost $ tar xzf foobar.tar.gz

Note: il ne sera pas rare de trouver les tarballs sous le format tar.bz2, il faudra pour
cela utiliser la commande tar avec les options "xjf"

5.3 Allez dans le répertoire crée par la décompréssion

luser@localhost $ cd foobar

5.4 Lancement du script shell configure

luser@localhost $ ./configure

Cette étape aura pour but de créer un fichier Makefile à l'aide de l'utilitaire "autoconf", qui permettra la
compilation du logiciel. On peut passer des options à ce script, permettant par exemple de modifier le
chemin d'installation, grâce à --prefix=<répertoire> (défaut : /usr/local).

5.5 compilation de l'application

51/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

luser@localhost $ make

Note:
vous devez avoir gcc d'installé

5.6 Installation du logiciel

root@localhost # make install

Chapitre 13 : RAID et LVM

1. Raid Logiciel
1.1 Introduction au Raid

Merci à Mathieu Martineau du Laboratoire Microsoft pour la note technique sur les différents types de
RAID.

En 1987, les chercheurs de l’université de Berkeley ont proposés cinq niveaux de RAID (les niveaux 1, 2, 3,
4 et 5). Depuis d’autres niveaux ont été implémentés comme le RAID 6 et le RAID 7. Les niveaux JBOD et 0
sont aussi considérés comme des modes de RAID bien qu’ils n’implémentent pas de redondance des
données (le ‘R’ de RAID signifie « Redundant » c'est-à-dire redondance).

Le RAID 0 et le JBOD sont d’ailleurs présents en standard sur toutes les cartes RAID du marché. Ces modes
(niveaux) de RAID sont considérés comme des modes simples. Il est également possible de créer des
niveaux de RAID combinés.

Le but de cette technologie est de remplacer les coûteux disques de 6.5 pouces et de 9.5 pouces (ces
disques sont aussi appelés « disques grands systèmes ») qui équipent les gros serveurs (comme les
serveurs de fichiers) par des ensembles formé de disques de 3.5 pouces plus répandus et beaucoup moins
chers. Cela explique pourquoi l'acronyme RAID signifie aussi Redundant Array of Inexpensive Disks.

Cette technologie est principalement utilisée dans le domaine de l'entreprise pour sécuriser ou bien pour
augmenter les performances des serveurs. Elle est parfois mise en place avec d’autres technologies telles
que le clustering afin d’obtenir des performances encore plus grande ou bien d’avoir une sécurité maximale.

Cependant, le RAID se popularise rapidement par le biais des cartes d'extension (par exemple les cartes au
format PCI 32 bits) et des chipsets intégrés au sein des cartes mères grand public (ex. : le chipset sud Intel
ICH5R). Généralement les contrôleurs RAID que l’on trouve sur le marché du matériel « grand public » sont
très limités par rapport aux contrôleurs RAID haut de gamme (niveaux RAID supportés réduit au RAID 0 et
1, pas de mémoire cache intégrée au contrôleur …).

Le but du RAID est de rassembler plusieurs disques durs physiques en seule unité logique. C'est-à-dire que
pour plusieurs disques utilisant la technologie RAID, le système d’exploitation ne verra qu’un seul disque
que l’on pourra qualifier de « disque virtuel ». Le RAID fonctionne donc grâce à un ensemble (ou agrégat)

52/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

de disques. Il existe plusieurs niveaux (ou configuration) de RAID qui rassemblent différemment les
données sur l’ensemble des disques. En fonction du niveau de RAID sélectionné on peut :

 additionner la capacité des disques durs pour former un disque virtuel plus grand
 obtenir un disque virtuel plus performant
 mettre en place la tolérance de panne (c'est-à-dire sécuriser les données, mais ne remplace pas la
sauvegarde)
 augmenter la capacité, les performances et la sécurité

La technologie RAID peut être mise en place au niveau matériel ou niveau logiciel. Elle fonctionne avec des
disques durs utilisant l’interface PATA (Parallel Advanced Technology Attachment), SATA (Serial Advanced
Technology Attachment) ou bien SCSI (Small Computer System Interface).

1.1.1 Le JBOD

Le mode JBOD (Just a Bunch Of Disks) ou RAID linear, est implémenté dans quasiment toutes les cartes
RAID du marché. Il permet tout simplement de rassembler plusieurs disques durs en une seule unité
logique de plus grosse capacité.

Par exemple si l’on possède un disque de 8Go, un disque de 10Go et un disque de 30Go, on peut les
rassembler en un seul disque dur logique de 48Go.

Les données sont ensuite écrites disque par disque, c'est-à-dire que dès qu'un disque est plein, la suite des
données est copiée sur un autre disque. Tout cela reste bien sur complètement transparent pour
l'utilisateur. Il n’implémente aucune tolérance de panne et n’augmente pas les performances. Il sert
uniquement à étendre la capacité d’un disque.

Ce mode est intéressant si l’on souhaite stocker de gros fichiers ou bien si l’on dispose d’un grand nombre
de petits disques durs.

1.1.2 Le RAID 0 ou « stripping »

Le RAID 0 est un agrégat (ensemble) de disques formé d’au moins deux disques durs. Avec le RAID 0, les
données sont réparties sur l’ensemble des disques de l’agrégat. Cela améliore les performances en lecture
et en écriture. Par exemple si on copie un fichier de 99 Mo sur un agrégat composé de 3 disques, alors le
contrôleur RAID va diviser de façon équitable le travail entre les trois disques qui écriront chacun 33 Mo.
Cela va donc multiplier le débit par 3 (en théorie). De plus la capacité des disques s’additionne pour former
un disque virtuel de plus grosse capacité.

Précision sur le RAID 0
Si on crée un agrégat avec des disques possédant des caractéristiques
Note: différentes alors les caractéristiques du disque le moins performant sont
utilisées. Un niveau RAID 0 doit utiliser des disques durs ayant des
caractéristiques très proches (notamment en capacité et en performances).

Lorsque l’on utilise un niveau RAID 0, nous avons vu que les données sont réparties entre les différents
disques, ce qui permet d’augmenter les performances. Pour répartir les données sur l’ensemble des disques
de la façon la plus optimisée, la carte RAID (ou bien le système d’exploitation dans le cas d’un RAID
logiciel) doit les découper en petites unités appelées segments. Lorsque l’on met en place un niveau RAID
0, on doit spécifier la taille de ces segments (ou block size, et parfois nommé chunk size). Cette taille est un
multiple de la capacité d’un secteur de disque dur (soit 512octets). Ainsi, la plus petite taille possible pour
un segment est de 512octets et peut attendre plusieurs Méga-octets (parfois plus de 4Mo).

La taille sélectionnée va influencer sur les performances en lecture et en écriture. Pour le stockage de gros
fichiers, il est recommandé de choisir une taille élevée (256Ko, ou plus) alors que pour les petits fichiers

53/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

une petite taille est à privilégier (ex. : 512octets, 1024 octets, …). Mais il ne faut surtout pas mettre une
taille de 2048 Ko pour stocker des petits fichiers de 4Ko chacun car cela occuperait énormément d’espace
disque inutilement et les performances seraient désastreuses.

Pour conclure, l’avantage du RAID 0 est une augmentation des performances proportionnelle au nombre de
disque et ce sans perte de capacité. Cependant ce mode ne tolère pas les pannes (si un des disques tombe
en panne alors toutes les données stockées sur l’agrégat sont perdues) et induit une augmentation de la
probabilité d’une panne (plus il y a de disques plus il y a de chances pour que l’un d’eux tombe en panne).

1.1.3 Le RAID 1

Un système RAID 1 duplique les données sur tous les disques. Tout comme le RAID 0, le RAID 1 nécessite
un minimum de deux disques durs pour fonctionner. Les disques ont un contenu identique ce qui implique
une perte d'espace proportionnelle au nombre de disques rajoutés. En effet, si on met 3 disques de 40 Go
en RAID 1 alors les 40 Go écris sur le disque 1 seront copiés sur les deux autres disques. On perdra donc 2
* 40 = 80 Go d'espace disque sur la capacité totale des 3 disques (120 Go).

En cas de dysfonctionnement de l'un des disques durs (cela arrive fréquemment sur des serveurs recevant
beaucoup de requêtes par secondes), le contrôleur RAID utilisera alors uniquement les disques en état de
marche. Le RAID 1 apporte donc la tolérance de pannes. L'utilisation du RAID 1 est particulièrement
recommandée sur des serveurs stockant des données sensibles qui doivent rester fonctionnels 24 heures
sur 24.

Lorsque l'on met en place un RAID 1 avec des disques durs de capacités différentes, alors la capacité de
stockage de l'ensemble en RAID 1 sera celle du disque de plus faible capacité.

Lorsqu'un accès en lecture est réalisé sur un ensemble de disques en mode RAID 1, alors tous les disques
lisent chacun une partie de la données ce qui améliore grandement les performances en lecture. En
revanche lors de l'écriture sur un ensemble de disques RAID 1, les performances ne sont pas améliorées.
En effet, les disques vont écrire les données de façon synchronisée et ce au fur et à mesure que les
données vont arriver au contrôleur. Le travail lors d'un accès en écriture n'est donc pas divisé entre les
disques mais est commun à tous les disques. Le débit en écriture d'un ensemble RAID 1 est donc le même
que celui d'un disque seul. C'est pourquoi dans un ensemble RAID 1, contenant 5 disques les accès en
lecture seront grandement améliorés alors que les accès en écriture stagneront.

Le but du RAID 1 est d'offrir une sécurité maximale aux données stockées sur une machine. C'est pourquoi
certaines cartes RAID incluent plusieurs contrôleurs RAID (un par disque) afin que malgré la perte d'un
contrôleur les données soient toujours accessibles. Dans ce cas on parle de " duplexing ".

Il existe donc bien deux types de RAID 1 différents. Le « duplexing » étant méconnu et très peu utilisé, une
certaine confusion s’est crée à propos du RAID 1. En effet, « mirroring » n’est pas synonyme de RAID 1.

1.1.4 Le RAID 2

Le RAID 3 apporte les avantages du RAID 0 (amélioration des performances) et du RAID 1 (tolérance de
panne). Le mode RAID 3 fonctionne avec un minimum de trois disques. A l’instar du RAID 0, tous les
disques sauf un qui a une tâche spéciale se divisent les opérations de lecture et d’écriture ce qui augmente
les performances. L’un des disques est un disque de parité.

La tolérance de panne grâce à la parité : Avec un ensemble RAID3, lors de chaque opération d’écriture les
données vont êtres réparties entres tous les disques (sauf le disque de parité) de façon équitable. Au
moment où les données sont écrites, des informations indiquant sur quel disque a été stocké tel ou tel
fragment des données sont enregistrées dans le disque de parité. Ce sont les informations de parité. Ainsi,
si un fragment d’une donnée est défectueux ou manquant, la comparaison entre les informations de parité
et les autres fragments de la donnée (qui sont stockés sur les autres disques durs) vont permettre de
reconstituer le fragment. Si l’un des disques contenant des données tombe en panne, alors le disque de

54/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

parité et les disques restant permettent de reconstruire les données qui étaient stockées sur le disque
endommagé.

Lorsque le disque de parité tombe en panne le système continue de fonctionner en mode RAID 0 avec les
disques restants qui contiennent les données. Lorsque l’on rajoute un nouveau disque de parité, les
informations de parité sont reconstruites et le RAID 3 redevient actif.

Le RAID 3 apporte donc la tolérance de panne car le système supporte la perte d’un disque quel qu’il soit
(données ou parité). En revanche si deux disques durs tombent en panne simultanément, les données sont
perdues.

Le RAID 3 permet donc d’augmenter les performances tout en gérant la tolérance de panne. Les
performances en lecture sont améliorées proportionnellement au nombre de disques (plus il y a de disques,
plus les performances en lecture augmentent). Malgré une légère amélioration des performances en
écriture (elles sont bridées par le disque de parité) ce système n’est pas plus intéressant que le RAID 1. En
effet, sa fiabilité est moindre car seul la perte d’un seul disque est possible et car le disque de parité s’use
plus vite.

1.1.5 Le RAID 4

Ce mode nécessite au moins trois disques et est très proche du RAID 3. La seule différence notable avec le
RAID 3 est l’organisation des données. En effet, avec le RAID 4, la taille des segments est variable et se
modifie en temps réel. Cela implique que les informations de parité doivent être mise à jour à chaque
écriture afin de vérifier si la taille des segments a été modifiée. Dans un système RAID 4, le disque de
parité devient donc un facteur encore plus limitant lors des opérations d’écriture. Cependant, les
performances en lecture sont les même qu’avec le RAID 3 (c'est-à-dire excellentes). Le mode RAID 4 gère
donc la tolérance de panne et apporte un gain en lecture mais pas en écriture. Généralement on lui préfère
le RAID 5.

1.1.6 Le RAID 5

Ce mode est très proche du RAID 4 car il utilise au moins trois disques durs et car il procure une
augmentation des performances et gère la perte d’un disque dur.

Par rapport au RAID 4, la configuration RAID 5 répartie la parité sur l’ensemble des disques ce qui élimine
le goulot d’étranglement qu’est le disque de parité en RAID 3 et en RAID 4. Un autre avantage de répartir
la parité sur chacun des disques est que les disques travaillent tous autant. Cela empêche l’usure
prématurée de l’un des disques (comme c’est le cas avec le disque de parité en RAID 3 et surtout en RAID
4).

Le RAID 5 écrit donc simultanément les données sur plusieurs disques ce qui améliore les performances en
lecture et en écriture. Ainsi par rapport à un disque seul, les performances d’une grappe RAID 5 utilisant n
disques seront (n-1) fois plus élevées (en effet, l’un des disques doit écrire la parité, la donnée écrite est
donc répartie sur les n-1 disques restants).

Tout comme pour le mode RAID 0, on doit sélectionner une taille de segment adaptée lorsque l’on met en
place un niveau RAID 5.

De par ses nombreux avantages le RAID 5 est très populaire dans le monde professionnel car il apporte la
tolérance de panne tout en conservant d’excellentes performances en lecture et en écriture. De plus si on
utilise une interface qui supporte le branchement à chaud ou "hot plug" (SCSI ou Sata), il n’est même plus
nécessaire d’éteindre le serveur. Bien entendu la mise en place d’un ensemble RAID 5 fait perdre de
l’espace disque (en fait l’espace réservé à la parité qui représente la taille d’un disque). De plus la
répartition de la parité sur l’ensemble des disques entraîne une remise en ordre un peu lente lorsqu’un
disque dur est échangé suite à une panne.

1.1.7 Le RAID 6

55/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Le RAID 6 met en place une double redondance des données de parité. Cela signifie que les informations
de parité sont stockées en doubles exemplaires. Tout comme pour le RAID 5, les informations de parité
sont réparties équitablement sur l’ensemble des disques. La double redondance des données permet la
perte de deux disques sans qu’aucune donnée ne soit perdue. Le RAID 6 nécessite au moins quatre disques
durs pour fonctionner. En ce qui concerne la capacité utilisable de stockage, on perd l’espace de deux
disques. Donc dans un système utilisant n disques, la capacité utilisable est définie par la relation suivante :
Capacité utilisable = (taille du disque le plus petit) * (nombre de disques – 2)

Les performances en lecture comme en écriture sont augmentées. Avec un nombre de disques équivalents,
un ensemble RAID 6 sera moins performant qu’un ensemble RAID 5 (car un disque de plus est utilisé pour
la parité).

1.1.8 Le RAID 7

Ce mode est utilisé pour avoir un niveau de sécurité ou des performances très supérieures aux autres
modes RAID. Il utilise un grand nombre de disques (avec un maximum de 48 disques). On peut définir
manuellement le nombre de disques dédiés au stockage de la parité et au stockage des données. Le
nombre de disques que le système peut perdre est proportionnel au nombre de disques dédiés au stockage
des informations de parité. Le RAID 7 fait appel à une carte microprocesseur qui calcule la parité, la gestion
du disque et qui gère la surveillance des disques en temps réel. Tous les transferts de données se font en
mode asynchrone ce qui augmente de 1,5 à 6 fois les performances en écriture.

Il est peu utilisé car il très coûteux en équipement et difficile à mettre en place.

1.1.9 Conclusion

Pour conclure, les modes les plus intéressants sont les modes 0, 1 et 5. Les autres modes sont peu ou pas
utilisés car :

 le RAID 2 est obsolète
 le RAID 3 et 4 utilisent un disque de parité ce qui crée un goulot d’étranglement.
 le RAID 6 est onéreux
 le RAID 7 est très onéreux et difficile à mettre en place

1.2 Le RAID combiné

Les niveaux de RAID offrent un large choix d’alternatives qui permettent de choisir un rapport
performance/sécurité différent. Il est aussi possible de combiner deux niveaux de RAID entre eux. On parle
alors de niveaux combinés.

Certaines cartes permettent de combiner différents modes (ou niveaux) RAID en hardware mais elles sont
chères mis à part les cartes RAID IDE d’entrées de gamme qui gèrent toutes le RAID 01 ou 10 selon les
cas. Cependant ces dernières ne sont pas intéressantes pour réaliser des combinaisons étant donné que ces
« cartes bas de gamme » n’intègrent qu’un seul contrôleur (donc pas de tolérance de panne pour le
contrôleur) et que le nombre de disques utilisables est souvent limité à quatre.

Généralement la manière la moins onéreuse pour réaliser une combinaison entre deux modes RAID est :

1. 1.d’utiliser plusieurs contrôleurs au niveau matériel pour mettre en place plusieurs ensembles en
mode RAID X.
2. 1.de créer un RAID Y au niveau logiciel à partir de tous les ensembles RAID X.

L’ensemble obtenu sera un ensemble fonctionnant en un mode RAID nommé XY. Cela signifie que l’on met
d’abord en place plusieurs RAID X, puis qu’on les rassemble avec un mode RAID Y. Un RAID XY est donc
différent d’un RAID YX. Voici un exemple :

56/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Admettons que l’on dispose de 9 disques durs de 20 Go chacun, de trois cartes RAID gérant le RAID 0 et le
RAID 1 ainsi que d’un 7ème disque dur (branché sur le contrôleur intégré à la carte mère). On peut réaliser
deux combinaisons intéressantes :

 un RAID 01
 un RAID 10

1.2.1 Le RAID 01

On divise les disques en trois groupes de trois. On met trois disques sur chacune des cartes RAID et on
crée trois ensembles RAID 0. Chaque ensemble RAID 0 comporte 3 disques de 20 Go chacun, ce qui donne
une capacité de 60Go par ensemble.

Ensuite, on crée un ensemble RAID 1 de manière logicielle avec les trois ensembles matériel en RAID 0. On
obtient donc après formatage, un seul disque d’une capacité de 60Go.

Chaque ensemble matériel en RAID 0 a des performances en lecture/écriture trois fois plus élevées environ
qu’un disque seul. L’ensemble logiciel en RAID 1 propose donc des performances triples à celles d’un disque
seul.

Si l’un des six disques vient à tomber en panne alors, toutes les données stockées sur l’ensemble matériel
RAID 0 auquel il appartient sont perdues. On se retrouve avec seulement deux ensembles matériels en
RAID 0 et donc 6 disques utilisés. Si on perd ensuite un second disque il ne reste plus qu’un ensemble
RAID 0. Enfin si un dernier disque tombe en panne alors, l’ensemble subsistant et donc toutes les données
seront perdus.

Dans notre exemple, grâce au RAID 01, on obtient des performances triplées par rapport à un disque seul
et le système supporte la perte de deux disques durs.

1.2.2 Le RAID 10

On divise les disques en trois groupes de trois. On met trois disques sur chacune des cartes RAID et on
crée trois ensembles RAID 1. Chaque ensemble RAID 1 comporte 3 disques de 20 Go chacun, ce qui donne
une capacité de 20Go par ensemble. Ensuite, on crée un ensemble RAID 0 de manière logicielle avec les
trois ensembles matériel en RAID 0. On obtient donc après formatage, un seul disque d’une capacité de
60Go.

Chaque ensemble matériel en RAID 1 a des performances en lecture/écriture égales à un disque seul.
L’ensemble logiciel en RAID 0 propose donc des performances triples à celles d’un disque seul.

Si l’un des six disques vient à tomber en panne alors, l’ensemble RAID 1 auquel il appartient continue à
fonctionner normalement. Si on perd un second disque dans le même ensemble RAID 1, l’ensemble RAID 0
logiciel n’est pas affecté non plus. Si on perd le troisième disque l’ensemble matériel RAID 1 ne fonctionne
plus ce qui implique que les données stockées sur l’ensemble logiciel RAID 0 sont perdues. Ainsi en RAID
10, on perdre jusqu’à 2 disques par ensemble RAID 1 (dans notre exemple) soit un maximum de 6 disques
sur les 9 disques.

Pour conclure, les performances en RAID 01 sont les mêmes qu’en RAID 10. Cependant l’ensemble RAID
10 se distingue au niveau de la tolérance de pannes car il peut perdre (dans notre exemple) jusqu’à 6
disques contre 2 uniquement pour le RAID 01. C’est pour cette raison essentielle que le RAID 10 est préféré
au RAID 01.

1.2.3 Le RAID 50 et les autres combinaisons

Une autre combinaison très utilisée est le RAID 50. En effet, elle permet d’obtenir d’excellentes
performances tout en gérant la tolérance de panne.

57/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

D’une manière générale toutes les combinaisons en RAID X0 sont misent en place. En effet, on implémente
d’abord un mode X qui gère la tolérance de panne (1, 3, 4, 5 ou 6) puis un mode RAID 0 afin de maximiser
les performances. Bien entendu, il est tout à fait possible au niveau théorique de combiner des modes qui
implémentent la tolérance de panne. On peut par exemple, penser au RAID 55 ou au RAID 53. Cependant,
en pratique, les constructeurs n'implémente quasiment jamais de tels modes car si l'on combine deux
modes qui demande un contrôle de parité alors il faut disposer d'une carte RAID extrêmement puissante
afin de pouvoir réaliser les calculs de parité sur deux niveaux.

Les combinaisons les plus utilisées sont donc le RAID 10, 30 et 50. Les combinaisons RAID 40 et 60 sont
rarement rencontrées en raison du succès commercial mitigé (voire nul de nos jours) du RAID 4 et du RAID
6.

2. Implémentation du RAID logiciel
2.1 Configuration du noyau

L'implémentation du RAID sous Linux nécessite une prise en charge du noyau. Il est nécessaire de cocher
le support du RAID dans le noyau. Pour cela il faut se rendre dans le menu Device Drivers => Multi-Device
support, cocher le support du RAID ainsi que les niveaux de RAID souhaités. Puis recompiler le noyau (ou
les modules si le support du RAID a été coché en module).

2.2 Installation de mdadm

Vous devez également installer mdadm (partie userland (qui ne dépend pas du noyau) du RAID) qui est
disponible à l'adresse suivante : http://cgi.cse.unsw.edu.au/~neilb/mdadm

Ceux-ci peuvent être installés via les systèmes de packages :

root@localhost # emerge sys-fs/mdadm

root@localhost # apt-get install mdadm

2.3 Partitions pour le RAID

Pour mettre en place du RAID logiciel, nous devons tout d’abord créer des partitions sur nos disques qui
vont servir à stocker les données de nos partitions RAID.

Pour cela nous utiliserons fdisk comme pour créer des partitions sur les disques, mais au lieu de choisir le
type 83 (Linux), nous devons choisir le type FD qui représente des partitions « Linux RAID Autodetect ».

2.4 Partitions de RAID

Les partitions de RAID, c'est-à-dire représentant la partition de RAID sont désignés par les fichiers spéciaux
:

/dev/mdX

Où X est un numéro représentant la partition de RAID voulue. Ce numéro est compris entre 0 et 15 inclus.
Nous pouvons donc avoir 16 partitions de RAID logiciels au maximum.

58/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Attention : il n’y a pas besoin de partitionner son disque en RAID logiciel. Ils doivent être utilisés
directement comme des partitions.

2.5 Configuration du RAID

Le RAID à l’aide de mdadm ne se configure pas dans un fichier, mais à l’aide de la commande qui vous
permettra de créer vos disques logiques et de les administrer.

Attention : un fichier est quand même utilisé mais est créé aussi grâce à la commande mdadm.

Nous allons voir comment créer des partitions RAID de niveau 0, 1 et 5.

2.6 Mise en place d'un RAID 0

Nous allons créer une partition de RAID 0 (stripping) sur les partitions /dev/sdb1 et /dev/sdc1

root@localhost # mdadm --create /dev/md0 --level=linear --raid-devices=2
/dev/sdb1 /dev/sdc1

Les options que nous utilisons sont donc :

 --create : nous voulons créer une partition de RAID
 /dev/md0 : nous voulons créer notre partition de RAID sur /dev/md0
 --level : nous permet de préciser le niveau de RAID que nous voulons
 --raid-devices=X : permet de préciser le nombre de disques durs que nous voulons utiliser pour ce
disque de RAID
 /dev/sdb1 /dev/sdc1 : représentent les fichiers spéciaux vers les partitions que nous voulons
utiliser. Il doit y avoir autant de fichiers spéciaux que le nombre précisé dans l’option --raid-devices

Les différentes valeurs que nous pouvons préciser pour créer notre RAID 0 à l’option --level sont les
suivantes :

 0
 linear
 raid0
 stripe

Nous pouvons donc maintenant formater notre RAID :

root@localhost # mke2fs -j /dev/md0

2.7 Mise en place d'un RAID 1

Cette partie décrit la mise en place d’un RAID 1 (mirroring) sur les partitions /dev/sdb1 et /dev/sdc1 et
utiliser la partition /dev/sdd1 en disque de spare.

La commande pour créer notre RAID est donc la suivante :

59/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

root@localhost # mdadm --create /dev/md0 --level=1 --raid-devices=2
/dev/sdb1 /dev/sdc1 --spare-devices=1 /dev/sdd1

Les nouvelles options sont donc :

 --spare-devices=X : précise le nombre de disques de spare
 /dev/sdd1 : tel que précédemment pour l’option --raid-devices, cela représente la partition à
utiliser pour le disque de spare. Il en faut autant que précisé dans l’option --spare-devices

Les différentes options utilisables pour --level sont :

 1
 raid1
 mirror

2.8 Mise en place d'un RAID 0+1

Nous allons mettre en place un RAID 10 (stripping + mirroring), donc mettre en place un RAID 0 sur des
disques en RAID 1.

Il nous faut au moins 4 partitions disponibles pour effectuer cela. Commençons par créer nos deux disques
en RAID 1 :

root@localhost # mdadm --create /dev/md0 --level=1 --raid-devices=2
/dev/sdb1 /dev/sdc1
root@localhost # mdadm --create /dev/md1 --level=mirror --raid-devices=2
/dev/sdd1 /dev/sde1

Créons ensuite le disque de RAID 0 en utilisant nos deux périphériques en RAID 1 :

root@localhost # mdadm --create /dev/md2 --level=raid0 --raid-devices=2
/dev/md0 /dev/md1

On peut alors formater notre disque de RAID final :

root@localhost # mke2fs -j /dev/md2

Pour accéder au RAID il nous faudra taper :

root@localhost # mount /dev/md2 /mnt/temp

2.9 Mise en place d'un RAID 5

Nous allons mettre en place un RAID 5. Pour cela il nous faut au minimum 3 disques, nous utiliserons sdb1,
sdc1 et sdd1 en tant que disques de RAID et sde1 en tant que disque de spare.

60/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Nous allons donc utiliser la commande suivante pour créer notre disque de raid :

root@localhost # mdadm --create /dev/md0 --leve=raid5 --raid-devices=3
/dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1

Nous pouvons alors formater notre disque de RAID :

root@localhost # mke2fs -j /dev/md0

Il est possible d’accéder au disque en tapant :

root@localhost # mount /dev/md0 /mnt/temp

2.10 Fichier de configuration

Une fois que nous avons créé nos disques de RAID, il nous faut les sauver dans le fichier de configuration
afin d’en sauver l’existence. Pour cela nous allons utiliser la commande suivante :

root@localhost # mdadm --examine --scan >> /etc/mdadm.conf

Attention : l’emplacement de ce fichier de configuration peut être différent. Par exemple, sous Debian, il
se situe à cet emplacement : /etc/mdadm/mdadm.conf

2.11 Afficher les informations d'un disque de RAID

Pour afficher l’état d’un disque RAID actif, nous devons utiliser directement la commande mdadm sans
options :

root@localhost # mdadm /dev/md0
/dev/md0: 1023.88MiB raid1 2 devices, 1 spare. Use mdadm --detail for more
detail.
/dev/md0: device 0 in 2 device undetected raid0 md2. Use mdadm --examine
for more detail.

Nous pouvons aussi utiliser l’option --detail pour avoir un listing détaillé de l’état de notre RAID :

root@localhost # mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Oct 3 17:04:43 2005
Raid Level : raid1
Array Size : 1048448 (1023.88 MiB 1073.61 MB)
Device Size : 1048448 (1023.88 MiB 1073.61 MB)
Raid Devices : 2

61/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Oct 3 17:05:11 2005
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1

UUID : 255a67d6:845546d7:91258d6a:41088f14
Events : 0.2

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1

2 8 49 - spare /dev/sdd1

Note : Ces exemples sont donnés dans le cas d’un disque en RAID 1 avec 2 disques de RAID et un disque
de spare.

2.12 Ajout et retrait d'un périphérique à chaud

Lors du crash d'un disque, le système remplace le disque en panne par le disque de spare. Cependant, plus
aucun disque de spare n'est disponible en cas de panne d'un autre disque. Le retrait de disque à chaud va
nous permettre de retirer le disque défectueux et l'ajout à chaud va nous permettre de rajouter un disque
de spare au RAID.

Pour cet exemple, nous utiliserons le même disque de RAID que dans la partie précédente : RAID 1 avec
deux disques de RAID et un disque de spare.

Simulons à présent la panne du disque /dev/sdc1 :

root@localhost # mdadm /dev/md0 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0

Nous pouvons maintenant voir le changement dans l’état de notre disque de RAID.

Attention, nous avons coupé la sortie de la commande pour faciliter la lecture des informations modifiées :

root@localhost # mdadm --detail /dev/md0
[...]
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 49 1 active sync /dev/sdd1

2 8 33 - faulty /dev/sdc1

Nous voyons donc que le périphérique /dev/sdc1 est marqué comme faulty, c'est-à-dire défaillant, et que
notre disque de spare sdd1 est alors passé en mode actif, il a bien remplacé le disque défaillant.

62/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Nous pouvons alors le supprimer du disque de RAID et rajouter le disque sde1 comme disque de spare
pour cet agrégat :

root@localhost # mdadm /dev/md0 -r /dev/sdc1
mdadm: hot removed /dev/sdc1

root@localhost # mdadm /dev/md0 -a /dev/sde1
mdadm: hot added /dev/sde1

Nous aurions aussi pu compresser ces deux commandes en une seule :

root@localhost # mdadm /dev/md0 -r /dev/sdc1 -a /dev/sde1

Attention : ce regroupement ne fonctionne que pour des commandes sur le même disque de RAID.

3. Gérer les périphériques RAID
3.1 Gestion des disques de RAID

Nous allons maintenant voir comment démarrer, arrêter, marquer comme lecture seule ou lecture-écriture
un disque de RAID. Tout cela se passe dans le mode misc de mdadm.

Option Option
Description
longue courte
Permet d’arrêter un périphérique de RAID, toutes les
--stop -S
ressources utilisées sont libérées
Permet de démarrer un périphérique de RAID non complet
--run -R
(manque de disques physiques, pas entièrement construit, ...)
--readonly -o Marque le périphérique de RAID comme étant en lecture seule
Marque le périphérique de RAID comme étant en lecture
--readwrite -w
écriture

Exemples :

Arrêt du périphérique /dev/md0 :

root@localhost # mdadm --misc --stop /dev/md0

Démarrage du périphérique /dev/md0

root@localhost # mdadm --misc --R /dev/md0
mdadm: array /dev/md0 started.

63/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Passage du périphérique /dev/md0 en lecture seule :

root@localhost # mdadm --misc --readonly /dev/md0

3.2 Monitorer ses périphériques RAID

mdadm dispose d’un mode lui permettant de surveiller les périphériques de RAID créés et d’envoyer des
alertes lorsqu’un évènement se produit. Il peut aussi exécuter un programme à chaque alerte.

Pour cela, il faut lancer mdadm avec l’option -F ou --monitor pour lui dire d’utiliser ce mode et l’option --
scan pour qu’il cherche tous les périphériques de RAID actifs. Les autres options utiles disponibles sont :

Option longue Option courte Description
--pid-file fichier.pid -i fichier.pid Fichier contenant le PID du daemon
--mail Adresse mail à qui envoyer les
-m mail@domain.fr
mail@domain.fr alertes
--program binaire --alert Programme à lancer lorsqu’il y a des
-p binaire
binaire alertes
--daemonize -f Passer en mode daemon
Temps entre deux vérifications (en
--delay 30 -d 30
secondes)

Exemple :

Nous voulons vérifier l’état de nos disques de RAID toutes les 30 secondes et si un évènement survient, il
faut envoyer les alertes à l’adresse mail : labo-linux@supinfo.com. Le fichier qui contiendra le PID du
daemon sera : /var/run/mdadm.pid

root@localhost # mdadm -F --scan -f --delay 30 --pid-file
/var/run/mdadm.pid -m labo-linux@supinfo.com

Nous aurions pu faire la même chose, mais juste pour le périphérique /dev/md0 avec la commande
suivante :

root@localhost # mdadm -F -f --delay 30 --pid-file /var/run/mdadm.pid -m
labo-linux@supinfo.com /dev/md0

4. Mise en place de LVM
4.1 Présentation

Dans un environnement de partitionnement classique, vous ne pouvez avoir que 4 partitions primaires par
disque dur ou 3 partitions primaires et une partition étendue contenant des partitions logiques, ce qui est
assez restrictif.

64/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

C'est pourquoi IBM a mis au point le LVM, ou Logical Volume Manager. Grâce à cet outil, vous allez pouvoir,
entre autres, créer autant de partitions que vous le désirez, les redimensionner sans formatage et les étaler
sur plusieurs disques. Mais LVM dispose également de nombreuses autres possibilités.

Ses objectifs : éviter l’arrêt et le redémarrage de la machine et permettre à l'utilisateur de s'affranchir
totalement des contraintes physiques imposées par les disques durs.

4.2 Composition de LVM

Chaque disque dur ou partition va être transformé en volume physique. Pour cela LVM va le diviser en
tranches de 4Mo (par convention), appelées « physical extents ». Il écrase par la même occasion toutes les
données existantes sur la partition ou le disque.

Chaque volume physique va être ensuite inséré dans un groupe de volumes, lui même découpé en « logical
extents » (LE) de même taille que les « physical extents » (PE), soit 4Mo. Alors qu'avec LVM 1, les « logical
extents » créés par répartition ne peuvent pas être étendus au-delà des « physical extents » initiaux, LVM 2
permet l’extension des « logical extents » répartis en concaténant d'autres extents.

LVM va ensuite créer des pointeurs entre un « physical extent » et un « logical extent ». Cette
correspondance peut être linéaire ( une plage de « physical extents » attribuée à un volume physique dans
l'ordre) ou répartie. Cette dernière permet de distribuer des morceaux d'extents logiques sur plusieurs
volumes physiques améliorant ainsi, dans certains cas, les performances du volume logique.

Puis, chaque groupe de volumes va être divisé en volumes logiques (assimilable à des partitions classiques)
dans lesquels nous créerons un système de fichiers ou une partition de swap. Grâce à l'utilisation des «
logical extents » et des « physical extents », ces partitions pourront être redimensionnées, déplacées,
supprimées, ajoutées sans redémarrage et sans perte de données.

De plus, LVM permet d'utiliser un nommage plus compréhensible que les noms des disques physiques.

L'utilisation du LVM entraîne une diminution de l'espace disque causée par l'écriture des données
nécessaires au système pour utiliser le LVM : les métadatas.

 la Physical Volume Reserved Area contient les informations sur le volume physique
 la Volume Group Reserve Area contient les informations liées au groupe de volumes et aux
volumes logiques contenus dans le groupe de volumes
 la Bad Block Relocation Area contient des informations nécessaires à la réparation des blocs
défectueux

LVM dispose également d'un autre outil : les snapshots ou instantanés. Un instantané permet de copier à
l'identique et à un instant donné un volume logique dans un nouveau périphérique.

4.3 Installation

Vous devez avoir compilé le driver LVM dans votre noyau (en dur ou en module). Celui-ci se situe dans le
menu de compilation "Multi-device support". Ou dans le fichier de configuration:

# Multi-device support (RAID and LVM)
CONFIG_BLK_DEV_LVM=m

L'installation de LVM nécessite le mappeur de périphériques.

65/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

luser@localhost # cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm login cvs

Le mot de passe est « cvs ». Tapez ensuite la commande suivante pour récupérer le code source :

# cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm checkout device-mapper

Cela crée un nouveau répertoire device-mapper dans le répertoire courant et contenant la dernière version
du code du mappeur de périphériques.

Pour ensuite récupérer le code source de LVM 2 dans le répertoire lvm2 tapez la commande ci-dessous:

# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 checkout LVM2

Ou bien celle-ci si vous désirez LVM 1:

root@localhost # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm checkout
LVM

4.4 Démarrage et arrêt de LVM

Le démarrage de LVM se fait via deux commandes :

root@localhost # vgscan
root@localhost # vgchange -a y

Et l'arrêt une seule :

root@localhost # vgchange -a n

Voici un exemple de fichier de démarrage LVM pour Debian. Notez que l'installation du paquet lvm2 ou lvm-
common (lvm1) crée automatiquement un script de démarrage pour lvm situé dans /etc/init.d/lvm:

#!/bin/sh
case "$1" in
start)
/sbin/vgscan
/sbin/vgchange -ay
;;
stop)
/sbin/vgchange -an
;;
restart|force-reload)

66/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

;;
esac
exit 0

Même exemple mais pour une Red Hat:

if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
action $"Logical Volume Management" /sbin/vgscan &&
/sbin/vgchange -a y
fi

5. LVM en détail
5.1 Initialiser un volume physique

Avant de pouvoir utiliser un disque ou une partition comme volume physique, il faut l'initialiser avec la
commande pvcreate :

root@localhost # pvcreate /dev/hda

Cela crée un descripteur de groupe de volumes au début du disque (cas donné) ou de la partition.

Si LVM ne peut pas initialiser un disque qui possède déjà une table de partition, vous pouvez taper les
commandes suivantes qui détruiront alors la table des partitions du disque:

root@localhost # dd if=/dev/zero of=/dev/hda bs=1k count=1

root@localhost # blockdev --rereadpt /dev/hda

5.2 Ajouter un volume physique à un groupe de volumes

Le volume physique à ajouter doit d'abord être initialisé puis ajouté au groupe de volumes:

root@localhost # vgextend nom_du_groupe_de_volumes /dev/hda1

5.3 Supprimer un volume physique à un groupe de volumes

En premier lieu, vérifiez que le volume physique n'est utilisé par aucun volume logique grâce à la
commande:

root@localhost # pvdisplay /dev/hda1
--- Physical volume ---
PV Name /dev/hda1
VG Name kevin

67/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

PV Size 3.9 GB / NOT usable 4 MB [LVM: 244 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 998
Free PE 0
Allocated PE 998

Si le volume physique est encore en cours d’utilisation, il faut migrer les données vers un autre volume
physique:

root@localhost # pvmove /dev/hda1
pvmove -- moving physical extents in active volume group "vg"
pvmove -- WARNING: moving of active logical volumes may cause data
loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 998 extents of physical volume "/dev/hda1" successfully
moved

Puis, le supprimer du groupe de volumes:

root@localhost # vgreduce nom_du_groupe_de_volumes /dev/hda1

5.4 Créer un groupe de volumes

Pour cela, utilisez la commande vgcreate :

root@localhost # vgcreate nom_du_groupe_de_volumes /dev/hda1 /dev/hda2

Vous pouvez aussi choisir la taille des extents avec l'option « -s » et préciser des limites sur le nombre de
volumes physiques et logiques que le volume peut contenir.

Tapez ensuite les commandes suivantes pour activer le groupe de volumes:

root@localhost # vgchange –a n && vgchange –a y nom_du_groupe_de_volumes

5.5 Détruire un groupe de volumes

Pour enlever un groupe de volumes, assurez vous qu'aucun volume logique n'est présent :

Dans un premier temps désactivez le :

root@localhost # vgchange -a n nom_du_groupe_de_volumes

68/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Puis supprimez le grâce à cette commande :

root@localhost # vgremove nom_du_groupe_de_volumes

5.6 Créer un volume logique

Pour créer un volume physique «lv» linéaire de T Go et son périphérique associé « /dev/vg/lv » :

root@localhost # lvcreate -L T -n lv vg

Si vous désirez allouer le volume logique à un volume physique précis il faut spécifier son nom à la fin de la
commande lvcreate.

root@localhost # lvcreate -L T -n lv vg /dev/hda

Nous allons ensuite créer un volume logique de X Logical Extents avec Y blocs répartis de Z Ko :

root@localhost # lvcreate -i Y -I Z -l X -n lv vg

Nous voulons un volume logique qui utilise toute la place disponible dans le groupe de volumes. Pour cela,
nous allons lancer la commande lvcreate avec un nombre de Physical Extents égal au total des Physical
Extents retourné par la commande pvdisplay.

root@localhost # lvcreate -l total_des_pe vg -n perso

Cela créera un volume logique appelé « perso » qui remplira la totalité du groupe de volumes vg.

5.7 Détruire un volume logique

Nous démontons tout d'abord le volume logique :

root@localhost # umount /dev/vg/lv
root@localhost # lvremove /dev/vg/lv
lvremove -- do you really want to remove "/dev/vg/lv"? [y/n]: y
lvremove -- doing automatic backup of volume group "vg"
lvremove -- logical volume "/dev/vg/lv" successfully removed

5.8 Etendre un volume logique

Nous utiliserons pour cette opération la commande lvextend à laquelle nous allons renseigner la quantité
d'espace à ajouter ou la taille finale du volume logique:

69/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

root@localhost # lvextend -L 15G /dev/vg/lv
lvextend -- extending logical volume "/dev/vg/lv" to 15 GB
lvextend -- doing automatic backup of volume group "vg"
lvextend -- logical volume "/dev/vg/lv" successfully extended
root@localhost # lvextend -L +5G /dev/vg/lv
lvextend -- extending logical volume "/dev/vg/lv" to 15 GB
lvextend -- doing automatic backup of volume group "vg"
lvextend -- logical volume "/dev/vg/lv" successfully extended

Une fois le volume logique étendu, il est nécessaire d'augmenter la taille du système de fichier à la taille
correspondante.

Pour ext2 et LVM 1, la commande e2fsdam effectue pour vous le lvextend et le resize2fs, aussi bien pour
un agrandissement que pour une réduction.

6. Mise en place du LVM
On dispose de trois disques IDE /dev/hda, /dev/hdb et /dev/hdc.

Nous allons dans un premier temps préparer les disques avec pvcreate et créer une zone avec les
descripteurs de groupes de volumes au début des disques. Ces commandes effacent totalement les
données présentes sur les disques durs :

root@localhost # pvcreate /dev/hda
root@localhost # pvcreate /dev/hdb
root@localhost # pvcreate /dev/hdc

Puis l'on créé un groupe de volumes :

root@localhost # vgcreate nom_du_groupe_de_volumes /dev/hda /dev/hdb
/dev/hdc

Il faut ensuite créer un volume logique, qui sera ici de 10Go :

root@localhost # lvcreate -L 10G -n nom_du_volume_logique
nom_du_groupe_de_volumes
lvcreate -- doing automatic backup of "nom_du_groupe_de_volumes"
lvcreate -- logical volume
"/dev/nom_du_groupe_de_volumes/nom_du_volume_logique" successfully created

Puis un système de fichiers, ici ext2, dans le volume logique avec :

root@localhost # mke2fs /dev/nom_groupe_de_volumes/nom_du_volume_logique

6.1 Ajouter un disque

70/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

Nous avons une machine avec 3 disques durs :

root@localhost # pvscan
pvscan -- ACTIVE PV "/dev/hda" of VG "vg1" [2 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb1" of VG "vg1" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb2" of VG "vg2" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdc" of VG "vg2" [2 GB / 0 free]
pvscan -- total: 4 [6 GB] / in use: 4 [6 GB] / in no VG: 0 [0]

root@localhost # df -h
Filesystem Total Used Available Use% Mounted on
/dev/vg1/lv1 1G 1G 0GB 100% /mnt/vg1lv1
/dev/vg1/lv2 2G 2GB 0GB 100% /mnt/vgl1v2
/dev/vg2/lv1 1G 1GB 0GB 100% /mnt/vg2lv1
/dev/vg2/lv2 2G 2GB 0GB 100% /mnt/vg2lv2

Un nouveau disque est ajouté au système : /dev/hdf. Il doit être partagé entre les deux groupes et est
donc partitionné en deux volumes physiques /dev/hdd1 et /dev/hdd2 de 2 Go chacun qu'il faut ensuite
initialiser :

root@localhost # pvcreate /dev/hdd1 pvcreate -- physical volume "/dev/hdd1" successfully created
root@localhost # pvcreate /dev/hdd2 pvcreate -- physical volume "/dev/hdd2" successfully created

Les volumes physiques sont ensuite ajoutés aux groupes de volumes :

root@localhost # vgextend vg1 /dev/hdd1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "vg1"
vgextend -- volume group "vg1" successfully extended

root@localhost # vgextend vg2 /dev/hdd2
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "vg2"
vgextend -- volume group "vg2" successfully extended

root@localhost # pvscan
pvscan -- ACTIVE PV "/dev/hda" of VG "vg1" [2 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb1" of VG "vg1" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb2" of VG "vg2" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdc" of VG "vg2" [2 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdd1" of VG "vg1" [2 GB / 2 GB free]
pvscan -- ACTIVE PV "/dev/hdd2" of VG "vg2" [2 GB / 2 GB free]
pvscan -- total: 4 [6 GB] / in use: 4 [6 GB] / in no VG: 0 [0]

Nous allons ensuite étendre les systèmes de fichiers pour utiliser l'espace disque supplémentaire.

Nous démontons les deux systèmes de fichiers avant le dimensionnement :

root@localhost # umount /mnt/vg1lv1
root@localhost # umount /mnt/vg2lv2

Puis nous utilisons la commande e2fsadm pour redimensionner le volume logique et le système de fichiers :

71/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

root@localhost # e2fsadm /dev/vg1/lv1 -L +1G
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
lvextend -- extending logical volume "/dev/vg1/lv1" to 2 GB
lvextend -- doing automatic backup of volume group "vg1"
lvextend -- logical volume "/dev/vg1/lv1" successfully extended
e2fsadm -- ext2fs in logical volume "/dev/vg1/lv1" successfully extended to
2 GB

root@localhost # e2fsadm /dev/vg2/lv2 -L +1G
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
lvextend -- extending logical volume "/dev/vg2/lv2" to 3 GB
lvextend -- doing automatic backup of volume group "vg2"
lvextend -- logical volume "/dev/vg2/lv2" successfully extended
e2fsadm -- ext2fs in logical volume "/dev/vg2/lv2" successfully extended to
3 GB

Enfin nous pouvons remonter les systèmes de fichiers :

root@localhost # mount /dev/vg1/lv1
root@localhost # mount /dev/vg2/lv2
root@localhost # df -h
Filesystem Total Used Available Use% Mounted on
/dev/vg1/lv1 2G 1G 1GB 50% /mnt/vg1lv1
/dev/vg1/lv2 2G 2GB 0GB 100% /mnt/vgl1v2
/dev/vg2/lv1 1G 1GB 0GB 100% /mnt/vg2lv1
/dev/vg2/lv2 3G 2GB 1GB 66% /mnt/vg2lv2

6.2 Retirer un disque

Vous avez un vieux disque /dev/hdc que vous voulez le retirer mais des données y sont encore stockées.

Vérifiez que vous avez assez d'extents libres sur les autres disques du groupe de volumes puis migrer les
anciens extents vers les disques restants :

root@localhost # pvmove -V /dev/hdc
pvmove -- moving physical extents in active volume group "vg2"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 500 extents of physical volume "/dev/hdc" successfully moved

pvmove est une commande très lente. L'option -v vous renseigne sur son état d'avancement.

Nous pouvons désormais supprimer l'ancien disque du groupe de volumes puis le retirer de la machine.

72/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

root@localhost # vgreduce dev /dev/hdc
vgreduce -- doing automatic backup of volume group "vg2"
vgreduce -- volume group "dvg2" successfully reduced by physical volume:
vgreduce -- /dev/hdc

N'oubliez pas de toujours démonter votre volume :

root@localhost # e2fsadm -L +5G /dev/vg/lv

5.8.1 ext2/ext3

root@localhost # umount /dev/vg/lv
root@localhost # resize2fs /dev/vg/lv
root@localhost # mount /dev/vg/lv

5.8.2 reiserfs

root@localhost # umount /dev/vg/lv
root@localhost # resize_reiserfs /dev/vg/lv
root@localhost # mount -treiserfs /dev/vg/lv

5.8.3 xfs

Les systèmes de fichiers XFS doivent être montés pour être redimensionnés et le point de montage doit
être donné à la place du nom de périphérique.

root@localhost # xfs_growfs /point_de_montage

5.8.4 jfs

Comme XFS, le système de fichiers JFS doit être monté pour être redimensionné et le point de montage
doit être spécifié plutôt que le nom du périphérique.

root@localhost # mount -o remount,resize /point_de_montage

5.9 Réduire un volume logique

Lors de la réduction de volumes logiques, il faut réduire la taille du système de fichiers et donc des données
y étant avant de le réduire lui-même ou une perte de données risque de se produire.

Il n'y a actuellement aucun moyen de réduire un système de fichiers XFS ou JFS.

5.9.1 ext2/ext3

73/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed

En utilisant e2fsadm avec LVM 1 :

root@localhost # umount /dev/vg/lv
root@localhost # e2fsadm -L -5G /dev/vg/lv
root@localhost # mount /dev/vg/lv

Avec LVM 2 vous devez connaître la nouvelle taille T du volume en blocs :

root@localhost # umount /dev/vg/lv
root@localhost # resize2fs /dev/vg/lv T
root@localhost # lvreduce -L -5G /dev/vg/lv
root@localhost # mount /dev/vg/lv

5.9.2 reiserfs

root@localhost # umount /dev/vg/lv
root@localhost # resize_reiserfs -s -5G /dev/vg/lv
root@localhost # lvreduce -L -5G /dev/vg/lv
root@localhost # mount -t reiserfs /dev/vg/lv

74/74 napster_simon@hotmail.com