Vous êtes sur la page 1sur 41

Révision Générale

Cours administration linux

Responsabilité d’un administrateur :


En ce qui concerne la responsabilité d’un administrateur, il existe trois (3) grandes familles de
tâches qui incombent à l'administrateur Unix : gérer le système, les services et la sécurité.
 Surveiller et assurer la bonne marche du système au quotidien :
 Administrer les services déployés :
 Prévoir et gérer les incidents et les intrusions (tâches transversales) :

Nous devons retenir avant tout, que les aspects essentiels qui définissent un administrateur
sont : le Rôle de l'administrateur système et le Choix d'un système d'exploitation.

Rôle de l’administrateur système

Il est par des fonctions de bases qui les sont les suivantes :
 Installation des systèmes d’exploitation
 Gestion des comptes utilisateurs (Rôles utilisateur & admin : créer, attribuer,
modifier)
 Gérer les fichiers et les disques (changer : droits, attribut, groupes, propriétaires et
visualiser les attributs)
 Organiser les sauvegardes (planification des sauvegardes)
 Ajout / Suppression de périphériques
 Gestion du parc informatique (ensemble des éléments et équipement constituant le
réseau existant
 Gestion des processus (un processus se compose de 2 grandes parties un programme
en cours d'exécution un environnement (variables, ...) fournit par l'OS
 Installation des nouveaux produits (programmes ou logiciels, équipements, etc.)
 Veille à la sécurité du système (mise en place d’une politique de sécurité exemple :
SIEM, Firewall etc. Assistance, superviser et manager le parc informatique)

Critères de choix d’un système d’exploitation


 On choisit un système d’exploitation principalement en fonction des logiciels que l’on
compte utiliser, du type de personnes qui auront à effectuer le suivi du système (taches
d’administration courantes), de l’environnement informatique existant.
 On choisit aussi le système en fonction du coût (humain et financier) des différentes
solutions envisageables.
Chapitre 1 : Présentation de Linux
Linux est un système d'exploitation moderne bénéficiant de l'ensemble des fonctionnalités
d'Unix. Il n'est pas un produit commercial, mais un logiciel libre que l'on peut obtenir
gratuitement. Il est livré avec toutes les fonctionnalités, les outils et les utilitaires
habituellement livrés avec les variantes commerciales d'Unix.
Le Système Unix initialement crée par un étudiant finlandais Linus Torvalds puis aidé par de
nombreuses bénévoles Premières versions opérationnelle sortie fin 1991, Distribué sous
licence GPL (Gnu Public Licence) et a connu sa Version 1.0 sortie en 1994
 c'est un système 32 bits (64 bits sur certaines plate−formes) ;
 il est multi−utilisateurs ;
 il est multitâche (multitâche préemptif c-a-d reconnus pour plusieurs tâches et non
coopératif comme Windows 98) ; dans le domaine des réseaux, il prend parfaitement
en charge la famille des protocoles TCP/IP et possède bien plus de caractéristiques que
la plupart des variantes commerciales d'Unix ;
 il dispose de Shell très performants ainsi que de XFree86, une implémentation
complète du système X−Windows.
Le Système Linux possède les caractéristiques idéales pour implémenter un serveur Internet
stable, performant, sécurisé et flexible. La formation sous Linux avait pour objectif principal
d'acquérir les compétences permettant de proposer à ses clients ou partenaires un service
d'hébergement de sites Internet ainsi qu'un service de gestion de boîtes aux lettres
électroniques, mais aujourd’hui elle peut servir pour plusieurs services dont la sécurité du
système, la sauvegarde des données et d’autres.

I- Le système d'exploitation Linux

Linux est le système qui connaît actuellement le plus grand développement sur l'Internet.

Principalement pour les raisons suivantes :


 Linux est le système de prédilection pour l'installation de trois logiciels serveurs
leaders sur l'Internet : Apache en serveur Web (60% avec ses dérivés selon Netcraft
(http://www.netcraft.com)), Sendmail en serveur courrier et Bind en serveur DNS ;
 Le logiciel Samba qui lui permet d'être serveur de fichier et d'impression en
environnement Microsoft ;
 La stabilité et la sécurité que lui confère le développement de son architecture et de ses
modules au sein de la communauté Open Source.
 Le large choix d'applications dans de très nombreux domaines. Par exemple, la
dernière distribution Debian donne accès à plus de 2000 logiciels différents.
 Moins d'interruptions de service grâce à une gestion intelligente de l'installation des
logiciels. Un serveur sous Linux ne doit être redémarré que lors d'une modification
matérielle comme l'ajout d'un disque ou d'une carte.
 Logiciel Libre. Linux est gratuit et librement recopiable. Cela signifie que l'on peut
télécharger une version de Linux ou l'emprunter et l'installer sur n'importe quel
nombre d'ordinateur.
 Accès aux sources des logiciels. Tous les utilisateurs peuvent modifier le
fonctionnement des programmes ou engager un programmeur pour le faire.
 Linux est plus efficace et consomme moins de ressources CPU et mémoire que
Windows. On peut par exemple faire un serveur d'impression avec un vieux 486.
LINUX COMME SERVEUR = COUTS REDUITS, SECURITE ET PERFORMANCE

1) Les possibilités serveurs de Linux

Le système Linux peut être considéré en tant que serveur Intranet / Internet peut devenir
l'ensemble des solutions suivantes et il est bien entendu possible qu'un seul et même
ordinateur gère toutes ces possibilités :
· un serveur WEB classique (HTTP) ;
· un serveur FTP ;
· un serveur de mail (SMTP, POP) ;
· un serveur Proxy ;
· un Firewall ;
· un serveur DNS ;
· un routeur, etc…
Linux peut gérer un réseau d'entreprise, comme :
· un serveur de fichiers ;
· un serveur d'impression ;
· un serveur de fax ;
· un serveur de connexion Dial−Up (permet de devenir fournisseur d'accès à Internet)
· un serveur de partage de connexion ;
· un serveur de sauvegarde, etc.

Pour transformer un serveur Linux en serveur de base de données, il suffit de coupler le


logiciel de base de données (comme MySQL) avec le serveur Web Apache via un langage
comme PHP. Un simple navigateur Web suffit alors pour accéder à l'application voulue, ce
qui permet d'alimenter et de consulter très facilement des bases de données.

2) Administration du système :

Pour réaliser les tâches d'administration, on utilise le compte traditionnellement appelé « root
» (à ne pas confondre avec la racine de l'arborescence qui porte le même nom).

De ce point de vue, le système de gestion des droits à la mode Unix est plutôt primitif, un
utilisateur spécial dispose des droits lui permettant d'accéder à l'intégralité du système. Tous
les autres utilisateurs sont soumis au système de gestion des permissions d'accès.

Il est donc assez difficile, sous Unix, de déléguer l'administration d'un sous-système à des
utilisateurs. Car il doit avoir :

- la maîtrise de l'utilisation de Linux ou d'Unix (commandes shell de base, configuration des


services et autres) ;
- savoir modifier des fichiers au format texte à l'aide de l'un des éditeurs traditionnellement
disponibles sous Unix (vi, emacs, pico, etc.).
II- Notions Sur Unix

Sous Unix nous trouvons 3 notions indispensables qui définissent tout système d’exploitation
et assure son fonctionnement, elles sont les suivantes :

Noyaux et modules, fichiers, disques et autres médias.

Composants principaux d'un système d'exploitation :

A- Le noyau :
Il est un ensemble de logiciel assurant l’interface entre le matériel et les processus (systèmes
ou utilisateurs), il se charge du démarrage du système, qui reste en mémoire. Une fois
initialisé, il détecte les périphériques et lance le premier processus (init). Il peut être fait d’un
bloc rigide ou à modules dynamiques, entièrement configurable par l’administrateur.

Le noyau a pour rôle d’Abstraction du matériel (Couche logique = API unifiée, Pilotes pour la
gestion des périphériques), de gérer des processus Naissance, suspension, suppression, de
gérer des communications interprocessus, Signaux, tubes, ..., de partager le temps machine
entre les processus, de gérer de la mémoire réservation, libération, échange (swap)

Modules du noyau
● Module = extension du noyau à charger dynamiquement.o placé dans
/lib/modules/version_de_noyau
● Pilotes matériels sont les modules les plus courants
● Commandes :
lsmod : liste les modules
insmod : charge un module
rmmod : retire un module
depmod : établit les dépendances inter-modules
modprobe : charge ou retire modules et dépendances
● Fichiers :
/etc/modules.conf : configuration de modprobe
/lib/modules/???/modules.dep : liste des dépendances

B- Les fichiers :
Sous UNIX, tout est représenté par un fichier données (bien sûr), mais aussi périphérique,
mémoire...
On trouve différents types de « fichiers » les plus courants : normal (-), répertoire (d), mais
aussi : lien symbolique (l), périphérique (c), etc.

Commande pour voir le détail des fichiers : ls -l


-rw-r--r-- 1 mquinson users 1055740 Jun 13 16:42 toto

1- Arborescence
La disposition des fichiers dans l'arborescence des systèmes Unix n'est, en général, pas d'une
compréhension évidente de prime abord.
Il est cependant indispensable de connaître les règles qui président à la distribution des
fichiers et répertoires dans le système des fichiers afin de :
 déterminer un plan de sauvegarde ;
 gérer la sécurité ;
 agir efficacement lors de la résolution des problèmes ;
 installer des logiciels non disponibles sous formes de paquetage ;
 etc.
Les fichiers sont rangés sous forme d'arbre Racine unique → différence avec Windows (a:, c:,
d:), Le standard FHS précise la place des fichiers Filesystem Hierarchy Standard ; plus ou
moins suivi et il est disponible sur cette page http://www.pathname.com/fhs/), a pour ambition
de proposer la normalisation de l'organisation de système de fichiers pour les systèmes Unix.
La plupart des distributions Linux s'y conforme même s'il reste beaucoup de différences dans
les détails d'implémentation.

Schéma illustratif
2- La racine du système de fichiers

La racine de l'arborescence Linux contient ces répertoires :


bin programmes utilisateur essentiels (nécessaires au démarrage du système)
boot fichiers nécessaires au chargement de Linux (bootloader, initrd, noyau)
dev fichiers spéciaux offrant l'accès aux périphériques
etc configuration du système et des services
home répertoires principaux des utilisateurs
initrd répertoire utilisé pour construire l'image disque en RAM du noyau
lib librairies partagées essentielles (nécessaires au démarrage du système)
mnt contient des points de montage temporaires (cdrom, floppy, etc.)
opt applications tierces
proc et sys systèmes de fichiers virtuels permettant d'accéder aux structures internes du noyau
(sys est nouveau depuis la version 2.6 de Linux)
root répertoire principal de l'utilisateur root
sbin exécutables système essentiels (nécessaires au démarrage du système)
tmp répertoire pour le stockage de fichiers temporaires
usr arborescence contenant la plupart des fichiers des applications
var données vivantes du système et des applications

a - Les fichiers de configurations /etc et /lib

/etc fichiers et répertoires de configuration du système et des applications


/etc/X11 configuration du système X11
/etc/rc* répertoires et scripts utilisés lors du démarrage du système
/etc/pam.d configuration, par service, des Pluggable Authentication Modules
/etc/rc scripts de démarrage
/etc/passwd DB utilisateurs, mots de passe, etc.
/etc/fstab configuration des montages disques
/etc/motd mot du jour affiché au login
/etc/profile configuration des shells

Lorsqu'une application utilise plusieurs fichiers de configuration, un sous-répertoire de /etc lui


est généralement dédié. Par exemple :
/etc/httpd fichiers de configuration du serveurWeb Apache
/etc/mail fichiers de configuration du système de messagerie Sendmail
/etc/ssh fichiers de configuration et clés asymétriques d'OpenSSH

/lib librairies partagées essentielles


/lib/modules modules du noyau
/lib/security librairies PAM (Pluggable Authentication Modules)
/lib/iptables greffons iptables
/lib/kbd codages clavier et polices de la console

NB :Il y’a aussi la Configuration de chacun des programmes réglages pour tout le système
(non modifiable par les utilisateurs). Un fichier ou un répertoire par programme
b - Les programmes (/usr et /)

/usr/bin la plupart des programmes utilisateur

/usr/games jeux et autres facéties


/usr/include en-têtes standards pour le développement
/usr/lib librairies ou bibliothèques (.so pour Shared Objects) et autres ressources partagées
(dépend de l’architecture sans être exécutable)
/usr/libexec binaires exécutables appelés par d'autres programmes
/usr/local programmes installés « à la main » (i.e. sans paquetage) et fourre-tout pour les
installations manuelles
/usr/sbin exécutables système (programmes réservés au super-utilisateur)
/usr/share ressources partagées indépendantes de la plate-forme (pages de manuel,
documentation, fichiers de données, etc. par exemple : /usr/share/doc : la documentation
(format libre) ; /usr/share/man : documentation au format man)
/usr/src sources du système (noyau, paquetages, etc.)
Fichiers de la distribution X Window System, Version 11 Release 6 :
/usr/X11R6/bin exécutables
/usr/X11R6/include en-têtes pour le développement en C
/usr/X11R6/lib librairies et autres ressources partagées
/usr/X11R6/man pages de manuel
/usr/X11R6/share ressources partagées indépendantes de la plate-forme

c - L'état du système (/var)

/var/account journaux de comptabilité des ressources utilisées par les processus


/var/cache données cachées par les applications
/var/lib données vivantes et persistantes des applications
/var/lib/rpm base de données des paquetages installés
/var/lock fichiers verrous
/var/lock/subsys contient un fichier pour chaque service actif
/var/log journaux du système et des applications
/var/run données vivantes, non-persistantes des applications (informations sur le système
jusqu’au reboot)
/var/spool données en attente d'un traitement
/var/spool/mail boîtes aux lettres des utilisateurs
/var/spool/cron tâches planifiées par les utilisateurs
/var/spool/lpd files pour le système d'impression
/var/spool/mqueue messages en attente de traitement par le MTA
/var/tmp fichiers temporaires préservés entre deux démarrages
/var/www racine du serveurWeb
/var/run/utmp informations sur les utilisateurs présents

d - Interface avec le noyau (/proc ou /sys)

Points d'interaction avec le noyau


/proc/123 informations sur le processus numéro 123
/proc/self idem pour le processus appelant
/proc/cpuinfo informations sur le(s) processeur(s)
/proc/kcore la mémoire physique (pour accès direct)
/proc/stat diverses infos sur le système
/proc/modules listes des modules chargés actuellement
/proc/loadavg charge actuelle
/proc/net interactions avec les modules réseau

e - Les fichiers de périphériques (/dev)

Points d'interaction avec les pilotes du noyau (et donc avec le matériel). Ils sont créés avec
MAKEDEV ou mknod :
mknod /dev/ttyS0 c 4 64
chown root.dialout /dev/ttyS0
chmod 0644 /dev/ttyS0
ls -l /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 Oct 23 18:23 /dev/ttyS0
/dev/dsp carte son
/dev/fd0 premier lecteur de disquette
/dev/psaux port souris PS/2
/dev/null écritures ignorées (poubelle)
/dev/zero lecture donne que des zéros
/dev/random lecture donne des données aléatoires

f - Le reste (/)

/mnt point de montage des (autres) disques


/tmp fichiers temporaires
/boot fichiers nécessaire au démarreur

C- Disques et autres média


Il existe deux (2) types de média sous Unix ou deux (2) types de grands fichiers : qui sont les
suivants :
 Accès direct par bloc (block device) : disques durs, la mémoire, etc
 Accès par caractère (character device) : bandes, terminaux (claviers & écrans),
imprimantes, etc
Ce qu'on peut faire avec les disques :
 Formater (préparation – marque pistes et secteurs)
 Partitionner (découper en disques durs logiques)
 Créer un système de fichiers (définir la représentation physique des données logiques)
 Monter les disques (attribuer une place dans l'arbre)

Schema cf notes
1- Le système de fichiers
Les systèmes de fichiers, il en existe de multiples, gèrent l’organisation des informations
mémorisées sur les périphériques de l’ordinateur. Chacun offre des avantages pour certains
types d’utilisation …. et des avantages pour d’autres. Connaître leurs principales
caractéristiques est nécessaire pour la bonne utilisation d’un équipement. Car les systèmes de
fichiers assurent aussi les tâches suivantes :
 Représentation physique des données sur disque
 Moyen d'accès aux données (logiciel)
Interface logique d'accès aux données
Personne n'accède directement au disque

Type de FS existants :
 Linux : ext2, ext3, reiserfs, nfs
 Dos/windows : vfat, ntfs, smbfs
 CD-ROM : iso9660

Journalisation : FS valide à tout instant


=> ok même si on coupe le courant (ext3, reiserfs, ntfs).

Outil de création de système de fichier : mkfs(8)

Tous les systèmes de fichiers comportent au moins trois tables systèmes :


 Superbloc : liste des emplacements libres et occupés
 Table des inodes : informations sur chaque fichier (ls -l) + pointeur vers données
 Les répertoires : chainage des fichiers depuis la racine

Le reste du disque est utilisé pour les blocs de données

Les attributs des fichiers

Caractéristiques supplémentaires des systèmes de fichier ext2 et ext3.


Attribut Description
a En écriture, ajout seulement
d Pas sauvegardé par la commande dump
i Ne peut être modifié, détruit ou renommé (root only)
s Lors de la destruction, les blocs sont remplis de zéros
S Les écritures sont effectuées immédiatement

Le montage des systèmes de fichiers

● Montage = placement du contenu d'un disque dans l'arbre


● Commande : mount(8)
● Exemple : mount -t vfat /dev/fd0 /mnt/floppy
Place le contenu (répertoires et fichiers) de la disquette (/dev/fd0) sous le répertoire
/mnt/floppy. Le système de fichier à utiliser est vfat (dos, très courant).

Tableau comparatif de système de fichiers (cf site ubuntu)


2- Paquetages
Un paquetage contient :
 les fichiers (exécutables, librairies, fichiers de configuration, ressources, etc.)
nécessaires pour exécuter un programme ;
 un ensemble de scripts qui configurent le programme automatiquement après son
installation ;
 les informations sur le propriétaire et permissions d'accès de chaque fichier ;
 des informations optionnelles sur les paquetages dépendants et les services fournis ;
 une description du paquetage.
L'ensemble des informations de tous les paquetages installés sont stockés dans une base de
données gérée par l'utilitaire rpm (Redhat Package Management) pour les distributions basées
sur RedHat et les outils dpkg et apt pour la distribution Debian.

Remarque :
Le nom d'un fichier de paquetage est constitué du nom du paquetage, du numéro de version
du logiciel et du numéro de version du paquetage séparés par des caractères « - ».
Par exemple : openssl-0.9.7a-35.rpm
Exemples d'utilisation de rpm :
* installation d'un paquetage : rpm -i fichier.rpm
* mise-à-jour d'un paquetage : rpm -U fichier.rpm
* suppression d'un paquetage : rpm -e paquetage
* vérification d'un paquetage : rpm -V paquetage
* interrogation sur les paquetages installés :
- liste des fichiers d'un paquetage : rpm -ql paquetage
- paquetage contenant un fichier : rpm -qf /chemin/vers/fichier
- informations sur un paquetage : rpm -qi paquetage
- liste triée de tous les paquetage installés : rpm -qa |sort
* interrogation sur un fichier de paquetage :
- liste des fichiers : rpm -qpl fichier.rpm
- informations : rpm -qpi fichier.rpm

3- Gestion des signatures GPG – rpm


rpm supporte désormais la signature des paquetages. Cette technique permet de garantir qu'un
paquet n'a pas subi de modification et que la personne qui l'a construit est bien celle qu'elle
prétend être.
Il faut pour cela importer les clés publiques GPG des personnes ou organisations qui réalisent
les paquetages devant être installés avec l'option --import de rpm. L'option
--checksig permet de vérifier la signature d'un paquetage avant de l'installer.
La clé publique de la distribution RedHat est disponible sur les CD-ROM, dans le fichier
RPM-GPG-KEY (ou RPM-GPG-KEY-fedora en ce qui concerne la Fedora).
Par exemple :
# rpm --checksig webmin-1.150-1.noarch.rpm
webmin-1.150-1.noarch.rpm: md5 (GPG) PAS OK (CLES MANQUANTES:
GPG#11f63c51)
# wget http://www.webmin.com/jcameron-key.asc
.../...
# rpm --import jcameron-key.asc
# rpm --checksig webmin-1.150-1.noarch.rpm
webmin-1.150-1.noarch.rpm: md5 gpg OK
Pour lister les clés installées :
# rpm -qa gpg-pubkey*
gpg-pubkey-11f63c51-3c7dc11d
Pour avoir plus d'informations sur une clé particulière :
# rpm -qi gpg-pubkey-11f63c51-3c7dc11d
Name : gpg-pubkey Relocations: (not relocatable)
Version : 4f2a6fd2 Vendor: (none)
Release : 3f9d9d3b Build Date: ven 23 jui...
Install Date: ven 23 jui... Build Host: localhost
Group : Public Keys Source RPM: (none)
Size : 0 License: pubkey
Signature : (none)
Summary : gpg(Fedora Project <fedora@redhat.com>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
.../...
-----END PGP PUBLIC KEY BLOCK-----
Pour supprimer une clé :
# rpm -e gpg-pubkey-11f63c51-3c7dc11d

4- Gestion des paquetages Debian - dpkg


Le nom d'un fichier de paquetage est constitué :
* du nom du paquetage suivi ;
* du numéro de version du logiciel et du numéro de version du paquetage ;
* de l'architecture cible ;
* de l'extension .deb.

Par exemple : openssl_0.9.7e-3sarge1_i386.deb

Exemples d'utilisation de dpkg :


* installation d'un paquetage : dpkg -i fichier.deb
* suppression d'un paquetage : dpkg -P paquetage
* liste des paquetages installés : dpkg -l
* afficher des informations sur un paquetage : dpkg -I fichier.deb
* afficher la liste des fichiers installés par un paquetage : dpkg -L paquetage

a) Dépôts de logiciels – apt

Un dépôt Debian est un ensemble organisé et indexé de paquetages Debian et que


l'infrastructure apt (Advanced Packaging Tool) de gestion des paquetages Debian sait utiliser
pour installer des applications.

Un dépôt Debian peut être stocké sur différents supports :


* CD-ROM ;
* DVD-ROM ;
* un répertoire sur un système de fichiers ;
* un emplacement sur le réseau accessible en HTTP ou FTP ;
* etc.
Il existe plusieurs types de dépôts Debian :
* les dépôts officiels de la distribution ;
* le dépôt officiel contenant les correctifs de sécurité ;
* le dépôt « volatile » ;
* des dépôts Debian non officiels.

Afin qu'apt puisse utiliser un dépôt il faut :


1) inscrire ce dépôt dans le fichier /etc/apt/sources.list ;
2) créer un catalogue des paquetages disponibles dans ce dépôt.

Chapitre 2 : Comprendre l’administration Système sous Linux

I- Gestion des utilisateurs

a) Utilisateurs
Le système Linux définit un utilisateur par :
- Un login : un identifiant texte qui est unique
- mot de passe crypté. Il peut être remplacé par x et déporté dans /etc/shadow pour le
cacher (seul root peut lire) et améliorer la sécurité.
- Un identifiant numérique : l’User ID (UID) qui est unique (numéro d'utilisateur utilisé
dans les inodes1, entre autres. L’UID du super-utilisateur est 0)
- Un identifiant numérique de groupe : Group ID (GID = numéro de groupe principal) :
C’est le groupe principal de l’utilisateur (Primary Group). Il est obligatoire et est
utilisé lors de la connexion. L’utilisateur peut appartenir à d’autres groupes. Ce sont
les groupes secondaires (Secundary groups)
- Un répertoire de travail (répertoire Maison) : Habituellement /home/login
- Un shell de connexion : Par défaut c’est /bin/bash
- Fichier /etc/passwd est la base de données sur les utilisateurs.
● Exemple de ligne :
mquinson:DcoJmNQ:1003:1003:Martin
Quinson,,,:/home/mquinson:/bin/bash
- Fichier /etc/group est la base de données sur les groupes nomme les groupes et défini
les autres groupes de l'utilisateur
● Exemple de ligne :
audio:DcoJmNQ:29:plateau,mquinson

La commande passwd :
● Rôle pour l'utilisateur : créer ou modifier son mot de passe
● Rôles pour l'administrateur :
modifier le mot de passe d'un utilisateur passwd nom_utilisateur

1
L’inode est le centre de tous les échanges entre le disque et la mémoire. L’inode est la
structure qui contient toutes les informations sur un fichier donné à l’exception de sa
référence, dans l’arborescence.
supprimer le mot de passe passwd -d nom_utilisateur
verrouiller le compte d'un utilisateur passwd -l nom_utilisateur
déverrouiller le compte d'un utilisateur passwd -u nom_utilisateur

Autres commandes de gestion des utilisateurs et groupes :


useradd, usermod, userdel ; groupadd, groupmod, groupdel ;
finger ;
passwd ; chfn, chsh ;
su, sudo, newgrp ;
id, groups

Identités :
- Attention aux conflits entre les UID des utilisateurs locaux et externes.
Pose des problèmes de sécurité en NFS
Pose des problèmes lors de l’authentification : Voir le fichier /etc/nsswhich.conf
- id” permet d’obtenir des informations sur sa propre identité.
- S’authentifier sous un autre utilisateur (changer son identité) : commande su apache
Système multi-utilisateurs :
- “getent” permet d’obtenir des informations sur un utilisateur ou un groupe (commande
getent passwd apache et getent group src).
- “testsaslauthd” permet de vérifier l’authentification sur un service (login, ftp, …) :
commande testsaslauthd –u legond –s su –p monpass.

Le Super utilisateur, dieu, l’admin, … : root


- login root, groupe root (uid=0, gid=0)
- tous les droits sur tous les objets sur une machine locale
- aucun droits sur les machines distantes (NFS)
- droit de contrôle sur tous les processus
- droit d'accès à tous les fichiers (rwx)
- inconvénient: pas d'identité de la personne
- possibilité d'interdire ce login (/etc/ttytab)
- seul à pouvoir travailler en mode "single-user"
- responsable de la cohérence des informations au boot
- ATTENTION: toutes les bêtises lui sont permises !!!

Choisir un mot de passe :

- La fonction crypt() est une fonction de hachage à sens unique (voir les cours de SSI)
- Cette fonction permet de crypter un mot de passe
- Il n’existe pas de fonction qui permette de revenir de la forme cryptée à la forme
claire.
- Il reste possible d’attaquer le mot de passe en cryptant des mots de passes et en les
comparant à la forme cryptée.
- Alors peut-on choisir n’importe quel mot de passe ?
NON
- Il est important de bien choisir ses mots de passe
- Un mot de passe de passe doit être unique sur chaque système
- Certains mots de passes peuvent être devinés : On crypte un ensemble de mdp
préexistants, le dictionnaires anglais, français, …, les Noms de
films/acteurs/produits/personnes célèbres. La génération de mdp par des règles de
transformations (Librairies de crack)
- Un bon mdp ne doit pas :
Utiliser le dictionnaire
Indépendant de l’environnement de l’utilisateur (login name, nom réel)
Pas de nom, surnom, d’identifiant (même modifier), de mot connu, marque
Pas de date (textuelle ou numérique), de clavier
- Un bon mdp doit :
Etre composé de ponctuations, chiffres, lettres majuscules et minuscules
Avoir au moins 7 caractères (si possible 10 à 14)
Vous pouvez vous trouver un algo (mais il doit rester secret)
Changer son mdp régulièrement

Exemples
zqhYtds/965 moNpass,67$ Hg#91__bb
● On peut en générer de façon « pseudo-aléatoire »
– Utilisation de « pwgen » et de « mkpasswd »
« apg » , « passwd-gen», …
● Vérification des mots de passes :
– Utilisation de la cracklib pour vérifier les mdp
« cracklib-check »
– pam_cracklib, pam_passwdqc

Ajouter et modifier les utilisateurs :

- Changer de mot de passe:


✔ passwd [-k] [-l] [-u [-f]] [-d] [-S] [nom_utilisateur]
- Changer de shell:
✔ chsh [-s shell] [-l] [-u] [-v] [utilisateur]
- Changer l’âge d’un mot de passe
✔ chage
✔ Expiration du mot de passe (0 ou 99999  pas d’expiration)
- Commande d’ajout d’utilisateur: useradd
✔ useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] name
- Commande de modification d’utilisateur: usermod
✔ usermod [-u uid [-o]] [-g group] [-G group,...]
[-d home [-m]] [-s shell] [-c comment] [-l new_name][-f
inactive] [-e expire ] [-p passwd] [-L|-U] name

Effacer un utilisateur :

- Commande de modification d’utilisateur: userdel


– Effacer un utilisateur et, éventuellement, tous ses fichiers
✔ userdel [-r] name
– L’option “-r” efface tous les fichiers associés
✔ Le répertoire de travail (homedir) et sa boîte mail, …
✔ ATTENTION: ne peut être annulé !
- Vérifier l’intégrité de « /etc/passwd »: pwck
- Le clicodrome mandrake (l’outil graphique) : userdrake

Les fichiers « shadow » :

- Tout le monde peut lire /etc/passwd.


 Problème : les clefs des mdp sont stockés en clair
 Dangereux !!! brute force attack
- Les clefs des mdp ne sont plus stockés dans : « /etc/passwd ».
- Elles sont stockés dans « /etc/shadow » que seul root peut lire.
- Pour convertir les fichiers « /etc/passwd » classiques vers le format shadow : pwconv,
pwunconv.
- « /etc/shadow » contient :
 Nom de connexion (login)
 Mot de passe crypté
 Nombre de jours écoulés depuis le debut jusqu'au dernier changement de mot
de passe
 Nombre de jours durant lesquels le mot de passe est encore valide
 Nombre de jours après lesquels le mot de passe doit être changé
 Nombre de jours avant l'expiration du mot de passe impliquant l'avertissement
de l'utilisateur
 Nombre de jours après l'expiration provoquant la désactivation du compte
 Numéro du jour depuis le 1er janvier 1970 à partir duquel le compte a été
désactivé
 Champ réservé

b) Les Groupes
- Un Groupe est défini par :
 Un identifiant [unique]: Group ID (GID)
 Un nom de groupe [unique]
 Un mot de passe de groupe (peut être vide)
 Des membres : une liste d’utilisateurs appartenant au groupe
- Un utilisateur peut appartenir à plusieurs groupes
- Rappel : Un utilisateur appartient à au moins un groupe

Ajouter/modifier/effacer les groupes :


- Afficher la liste des groupes auxquels appartient un utilisateur: groups
- Créer un groupe : Commande d’ajout de groupe
– groupadd [-g gid [-o]] [-r] [-f] groupname
– Les options :
 -g : id du groupe
 -o : permet la création d’un groupe dont l’id n’est pas unique
 -r : crée un groupe système ( GID < 499)
 -f : force une erreur en cas d’existance du groupe
- Modifier un groupe : Commande de modification
– groupmod [-g gid [-o]] [-n nom_du_groupe] groupe
- Effacer un groupe : Commande de modification
– groupdel groupe
- Enlever un utilisateur d’un groupe: gpasswd
- Vérifier l’intégrité de « /etc/group »: grpck

II- Gestion des droits

Un peu de sécurité : droits d’accès


 Chaque fichier/répertoire possède un propriétaire et un groupe
 Chaque fichier possède des autorisations applicables à trois classes d'utilisateurs :
 u (user) : propriétaire du fichier/répertoire
 g (group) : groupe du fichier/répertoire
 o (others) : les autres
 Pour ces 3 catégories, il existe 3 types d'autorisation :
 r (read) : pour la lecture (Le contenu du fichier peut être lu)
 w (write) : pour l'écriture (Le contenu est modifiable)
 x (execute): pour l'exécution (Le fichier peut être exécuté)
 Possibilité d’utiliser les ACL
Fichiers et droits d’accès :

 Droits pour un fichier:


 r : Le contenu du fichier peut être lu.
 w : Le contenu est modifiable.
 x : Le fichier peut être exécuté.
 s : utiliser l'ID du propriétaire ou du groupe propriétaire du fichier lors de
l'exécution,
 Le choix le plus sécuritaire pour les fichiers : « -rw------ » (devrait être le choix par
défaut)
Répertoires et droits d’accès :

 Droits pour un répertoire:


 r : Le contenu est accessibles en lecture. Nécessaire pour la commande « ls ».
 w : Les éléments du répertoire sont modifiables.
Création/Suppression possible des fichiers contenus par le répertoire.
Indépendant des droits de manipulation et d’accès au contenu des fichiers.
 x : Le répertoire peut être traversé grâce à la commande «cd »
 ATTENTION : Un fichier est protégé des modifications par ses PROPRES
autorisations, et des suppressions par les autorisations du répertoire qui le
contient.
 Le choix le plus sécuritaire est: « drwx--x--x »

Outils de gestion des droits :


 Changer les droits :
chmod [options] [augo] [+-=] [rwxstugo] fichier(s)
 Signification :
✔ « a » : S'applique à tout le monde (user, group et other)
✔ « u » : S'applique au propriétaire du fichier (user)
✔ « g » : S'applique au groupe (group)
✔ « o » : S'applique aux autres (other)
✔ « + » : Ajout de nouveaux droits
✔ « - » : Suppression d'anciens droits
✔ « = » : Redéfinition complète des droits sans tenir compte des anciens
✔ Fixer les droits par leurs valeurs octales pour u/g/o : r(4), w(2), x(1).

Outils de gestion des droits :


 Définir les droits par défaut des fichiers créés:
 umask [-p] [-S] [mode]
 Fixer les droits par leurs valeurs octales pour u/g/o : r(4), w(2), x(1)
 Ajouter tous les droits que vous voulez interdire !

 Changer le propriétaire / le groupe d’un fichier :


 chown [options] propriétaire[:groupe] fichier(s)
 chgrp [options] groupe fichier...

Les sudoers :
 Ce sont les exceptions.
 « sudo » permet l’exécution de certains programmes critiques par des utilisateurs
courants (non root)
 Le fichiers « /etc/sudoers » contient la liste de qui peut exécuter quoi.
 Utilisation du groupe « wheel » (man sudoers)
 Structure :
 User_List Host_List = Runas_Spec [Tag_Spec] Cmnd
 User_list : les personnes autorisées pour faire sudo
 Host_list : les machines sur lequels le sudo est autorisé
 Runas_spec : identité prise par la personne
 Tag_Spec : options pour le sudo
 Cmnd : Commande autorisée à être exécutée

 On peut définir des alias pour les users, les hosts, les commandes, les identités prises
 On peut appliquer des options particulières pour une catégorie de machine,
d’utilisateur ou d’identité prise
 'Defaults' '@' Host paramètres
 'Defaults' ‘:' User paramètres
 'Defaults' ‘>' User paramètres
 Les paramètres sont légions !
 Les paramètres sont utiles pour la sécurité !

 Fichier « /etc/sudoers »
– Ajout d’un programme pour le groupe wheel (sudo sans password)
✔ %wheel ALL=(ALL) NOPASSWD:ALL prog
– Ajout d’un programme pour le netgroupe src (sudo avec password)
✔ +src ALL=(ALL) ALL prog
– Ajout d’un programme pour l’utilisateur « newuser » seulement en tant que «
operator »
✔ newuser ALL=(operator) ALL prog
 Exécution via « sudo –u utilisateur commande »

NB : chmod Changer les droits d’un fichier.


chown Changer le propriétaire d’un fichier.
chgrp Changer le groupe d’un fichier.

III- Planification

a) Le planificateur de tâches cron

Le planificateur de tâche cron permet à chaque utilisateur de configurer l'exécution


périodique de commandes via l'utilisation de la commande crontab.
L'utilisateur root dispose également de cette possibilité. Cependant, pour installer
l'exécution périodique de tâches relatives à la gestion du système, on préférera l'utilisation des
répertoires suivants :
- /etc/cron.hourly pour une exécution toutes les heures ;
- /etc/cron.daily pour une exécution tous les jours ;
- /etc/cron.weekly pour une exécution hebdomadaire ;
- /etc/cron.monthly pour une exécution mensuelle ;
- et /etc/cron.d qui permet d'affiner plus précisément la planification.
L'utilisation des quatre premiers répertoires est simple : il suffit d'y copier un fichier
exécutable (ou de créer un lien) afin d'en activer l'exécution périodique.

L'utilisation du répertoire /etc/cron.d est plus particulière. Les fichiers contenus dans ce
répertoire sont des fichiers texte qui adoptent un format quasi-identique à celui des fichiers
manipulés par la commande crontab.
La seule information ajoutée est l'utilisateur qui sera utilisé pour exécuter la commande.
Par exemple:
MAILTO=root
#man hr day month dow user command
0 4 * * * postgres /usr/lib/postgresql/bin/do.maintenance -a
Le fichier /etc/crontab contrôle les jours et heures d'exécution des commandes présentes dans
les répertoires /etc/cron.* (excepté /etc/cron.d).
Les planifications créées par les utilisateurs sont stockées à raison d'un fichier pour chaque
utilisateur dans le répertoire /var/spool/cron.

b) Le planificateur de tâches at

Le planificateur de tâches «at » permet l'exécution d'une tâche donnée, une seule fois, à un
moment donné. Si la machine est éteinte à ce moment-là, la tâche ne sera pas exécutée.
Dès le redémarrage machine, elle est exécutée. La commande est utilisable par tout
utilisateur déclaré sur la machine.
- Syntaxe 1 : at HEURE
 Saisir autant de lignes de commandes que nécessaire
 terminer par Ctrl+D
 Syntaxe 2 : at -f commande HEURE
 Le format de l’HEURE peut être :
 HHMM ou HH:MM
 midnight / noon / teatime : minuit / midi / 16h ( sacrés anglais ;) )
 MMJJAA ou MM/JJ/AA ou MM.JJ.AA : attention, les jours sont à noter après
le mois ( logique non ? :) )
 « now + x minutes / hours / days / weeks » à partir de maintenant
 Liste des tâches : atq
 Suppression d’une tâche : atrm
 Contrôle d’accès au planificateur : /etc/at.deny et /etc/at.allow

c) Le planificateur de tâches anacron

Le planificateur de tâches « anacron » permet l'exécution d'une ou plusieurs tâches après une
période de temps déterminée. Si la machine n'est pas allumée à ce moment-là, la tâche sera
exécutée dès que possible. La commande est utilisable uniquement par root.

Exemple : programmer la sauvegarde de /home tous les 7 jours. Si la machine reste éteinte 9
jours, la tâche s'exécute lors du démarrage de la machine au 10e jour.

Utilisation de scripts (bash, perl, python)


- Boucles, sleep, signaux (SIGALARM), ….
exec 2>/dev/null 1>/dev/null
while [ 1 ] ;
do
action;
sleep delai_a_fixer
done

VI – Journalisation

Gestion des traces (logs)


La gestion des traces a pour principes :
- Notifier toutes les actions du système dans un fichier qui est en perpétuel extension
- Les journaux peuvent être gérés par les daemons/services « syslogd » ou « syslog-ng »
- Type des journalisations possibles : console, mail, fichier, machine
Les niveaux possibles de sévérité/criticité des erreurs (« level ») sont dans l’ordre :
- emerg(ency): Erreurs diffusées à tout le monde. Le système ne sera plus en état de
fonctionner
- alert: Erreurs qui doivent être corrigées immédiatement.
- crit(ical): Erreurs critiques à corriger le plus tôt possibles (erreurs de périphériques)
- err(or): Erreurs de niveau « standard »
- warning: Erreurs légères
- notice, info, debug: Informations avec plus ou moins de détails ou d’importance
Fonctions C pour « logger » des évènements : openlog(), syslog(message), closelog()
Voir les derniers logs du noyau : « dmesg »
Voir les dernières connexions : « last »
Collecte des journaux de messages (logs) :
Le mécanisme Unix traditionnel pour la collecte des messages générés par le système ou les
applications est Syslog.
syslogd et klogd sont les programmes (démons) utilisés pour cela. syslogd se charge
de la collecte et répartition des messages, klogd n'a pour tâche que de passer les messages
du noyau à syslogd.
Il est possible de rediriger ces messages selon leur origine et/ou leur niveau vers des fichiers,
la console, etc. voire vers le Syslog d'une autre machine.
Le fichier de configuration de syslogd est /etc/syslog.conf.
Par défaut, la quasi-totalité des messages sont dirigés vers un ensemble de fichier situés dans
le répertoire /var/log.

Les facilities
Les évènements générés par une application/un service peuvent être envoyés à différentes
destinations appelées usines de traces (« facilities »).

Une ligne du fichier /etc/syslog.conf est de la forme : facility.priority[,facility.priority,...]


action

Les sources des messages sont appelées « facilités ». En voici la liste :


auth message concernant la sécurité ou l'authentification
authpriv comme auth mais susceptible de contenir des informations privées
cron messages générés par les planificateurs de tâches cron ou at
daemon un des démons du système sans classification particulière
kern messages du noyau
lpr messages du sous-système d'impression
mail messages du sous-système de messagerie
mark marqueurs de temps générés par Syslog
news messages du sous-système de gestion USENET
syslog messages internes de Syslog
user messages utilisateur génériques
uucp messages du sous-système UUCP
local0 à local7 facilités utilisées à la discrétion de l'administrateur local

Le démon / service « syslog »

 C’est un commutateur (« dispatcher ») de lignes de traces


 Lit les données envoyées, par les applications, aux facilities
 Les données peuvent être envoyées à « syslog » localement ou par le réseau (UDP port
514, non crypté)
 Ecrit les traces dans des endroits désignés par l’administrateur.
 Capable de séparer les informations
 Configuration par le fichier « /etc/syslog.conf »

Les Fichiers de logs importants sous linux sont :


- /var/messages  messages du systèmes
- /var/syslog  fichier de log important !
- /var/auth.log  tout ce qui est authentification
- /var/boot.log  log du démarrage du système
- /var/kernel/*  tous les messages du noyau
- /var/daemons/*  tous les messages des services

● ATTENTION : La structure du /var/log varie suivant les systèmes et les


administrateurs !!!!

Un autre service : Syslog-ng :

 syslog-ng pour syslog-nextgen


 Configuration plus complexe mais mieux structurée
 Bien plus puissant au niveau de ses filtres
 Capable de filtrer suivant le contenu textuel des logs
 Capable de filtre suivant la machine émettrice
 Rotation automatique des logs (sans effacement)
 Bien plus puissant au niveau de ses possibilités !
 Capable d’envoyer les données par udp et tcp
 Capable d’utiliser n’importe quel port (autre que 514)
 Compatible avec syslog en réseau

Chapitre 3 : Démarrage du système

I- Les niveaux de démarrage

Commençons dans le sens inverse du démarrage. Nous allons d’abord considérer les
différents états dans lesquels le système peut se retrouver après le démarrage pour expliquer
ensuite la manière de procéder pour y parvenir.

Le système Linux, comme tous les systèmes de type Unix, peut fonctionner sous plusieurs
modes. On appelle ces différents modes des niveaux d’exécution (runlevels), comme par
exemple « single user mode » pour assurer la maintenance du système ou « multi user mode »
pour un fonctionnement standard.

Juste après avoir démarré, initialisé le matériel et monté la partition racine en lecture seule, le
noyau démarre le processus /sbin/init.
init est l'ancêtre de tous les autres processus du système (cela est visible avec la commande
pstree).
Les programmes exécutés par init au démarrage sont décrits dans le fichier /etc/inittab. Ils
sont fonctions du runlevel par défaut.
Le fichier /etc/inittab décrit également les actions à entreprendre lorsque certains évènements
surgissent :
 perte de tension sur l'onduleur ;
 retour de tension sur l'onduleur ;
 séquence de touches « Ctrl-Alt-Del ».

schema :
1- Runlevels

Un runlevel décrit un état du système. Il existe sept runlevels distincts.


Caque runlevel correspond à une utilisation du système :
0 arrêt du système
1 mode de maintenance (single user mode, « s » ou « S » peuvent être utilisés)
2 mode normal sans NFS
3 mode normal
4 inutilisé
5 mode normal avec XWindow (défaut si un environnement Gnome ou KDE est
installé)
6 redémarrage du système
Les runlevels 0, 1 et 6 sont toujours utilisés tels que décrits ci-dessus.
L'usage des autres runlevels peut varier en fonction de la distribution de Linux.

2- Le processus complet
a) Changer le Runlevels :
Un runlevel précis peut être atteint :
 en le passant comme paramètre au noyau dans la configuration du chargeur de
démarrage ou en modifiant de manière temporaire les paramètres de démarrage du
noyau ;
 en utilisant les commandes init ou telinit lorsque le système est démarré, il est ainsi
possible de passer d'un runlevel à l'autre sans arrêter le système ;
 en le configurant comme runlevel par défaut (pour le prochain démarrage du système)
dans le fichier /etc/inittab, à la ligne initdefault ;
 en utilisant la commandes shutdown qui envoie un signal à init.

Avec le chargeur de démarrage GRUB (GRand Unified Bootloader), les paramètres de


démarrage par défaut du noyau sont situés dans le fichier /boot/grub/grub.conf
(lignes kernel).
Une interface rudimentaire permettant de modifier de manière temporaire les paramètres du
noyau est disponible lors de la phase de démarrage de GRUB en appuyant sur la touche « e ».

b) Activer/désactiver des services au démarrage

Les services activés dans un runlevel sont ceux pour lesquels il existe un lien
/etc/rc.d/rcX.d/SNNservice vers /etc/rc.d/init.d/service où :
- X est le runlevel cible ;
- NN est un numéro qui sert à déterminer l'ordre de démarrage des services ;
- service est le nom d'un script dans le répertoire /etc/rc.d/init.d qui, utilisé avec les paramètres
« start » ou « stop » sait comment arrêter ou démarrer le service.
Le principe est le même pour l'arrêt des services avec des liens dont le nom est :
/etc/rc.d/rcX.d/KNNservice.
Ces liens peuvent être gérés :
- « à la main » (commandes ln -s et rm) ;
- avec l'utilitaire en ligne de commande chkconfig (ou update-rc.d pour Debian);
- avec le programme console ntsysv ;
- avec une interface graphique telle que Webmin ou l'outil de gestion des services de
RedHat.
c) Arrêter/démarrer des services

La commande service est utilisée pour arrêter ou démarrer les services.


Elle s'utilise ainsi :
# service nom action
Où nom est le nom d'un service (tel que présent dans le répertoire /etc/init.d) et
action le type d'action à entreprendre :
- stop arrête le service ;
- start démarre le service ;
- reload demande au service de relire sa configuration ;
- status affiche l'état du service.
On peut également utiliser cette syntaxe :
# /etc/init.d/nom action

II- LILO et le processus de démarrage

Au démarrage du PC le BIOS est lancé et détecte les différents périphériques. Lorsque le


BIOS se termine, il charge en mémoire un petit programme (boot loader). Si le système est
chargé à partir du disque dur, ce programme est enregistré sur le premier secteur du disque
dur. Si Linux est installé sur la machine, ce programme peut être le chargeur standard de
Linux LILO (LInux LOader).

LILO charge le noyau en mémoire et peut lui passer certains paramètres. De plus, il donne la
possibilité de choisir parmi plusieurs noyaux compilés et configurés au préalable.
Le noyau chargé par LILO commence par se décompresser, il assure principalement
l’initialisation du matériel et exécute le premier processus du système, init.

L’indication du chargement de LILO est donnée par l’invite (LILO prompt) qui permet de
choisir le noyau à charger et d’indiquer les paramètres à passer au noyau ainsi qu’au
processus init :
Boot : linux init s
L’exemple ci-dessus montre comment demander à init d’initialiser le système en « single user
mode ». On peut constater sur cet exemple que le noyau chargé est nommé « linux » : il s’agit
très souvent du nom du noyau par défaut.

1- Configuration de LILO

Pour configurer de manière permanente des paramètres du noyau nous allons modifier le
fichier de configuration de LILO, /etc/lilo.conf. Dans ce fichier, comme nous l’avons
déjà vu précédemment, à chaque noyau correspond une section. C’est dans cette section que
nous pouvonsconfigurer les paramètres à passer au noyau au démarrage, on utilise à cet
effet le mot-clé append :
append= "pci=biosirq"
append=”ram=16M”
append=”/dev/hdc=ide-scs

Après chaque modification, il ne faut pas oublier d’installer le nouveau LILO


(muni des nouveaux paramètres) avec la commande /sbin/lilo.

III- Le processus de démarrage

Voici les différentes étapes de la mise en route d’un ordinateur :

a) BIOS
Le programme BIOS est livré avec le PC et est spécifique au constructeur de la carte mère. Il
est indépendant de Linux et ne fait donc pas partie de l’objet de notre étude. Remarquons
simplement qu’il charge le « boot loader » LILO et qu’il détecte le matériel installé sur la
machine.

b) LILO
C’est le petit programme qui permet de choisir quel noyau charger et quels paramètres lui
passer. Il y a bien sûr un choix par défaut qui sera pris en compte dans le cas où l’utilisateur
n’intervient pas.

c) Le noyau
Une fois que LILO charge le noyau à partir du fichier qui a été spécifié dans
/etc/lilo.conf le noyau prend la main. La première action pour le noyau est de le
décompresser. Ce n’est pas toujours obligatoire que le noyau soit compressé mais il l’est
souvent du fait de la limitation mémoire due à l’architecture des PC (d’où l’utilité de
l’instruction make bzImage).

Puis le noyau initialise le matériel présent sur l’ordinateur. Dans un premier temps, il s’agit
juste du matériel dont les drivers sont présents directement dans le noyau. Les autres matériels
seront initialisés plus tard lors du chargement des modules.

À la suite de cette opération, le noyau monte le système de fichier racine (/) en lecture seule.
À partir de ce moment les programmes indispensables comme ceux que l’on trouve dans
/sbin/ et /bin/ sont disponibles.
Le noyau est alors prêt à créer le premier processus du système, /sbin/init.
d) init
Une fois créé, ce processus, comme son nom l’indique, initialise le système, en se basant sur
la configuration contenue dans le fichier /etc/inittab.

Le premier programme exécuté par init est celui indiqué sur la ligne contenant l’action
sysinit. Le plus souvent ce premier programme est /etc/rc.s/rc.sysinit qui
normalement, avant d’effectuer le montage des systèmes de fichiers (indiqués dans
/etc/fstab), vérifie leur intégrité à l’aide de l’utilitaire /sbin/fsck. Il charge ensuite
les modules à partir de /etc/modules.conf (ou /etc/conf.modules sur les
précédentes versions de Linux).

Puis init exécute les programmes configurés dans /etc/inittab pour le niveau de
démarrage considéré. Ce niveau de démarrage est soit le niveau par défaut (configuré par
l’action initdefaut du fichier /etc/inittab), soit celui passé comme argument par
lilo. Pour les niveaux d’exécution « multiutilisateurs », il crée les terminaux virtuels, par la
commande /sbin/mingetty ou /sbin/getty. Et pour tous les niveaux, il démarre les
services appropriés, d’après la configuration de /etc/rcN.d où N est le niveau de
démarrage.
Chapitre 4. RAID et LVM

Un volume RAID (Redudent Array of Independent Disk) est constitué d'un ensemble de
disques ou de partitions de disques. L'objectif est d'assurer une tolérance aux pannes, en
dupliquant les données sur plusieurs disques. La performance est améliorée en permettant la
lecture ou l'écriture en parallèle des données depuis ou vers les disques qui constituent le
volume RAID.

Le RAID peut être matériel ou logiciel. Le RAID matériel utilise un contrôleur matériel
permettant de gérer le volume RAID. Ce contrôleur RAID est doté d'un processeur spécifique,
une mémoire et un logiciel embarqué (RAID firmware). Le contrôleur RAID matériel cache
les caractéristiques du volume RAID au système d'exploitation. Ce dernier perçoit le volume
RAID comme un disque dur classique.

En RAID logiciel, le contrôleur RAID est un composant du système d'exploitation. Le module


MD (Multiple Disk) du noyau Linux est un contrôleur RAID logiciel permettant de gérer le
volume RAID et offrant aux applications un seul disque dur virtuel.

LVM (Logical Volume Manager) est une technique qui crée des systèmes de fichiers sur des
volumes logiques, ce qui permet par exemple de redimensionner la taille des partitions en
toute transparence du point de vue des applications et sans avoir besoin de redémarrer un
serveur en production.

Les sections suivantes décrivent les techniques RAID et LVM et illustrent la mise en place de
ces deux techniques combinées ensemble.

1. RAID

1.1 Concepts généraux

Selon le type d’architecture mis en place, la technique RAID permet d’améliorer :


- soit la performance de lecture et d’écriture, en distribuant les données sur plusieurs
disques, ce qui permet au contrôleur de travailler sur plusieurs disques simultanément ;
- soit la tolérance aux pannes, en dupliquant des données sur plusieurs disques, ce qui
diminue les risques en cas de défaillance de l’un d’eux ;
- soit les deux.

Il existe plusieurs types de RAID, appelés niveaux. Les plus utilisés sont RAID 0, RAID 1,
RAID 5 et RAID 10 :
- RAID 0 : il est utilisé uniquement pour améliorer les performances. Les données sont
découpées en blocs (chunk) et ces blocs sont répartis sur plusieurs disques, ce qui
diminue les temps de lecture et d’écriture (figure 1) ;
- RAID 1 : il offre une redondance des données. En effet elles sont dupliquées sur deux
ou plusieurs disques (figure 1). La performance de lecture augmente avec le nombre
de disques du volume RAID. Ceci peut assurer une meilleure tolérance aux pannes,
mais peut nuire à la performance d’écriture, car l'information doit être écrite plusieurs
fois ;
Figure 1. RAID 0 et RAID 14

Figure 2. RAID 5

- RAID 4 : les données sont distribuées en petits blocs sur les différents disques durs.
Le contrôle de parité est inscrit sur un disque spécifique. Ceci permet de créer une
architecture redondante qui améliore le temps d'écriture. Si un disque tombe en panne,
les données manquantes seront recalculées à partir des données utiles et des parités.
RAID 4 n'est plus utilisé, il est remplacé par RAID 5 ;
- RAID 5 : à la différence de RAID 4, les données et la parité sont elles aussi
distribuées sur l'ensemble des disques (figure 9) ;
- RAID 10 ou (1+0) : combinaison de RAID 1 et de RAID 0. C'est un RAID 0 composé
de deux volumes RAID 1 (figure 10), ce qui offre les avantages simultanés du RAID 1
et RAID 0 : augmentation de la taille de stockage et des performances de lecture. Il
faut au minimum quatre disques de stockage pour créer un volume RAID 10.

Figure 3. RAID 10

1.2 Gestion du RAID logiciel sous Linux

La plupart des distributions Linux utilisent la commande mdadm pour générer un volume
RAID.
Les versions précédentes de la distribution Red Hat utilisaient le paquetage raidtools,
mais mdadm est à la fois plus puissante et plus facile à utiliser que raidtools.
La commande mdadm permet de créer, contrôler et administrer le volume RAID. Elle possède
sept modes de fonctionnement différents, chacun avec ses propres options (tableau 1).
Si aucun mode n'est spécifié, la commande mdadm est en mode manage ou misc. Le mode
manage est sélectionné si le nom de périphérique RAID est spécifié avant toutes les options
ou si la première option est --add, --fail, or –remove.
Tableau 1. Les différents modes de fonctionnement du RAID

Mode Option pour sélectionner Description


le
mode
assemble --assemble ou --A Assemble les composants d'un volume RAID
déjà créé. Ce mode est utile pour le dépannage
ou l'activation d'un volume RAID transféré
depuis un autre ordinateur. L'option -s ou --
scan récupère les informations sur le volume
RAID et les disques sous-jacents.
build --build ou -B Crée un volume RAID à partir des disques qui
n'ont pas de superblocs (des métadonnées).
create --create ou -C Crée un nouveau volume RAID avec des
superblocs (des métadonnées) dans chaque
disque
manage (par défaut) Peut ajouter ou supprimer des disques à un
volume RAID en cours d'exécution. Ceci est
utile pour enlever des disques durs en panne,
ajouter des disques de rechange ou remplacer
des disques.
misc (par défaut) Effectue des opérations spécifiques sur un
disque sous-jacent, telles que l'effacement de
superblocs ou du paramètre en lecture seule.
monitor --follow, -- Surveille un volume RAID. Peut par exemple
monitor automatiser l'envoi des alertes aux
ou -F administrateurs lorsque le volume RAID
rencontre des erreurs. Peut aussi exécuter
automatiquement des commandes, comme
enlever et réinsérer un disque pour tenter de
corriger une défaillance non fatale.
grow --grow ou -G Change le nombre ou la taille des blocs ou des
disques sous-jacents.

Les volumes RAID sont configurés dans le fichier /etc/mdadm.conf. Ce fichier est
utilisé par la commande mdadm dans le mode create pour créer le volume RAID ou pour
l’initialiser après chaque démarrage. Les principaux paramètres de ce fichier sont :
- DEVICE : liste des disques et partitions susceptibles d'être utilisés dans le volume
RAID ;
- ARRAY : nom du volume RAID, par exemple /dev/md0 ou /dev/md/00;
- level : niveau RAID, par exemple raid0, raid1, raid4 ou raid5
- devices : liste des disques ou partitions (séparés par des virgules) qui seront utilisés
pour assembler le volume RAID ;
- num-devices : nombre de disques ou partitions sous-jacents dans le volume RAID;
- spare-group : nom du groupe de secours. Les disques ou partitions appartenant à
un groupe de secours peuvent être utilisés par plusieurs volumes RAID.
Les options du mode create sont :
- -n ou --raid-devices : nombre de disques du volume RAID ;
- -l ou --level : niveau RAID ;
- -c ou --chunk : taille en kilo-octets du bloc (chunk). La valeur indiquée doit être
une puissance de 2. La valeur par défaut est 64 ko ;
- -x ou --spare-devices : nombre de disques de secours ;
- -z ou --size : taille en kilo-octets de l'espace à utiliser dans chaque disque pour les
niveaux RAID 1, 4, 5 et 6. Cette taille doit être multiple de la taille d'un bloc (chunk
size). Par défaut elle correspond à la taille du plus petit disque (ou partition) sous-
jacent du volume RAID ;
- -p ou --parity : algorithme de parité utilisé. Par défaut c'est l'algorithme left-
symmetric.

EXEMPLES

– Créer un volume RAID niveau 5, /dev/md1, composé des partitions /dev/sda1,


/dev/sdb1 et /dev/sdc1 :
# mdadm --create /dev/md1 --raid-devices=3 /dev/sda1
/dev/sdb1 /dev/sdc1 –level=5

– Commande identique à la précédente avec des options courtes :


# mdadm -C /dev/md1 -n3 /dev/sda1 /dev/sdb1 /dev/sdc1 -l5

– Créer un volume RAID à partir des informations de configuration du fichier


/etc/mdadm.conf. La commande mdadm prend comme argument le nom du volume

RAID :
# mdadm --create /dev/md0

– Créer deux volumes RAID, /dev/md0 et /dev/md1. Le premier volume RAID est
créé avec un disque de secours /dev/sdd1. Les deux volumes RAID utilisent le même
groupe de secours mongroupe (défini par l'option --spare-group), ce qui leur permet de
partager les disques de secours. Cela signifie que si un disque du volume RAID
/dev/md1 tombe en panne, il sera remplacé automatiquement par le disque /dev/sdd1 :
# mdadm --create /dev/md0 --raid-devices=3 /dev/sda1 /dev/sdc1
–x /dev/sdd1 --level=1 --spare-group= mongroupe

# mdadm --create /dev/md1 --raid-devices=2 /dev/sda2 /dev/sdc2


--level=1 --spare-group= mongroupe

2. LVM

2.1 Concepts généraux du LVM

La gestion des volumes logiques définit une couche d'abstraction de haut niveau sur les
partitions physiques du disque dur. Les volumes physiques (physical volumes ou pv) sont
regroupés pour former des groupes de volumes (volume groups ou vg). Les volumes
physiques peuvent être des disques, des partitions ou même des volumes RAID. Dans un
groupe de volumes on peut créer plusieurs volumes logiques qui seront accessibles comme
des partitions classiques. Enfin, sur ces volumes logiques, on peut créer des ystèsmes de
fichiers et les monter sur l'arborescence système.
LVM offre ainsi plusieurs avantages. On peut :

– avoir une utilisation et une allocation efficaces de l'espace de stockage, puisque les volumes
logiques sont répartis sur plusieurs disques physiques ;

– augmenter et réduire la taille des volumes logiques sans risque d'interrompre des services du
système ni de perdre des données ;

– on peut prendre des instantanés (snapshots) sur le système de fichiers. Ces instantanés
servent à sauvegarder et restaurer les données.

2.2 Gestion du LVM sous Linux

La configuration LVM sous Linux est faite en trois étapes :


- création et initialisation des volumes physiques ;
- ajout des volumes physiques à un groupe de volumes ;
- création des volumes logiques au sein du groupe de volumes.

Les commandes LVM commencent par deux lettres qui reflètent le niveau d'abstraction
LVM :
- les commandes pv manipulent les volumes physiques ;
- les commandes vg manipulent les groupes de volumes ;
- les commandes lv manipulent les volumes logiques.

Les principales commandes de gestion des volumes physiques sont :


- pvcreate : initialise un périphérique (partition, disque ou volume RAID) comme un
volume physique pour une utilisation par LVM ;
- pvdisplay : affiche des informations détaillées sur un volume physique, y compris
le nom du groupe de volumes auquel il appartient et sa taille ;
- pvscan : analyse les partitions de disque à la recherche des périphériques de blocs
contenant des volumes physiques ;
- pvck : contrôle la cohérence du volume physique ;
- pvs : affiche des informations sommaires sur les volumes physiques.

Les principales commandes de gestion des groupes de volumes sont :


- vgcreate : crée un groupe de volumes ;
- vgchange : modifie certains attributs d’un groupe de volumes, par exemple pour
l’activer ou le désactiver ;
- vgdisplay : affiche les caractéristiques détaillées d'un volume logique. L’option –v
permet de visualiser la liste des volumes logiques et des volumes physiques de chaque
groupe de volumes ;
- vgscan : analyse le système pour rechercher des groupes de volumes ;
- vgextend : ajoute des volumes physiques à un groupe de volumes existant ;
- vgreduce : supprime un ou plusieurs volumes physiques d'un groupe de volumes ;
- vgremove : supprime un groupe de volumes ;
- vgrename : renomme un groupe de volumes ;
- vgs : affiche des informations sommaires sur les groupes de volumes.

Les principales commandes de gestion des volumes logiques :


- lvdisplay : affiche des informations détaillées sur les volumes logiques ;
- lvcreate : crée un volume logique ;
- lvrename : renomme un volume logique ;
- lvchange : change les attributs d'un volume logique ;
- lvreduce : réduit la taille d'un volume logique ;
- lvremove : supprime des volumes logiques ;
- lvs : affiche des informations sommaires sur les volumes logiques ;
- lvresize : redimensionne un volume logique (équivalent à la fois à lvextend
etlvreduce ) ;
- lvscan : analyse le système pour rechercher des volumes logiques.

3. Exemple de configuration avec LVM et RAID logiciel

Dans ce qui suit, on étudie un exemple de mise en place d'une architecture LVM et RAID.
Cette configuration est particulièrement utile pour les serveurs.
L’objectif est de créer un volume RAID 5 sur trois disques vides, puis de définir sur ce
volume deux partitions LVM, web1 et web2.

3.1 Création du volume RAID

Le premier disque /dev/sda contient les partitions du système. On commence par créer des
tables de partitions dans les autres disques non partitionnés /dev/sdb, /dev/sdc et
/dev/sdd.

Pour le disque /dev/sdb (à répéter ensuite pour les disques /dev/sdc et /dev/sdd) :

# fdisk /dev/sda
Commande (m pour l'aide): n
Commande d'action
e étendue
p partition primaire (1-4)
1
Numéro de partition non valide pour le type « 1 »
Commande d'action
e étendue
p partition primaire (1-4)
p
Numéro de partition (1-4): 1
Premier cylindre (1-509, par défaut 1):
Utilisation de la valeur par défaut 1
Dernier cylindre, +cylindres or +taille{K,M,G} (1-509, par
défaut 509):

Utilisation de la valeur par défaut 509


Commande (m pour l'aide): type
Partition sélectionnée 1
Code Hexa (taper L pour lister les codes): fd
Type système de partition modifié de 1 à fd (Linux raid
autodetect)

Une seule partition est créée dans chaque disque. Le type de chaque partition est représenté
par le code fd (Linux Raid Autodetect). Ce type permet au système RAID de
Linux de détecter automatiquement ces partitions.
La commande suivante génère un volume RAID 5 sur les trois partitions /dev/sdb1,
/dev/sdc1 et /dev/sdd1 :

# mdadm --create /dev/md0 --level=5 --raid-devices=3


/dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: array /dev/md/0 started.

Le fichier /proc/mdstat contient l’état courant du volume RAID :


# watch cat /proc/mdstat
Personalities: [raid6] [raid5] [raid4]
md0: active raid5 sdd1[3] sdc1[1] sdb1[0]
8385664 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
[=============>.......] recovery = 68.1% (2859008/4192832)
finish=0.5min speed=44160K/sec
unused devices: <none>

Il est particulièrement utile de surveiller ce fichier après l'ajout d'un nouveau disque ou le
remplacement d'un disque défectueux.
On peut aussi voir des messages de notification sur la création du volume RAID dans le
fichier /var/log/messages.

La commande mdadm sert aussi à activer le volume RAID et à le rendre disponible pour les
utilisateurs. Il est également recommandé de créer un fichier de configuration RAID,
/etc/mdadm.conf, pour servir de secours en cas de problème et simplifier l’activation du
volume RAID en dispensant de redonner ses paramètres.

On peut utiliser la commande mdadm --details --scan pour écrire la configuration


courante du volume RAID dans un fichier de configuration :
# echo DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 > /etc/mdadm.conf
# mdadm --detail --scan >> /etc/mdadm.conf

La commande mdadm peut maintenant lire ce fichier de configuration au démarrage ou à


l'arrêt du système.

Pour activer le volume RAID on exécute la commande :


# mdadm -As /dev/md0
mdadm: /dev/md/0 has been started with 3 drives.

Pour arrêter le volume RAID on exécute la commande :


# mdadm -S /dev/md0
mdadm: stopped /dev/md0
On a maintenant réuni les trois disques dans un volume RAID unique. Sur ce volume on va
définir des groupes de volumes logiques sur lesquels on pourra créer des systèmes de fichiers.

3.2 Création du LVM

Les versions anciennes du LVM nécessitent de lancer la commande vgscan comme étape
périphérique physique avec la commande pvcreate. Dans l’exemple on utilise le volume
physique RAID 5 /dev/md0 que l’on a créé :
# pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
L'opération précédente détruit toutes les données sur les disques et les partitions. Bien qu'on
utilise un seul volume physique dans cet exemple, LVM permet d'ajouter plusieurs volumes
de types différents dans un groupe de volumes.

On peut maintenant créer le groupe de volumes VG1 :


# vgcreate VG1 /dev/md0
Volume group "VG1" successfully created

Pour examiner les caractéristiques du groupe de volume, on utilise la commande


vgdisplay :
# vgdisplay VG1
--- Volume group ---
VG Name VG1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 8,00 GB
PE Size 4,00 MB
Total PE 2047
Alloc PE / Size 0 / 0
Free PE / Size 2047 / 8,00 GB
VG UUID 1pqn22-KEu1-uJde-0rgB-WhiK-KjV1-7ZTc0G

La dernière étape est de créer dans le groupe de volumes VG1 des volumes logiques qui
seront accessibles ensuite comme des partitions du disque :

# lvcreate -L 2G -n web1 VG1


Logical volume "web1" created

# lvcreate -L 2G -n web2 VG1


Logical volume "web2" created

Ces volumes logiques, une fois créés, sont représentés par des fichiers de périphérique situés
dans /dev/mapper/ :
$ ls -l /dev/mapper/
total 0
crw-rw----. 1 root root 10, 63 sept. 7 12:56 control
brw-rw----. 1 root disk 253, 1 sept. 7 12:56 VG1-web1
brw-rw----. 1 root disk 253, 0 sept. 7 12:56 VG1-web2

Maintenant que les deux volumes logiques web1 et web2 sont créés dans le groupe de
volumes VG1, on peut créer et monter les systèmes de fichiers :
# mke2fs -j /dev/VG1/web1
mke2fs 1.41.4 (27-Jan-2009)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
131072 i-noeuds, 524288 blocs
26214 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=536870912
16 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912
Écriture des tables d'i-noeuds : complété
Création du journal (16384 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du
système de fichiers : complété

# mke2fs -j /dev/VG1/web2
# mkdir /mnt/web1 /mnt/web2

# mount /dev/VG1/web1 /mnt/web1


# mount /dev/VG1/web2 /mnt/web2

Finalement les systèmes de fichiers sont prêts à être utilisés. On ajoute les nouveaux systèmes
de fichiers dans le fichier /etc/fstab et on redémarre le système.

3.3 Simulation d'une panne

En cas de partition corrompue ou de panne de disque, il est important de savoir résoudre le


problème rapidement. Le volume RAID 5 qu’on a construit précédemment va continuer de
fonctionner en cas de panne d'un disque. En effet il offre une redondance des données.
Les utilisateurs ne seront pas nécessairement conscients de ces problèmes.
La commande mdadm offre la possibilité de simuler une panne de disque. Dans l’exemple ci-
dessous elle simule une panne au niveau de la partition /dev/sdc1 :
# mdadm /dev/md0 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0

Le fichier journal /var/log/messages contient les informations sur la panne simulée :


# cat /var/log/messages
Apr 26 17:37:21 tabarka kernel: raid5: Disk failure on sdc1,
disabling
device.
Apr 26 17:37:21 tabarka kernel: raid5: Operation continuing on
2 devices.
Apr 26 17:37:21 tabarka kernel: RAID5 conf printout:
Apr 26 17:37:21 tabarka kernel: --- rd:3 wd:2
Apr 26 17:37:21 tabarka kernel: disk 0, o:1, dev:sdb1
Apr 26 17:37:21 tabarka kernel: disk 1, o:0, dev:sdc1
Apr 26 17:37:21 tabarka kernel: disk 2, o:1, dev:sdd1
Apr 26 17:37:21 tabarka kernel: RAID5 conf printout:
Apr 26 17:37:21 tabarka kernel: --- rd:3 wd:2
Apr 26 17:37:21 tabarka kernel: disk 0, o:1, dev:sdb1
Apr 26 17:37:21 tabarka kernel: disk 2, o:1, dev:sdd1
Apr 26 17:37:55 tabarka pulseaudio[1932]: ratelimit.c: 27
events suppressed
Apr 26 17:38:00 tabarka pulseaudio[1932]: ratelimit.c: 6437
events
suppressed
Apr 26 17:38:22 tabarka pulseaudio[1932]: ratelimit.c: 55
events suppressed
Des informations similaires sont aussi disponibles dans le fichier d'état du volume RAID
/proc/mdstat :
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[0] sdd1[2] sdc1[3](F)
8385664 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]

À ce stade l'administrateur doit prendre les mesures suivantes :


– supprimer le disque défectueux du volume RAID avec l'option -r de la commande
mdadm :
#mdadm /dev/md0 -r /dev/sdc1
mdadm: hot removed /dev/sdc1

– procéder au remplacement du disque (dans l’exemple, la panne est juste une simulation) ;
– enfin, ajouter le périphérique au volume RAID avec la commande suivante :
# mdadm /dev/md0 -a /dev/sdc1
mdadm: re-added /dev/sdc1

3.4 La réaffectation d'espace de stockage


On suppose que la taille de la partition /mnt/web1 a augmenté de façon non prévue. Le
redimensionnement des partitions LVM est simple et dépend du type de système de fichiers.
Les étapes suivantes sont applicables sur un système de fichiers ext3.
On a laissé dans le groupe de volumes VG1 un espace supplémentaire qui sera utilisé pour
agrandir la taille de la partition /mnt/web1.
La commande vgdisplay sert à examiner l'espace disponible dans le groupe de volumes et
la commande df indique l'espace disponible dans une partition :
# df /mnt/web1
Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
/dev/mapper/VG1-web1
2064208 1543352 416000 79% /mnt/web1

# df /mnt/web2
Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
/dev/mapper/VG1-web2
2064208 68676 1890676 4% /mnt/web2

La commande précédente montre que 79 % de la partition /mnt/web1 est déjà occupée.


Pour augmenter la taille de cette partition, on utilise la commande lvextend, qui ajoute de
l'espace à un volume logique et ensuite la commande resize2fs, qui redimensionne la structure
du système de fichiers :

# lvextend -L+2G /dev/VG1/web1


Extending logical volume web1 to 4,00 GB
Logical volume web1 successfully resized

# resize2fs /dev/VG1/web1
resize2fs 1.41.4 (27-Jan-2009)

Le système de fichiers de /dev/VG1/web1 est monté sur /mnt/web1


; le changement de taille doit être effectué en ligne old
desc_blocks = 1, new_desc_blocks = 1
En train d'effectuer un changement de taille en ligne de
/dev/VG1/web1 vers

Le système de fichiers /dev/VG1/web1 a maintenant une taille de 1048576 blocs.


Enfin on peut utiliser la commande df pour vérifier le nouvel espace disponible dans
/mnt/web1 :
# df /mnt/web1
Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
/dev/mapper/VG1-web1
4128448 1800620 2118140 46% /mnt/web1

4. Ajustement des paramètres d'accès aux disques

Les serveurs connectent généralement leurs disques à travers une interface SCSI (Small
Computer Systems Interface). Sur les ordinateurs de bureau et les ordinateurs portables c’est
l'interface IDE (Integrated Drive Electronics) qui est utilisée. Il existe plusieurs pilotes pour
ces différents types de disques et d'interfaces.
4.1 Interfaces des disques durs
L’interface du disque dur sert à transmettre les données entre le disque et son contrôleur qui
les transmet alors au système. Il existe plusieurs interfaces qui se distinguent par des
contrôleurs, des connecteurs, des débits et par le nombre de disques gérés.

PATA
L'interface PATA (Parallel Advanced Technology Attachment), permet de relier les
périphériques de masse (disques, lecteurs de cédéroms ...) à la carte mère par des câbles plats,
souples et composés de 40 ou 80 broches.
On peut connecter deux disques (un maître et un esclave) sur le même câble. L'interface
PATA est aussi connue sous le nom IDE (IDE) ou Enhanced IDE (eIDE).
L’interface PATA utilise les standards ATA (Advanced Technology Attachment) et ATAPI
(Parallel Advanced Technology Attachment Packet Interface)

SATA
L'interface SATA (Serial ATA) succède à l'interface PATA. Elle permet un débit de transfert
plus élevé. La méthode de transfert des données est en série. Chaque disque dur est relié à son
propre contrôleur via son propre câble ainsi chaque disque bénéficie de la totalité de la bande
passante. Les câbles utilisés sont beaucoup plus minces que les câbles des disques PATA, ils
ne comportent que 7 fils, ce qui encombre moins les boîtiers des ordinateurs.
L’interface SATA supporte le branchement à chaud (hot plug). Les périphériques SATA sont
internes à l'ordinateur. Une variante de l'interface, connue sous le nom de eSATA, est utilisée
pour les disques durs externes.

SCSI
L'interface SCSI (Small Computer System Interface) permet de relier, simultanément et en
série, plusieurs périphériques tels que les disques durs, les lecteurs de cédéroms, les graveurs,
les scanners. etc. Selon sa version, l'interface SCSI peut prendre en charge de 8 à 16
périphériques par câble. Le contrôleur SCSI est considéré comme un périphérique à part
entière, de sorte qu'on peut brancher réellement 7 ou 15 périphériques.
L’interface SCSI se présente sous la forme d’une petite carte comportant un microcontrôleur
indépendant du processeur, qui permet de bien le soulager et d'augmenter les performances
systèmes.
Généralement on trouve l'interface SCSI dans les serveurs et les stations de travail haut de
gamme. Elle est moins utilisée sur les ordinateurs du bureau et les ordinateurs portables à
cause de son coût élevé.

USB
L'interface USB (Universal Serial Bus) permet de relier plusieurs types de périphériques
externes à un ordinateur, y compris les disques durs et les lecteurs flash. La première et la
deuxième génération de l'USB sont peu performantes, mais l'USB 3.0 est nettement plus
rapide.

4.2 Ressources utilisés par les disques

Les contrôleurs de disques durs utilisent des ressources matérielles. Généralement ces
ressources sont gérées automatiquement par le noyau Linux et ses pilotes.
Une ressource matérielle importante, utilisée par le contrôleur de disque dur, est la demande
d'interruption (IRQ – Interruption Request).
L'architecture traditionnelle Intel x86 prend en charge 16 interruptions, numérotées de 0 à
15. Les interruptions numéros 14 et 15 sont dédiées respectivement aux contrôleurs PATA
primaire et secondaire.

Les architectures modernes des PC prennent en charge plus d'interruptions. Le fichier


/proc/interrupts regroupe les interruptions en cours d'utilisation :
$ cat /proc/interrupts
CPU0 CPU1
0: 1081739 1088752 IO-APIC-edge timer
1: 2106 1859 IO-APIC-edge i8042
8: 0 1 IO-APIC-edge rtc0
9: 1143 1113 IO-APIC-fasteoi acpi
12: 67 56 IO-APIC-edge i8042
16: 1 0 IO-APIC-fasteoi uhci_hcd:usb3, mmc0,

Vous aimerez peut-être aussi