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.
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.
Un symbole de l'invite de commande vous permet de determiner le type de compte que vous utilisez.
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.
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
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
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.
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
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
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 $ 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
luser@localhost $ ls
index.htm sommaire.htm t0st.c table.htm test.c
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
6/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
luser@localhost $ ls t?st.c
t0st.c test.c
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.
vi fichier
vi fichier_1 fichier_2
Contrairement aux éditeurs wysiwyg (what you see is what you get) VIm fonctionne par mode.
Le mode insertion :
Le mode commande
Les caractères tapés sont considérés comme des commandes d'édition de texte
7/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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
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.1 tar
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.
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 :
Listing
Extraction
9/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
2 - Décompresse et extrait :
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.
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 :
2 - Compresse au maximum chaque fichier .txt séparément, et les renomme en ajoutant le suffixe .gz :
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
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 :
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 :
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
On peut utiliser find pour exécuter une commande sur certains fichiers :
11/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
Exemple :
luser@localhost $ cd ~
luser@localhost $ find . -name "*.avi" -exec rm {} \;
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 :
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.
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
...
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
13/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
linux-lfs.vmx.WRITELOCK
searches.xml
shortcuts.xml
vfolders.xml
views
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>
Notons que l’on peut rediriger l’erreur standard et la sortie standard vers le même fichier :
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 :
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.
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
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
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)
16/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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.
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
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.
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.
Le fichier /etc/group contient les information relatives au groupes présents sur le système.
Voici sa syntaxe :
groupe:*:GID:utilisateurs
compta:x:230:pierre,romain,jerome
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.
18/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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
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.
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
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.
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à
groupdel GID
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 :
Ceci permet d'ajouter l'utilisateur "toto" dans les groupes "toto", "users", "fileshare" et "dev".
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
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").
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.
Commande Explication
22/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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
1.1 Propriétaire
Note:
les options entre crochets [ ] sont des options facultatives
Syntaxe :
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
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 :
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
lire : Read
ecrire : Write
exécuter : eXecute
Ces trois actions vont être définies pour trois types de personnes :
24/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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 :
Dans ce mode, nous allons utiliser des lettres et des opérateurs pour ajouter ou supprimer des droits.
+ 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
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.
Il existe trois droits spéciaux : suid, sgid et sticky bit. Il sont ajoutés grâce à la commande chmod.
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.
1. 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
Windows Linux
27/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
NTLDR Lilo
Grub
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, ...
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
2.2 Grub
Grub (Gnu Grand Unified Bootloader) est un bootloader qui devient de plus en plus courant.
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.
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
title Windows
rootnoverify (hd0,0)
chainloader +1
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.
Copiez les deux stages sur deux disquettes différentes, sinon vous écraserez le premier.
root@localhost # grub
grub> root(fd0)
grub> setup(fd0)
grub> quit
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 existe plusieurs outils pour partitionner un disque dur sous linux. Les plus communs sont :
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.
Nous allons créer 1 partition primaire contenant la swap (512Mo) et une partition logique contenant "/"
(5Go)
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
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
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.
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
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".
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 :
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)
Syntaxe :
umount /mnt/dir
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)
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.
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 :
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
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
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
les commandes permettant de contrôler les priorités des processus sont nice et renice.
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.
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.
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.
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:
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)
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.
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).
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
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.
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
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
La commande ifconfig permet aussi de configurer la carte réseau avec la syntaxe suivante :
3.1.2 ifup/ifdown
ifup <interface>
Exemple :
ifdown <interface>
Exemple :
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.
OU
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
Pour atteindre un sous réseau distant, il est nécessaire de spécifier une passerelle (gateway, en anglais) :
Les communications ne correspondant à aucune des routes présentes utilisent la route par défaut (pour
l'Internet notamment) :
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.
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 :
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>
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.
43/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
Par exemple, voyons le chemin que prend nos paquets pour atteindre la machine www.google.com :
4.3 Netstat
Netstat permet d'afficher des détails sur les connexions actives de votre machine (statistiques, ports...)
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.
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).
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
2.2.2 Suppression
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.
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 :
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.
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.
Pour compiler un paquetage RPM source, il faut passer l'option --rebuild à la commande RPM comme ci-
dessous:
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.
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.
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.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
l'option --purge indique ici de supprimer à la fois le paquetage mais aussi l'ensemble des fichiers de
configurations installés.
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
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 :
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.
apt-get distuprgrade
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 .
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:
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".
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.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 sync
La procédure d'installation d'un tarball suit toujours la même logique ainsi définie :
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"
luser@localhost $ cd foobar
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).
51/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
luser@localhost $ make
Note:
vous devez avoir gcc d'installé
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.
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é.
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 :
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.
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.
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).
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
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 ».
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.
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 créer une partition de RAID 0 (stripping) sur les partitions /dev/sdb1 et /dev/sdc1
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
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.
59/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
1
raid1
mirror
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 :
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 :
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 :
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
Pour afficher l’état d’un disque RAID actif, nous devons utiliser directement la commande mdadm sans
options :
Nous pouvons aussi utiliser l’option --detail pour avoir un listing détaillé de l’état de notre RAID :
61/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
UUID : 255a67d6:845546d7:91258d6a:41088f14
Events : 0.2
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.
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.
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 :
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 :
Attention : ce regroupement ne fonctionne que pour des commandes sur le même disque 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 :
63/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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 :
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
Nous aurions pu faire la même chose, mais juste pour le périphérique /dev/md0 avec la commande
suivante :
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.
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:
65/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
Le mot de passe est « cvs ». Tapez ensuite la commande suivante pour récupérer le code source :
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:
root@localhost # vgscan
root@localhost # vgchange -a y
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
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 :
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:
Le volume physique à ajouter doit d'abord être initialisé puis ajouté au groupe de volumes:
En premier lieu, vérifiez que le volume physique n'est utilisé par aucun volume logique grâce à la
commande:
67/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
Si le volume physique est encore en cours d’utilisation, il faut migrer les données vers un autre volume
physique:
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.
Pour enlever un groupe de volumes, assurez vous qu'aucun volume logique n'est présent :
68/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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.
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.
Cela créera un volume logique appelé « perso » qui remplira la totalité du groupe de volumes vg.
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
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.
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 :
70/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
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 # 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.
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
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 :
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
5.8.1 ext2/ext3
5.8.2 reiserfs
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.
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.
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.
5.9.1 ext2/ext3
73/74 napster_simon@hotmail.com
Net-Pro Par : Ghaouti Mohamed
5.9.2 reiserfs
74/74 napster_simon@hotmail.com