You are on page 1of 97

Performances dun systme virtualis avec VMware

ESX-ESXi
Travail de Bachelor
Session 2010

Professeur responsable : LITZISTORF Grald


En collaboration avec : DELACOMBAZ Christian (CTI)
Diplmant : PENAS Cdric
Filire Informatique
Laboratoire de transmission de donnes

TABLE DES MATIRES

Table des matires


Avant-Propos
Conventions Typographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4
4
5

1 Gnralits
1.1 nonc du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Organisation du temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Introduction aux performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6
6
6
7

2 Notions importantes
2.1 Virtualisation VMware . . . . . . . . . . . .
2.1.1 Organisation Infrastructure . . . . .
2.1.2 ESX-ESXi . . . . . . . . . . . . . . .
2.1.3 vMotion . . . . . . . . . . . . . . . .
2.1.4 HA . . . . . . . . . . . . . . . . . . .
2.1.5 DRS . . . . . . . . . . . . . . . . . .
2.1.6 VMware Tools . . . . . . . . . . . .
2.1.7 Virtual Hardware Version . . . . . .
2.1.7.1 Identifier la version utilise
2.2 Architecture x86 . . . . . . . . . . . . . . .
2.2.1 Gestion de la mmoire . . . . . . . .
2.2.1.1 La mmoire physique . . .
2.2.1.2 La mmoire virtuelle . . . .
2.2.1.3 La pagination . . . . . . . .
2.2.1.4 La segmentation . . . . . .
2.2.1.5 Segmentation & Pagination
2.2.2 ISA . . . . . . . . . . . . . . . . . .
2.2.3 Les privilges sur x86 . . . . . . . .
2.2.4 Virtualisation x86 . . . . . . . . . .
2.2.4.1 Paravirtualisation . . . . .
2.2.4.2 Binary Translation . . . . .
2.2.4.3 Intel VT & AMD V . . . .
2.2.5 Hyper-Threading . . . . . . . . . . .
2.3 Rseau de stockage . . . . . . . . . . . . . .
2.3.1 Host Bus Adapter . . . . . . . . . .
2.3.2 Fibre Channel . . . . . . . . . . . . .
2.3.3 LUN . . . . . . . . . . . . . . . . . .
2.3.4 Raw Device Mapping . . . . . . . . .

PENAS Cdric

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

8
8
9
10
11
11
12
12
14
15
16
16
17
17
19
20
21
23
23
24
25
25
26
27
28
29
30
30
31

26 juin 2010

TABLE DES MATIRES

2.4

Performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 SLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Matriel disposition
3.1 HEPIA . . . . . . . .
3.2 CTI . . . . . . . . .
3.2.1 Rseaux . . .
3.2.2 Stockage . . .

31
31

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

33
33
35
36
39

4 Outils utiliss
4.1 VMware vCenter Server . . . . . . . . .
4.1.1 Introduction . . . . . . . . . . . .
4.1.2 Pr-requis hardware minimum . .
4.1.3 Recommandations . . . . . . . .
4.1.4 Ports utiliss . . . . . . . . . . .
4.1.5 Installation . . . . . . . . . . . .
4.2 VMware vSphere Client . . . . . . . . .
4.2.1 Introduction . . . . . . . . . . . .
4.2.2 Pr-requis hardware minimum . .
4.2.3 Recommandations . . . . . . . .
4.2.4 Installation . . . . . . . . . . . .
4.3 Esxtop + perfmon . . . . . . . . . . . .
4.4 Nagios . . . . . . . . . . . . . . . . . . .
4.4.1 Installation . . . . . . . . . . . .
4.4.2 Configuration . . . . . . . . . . .
4.4.2.1 Fichier principal . . . .
4.4.2.2 Les utilisateurs . . . . .
4.4.2.3 Les priodes de temps .
4.4.2.4 Les contacts . . . . . .
4.4.2.5 Les groupes de contacts
4.4.2.6 Les htes . . . . . . . .
4.4.2.7 Les groupes dhtes . .
4.4.2.8 Les services . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

41
41
41
41
41
42
42
43
43
43
44
44
44
45
45
45
45
46
46
47
47
48
48
49

. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
SMP
. . .
. . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

50
50
50
52
53
53
55
56
57
57
59
59
60
60
61
62

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

5 Analyse & optimisation des performances


5.1 Performances gnrales . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 Les bonnes pratiques . . . . . . . . . . . . . . . . . . . . . . .
5.1.2 Dtection de problmes . . . . . . . . . . . . . . . . . . . . .
5.1.2.1 Observation avec Nagios . . . . . . . . . . . . . . . .
5.1.2.2 Observation avec vSphere Client + vCenter . . . . .
5.1.2.3 Observation avec Esxtop . . . . . . . . . . . . . . .
5.2 Processeur (CPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Les bonnes pratiques . . . . . . . . . . . . . . . . . . . . . . .
5.2.2 Monitorer le CPU . . . . . . . . . . . . . . . . . . . . . . . .
5.2.3 Problmes & Solutions . . . . . . . . . . . . . . . . . . . . . .
5.2.3.1 Saturation du systme hte . . . . . . . . . . . . . .
5.2.3.2 Saturation du systme invit . . . . . . . . . . . . .
5.2.3.3 Utilisation dun seul vCPU sur une VM configur en
5.2.3.4 Faible utilisation des vCPUs de linvit . . . . . . .
5.2.3.5 Forte utilisation du CPU physique 0 . . . . . . . . .
PENAS Cdric

26 juin 2010

TABLE DES MATIRES

5.2.4

Configurations avec vSphere Client . . . . . . . . . . . . . . . . . . . . . . . . .


5.2.4.1 Activer lassistance hardware VT (Intel) . . . . . . . . . . . . . . . . .
5.2.4.2 Activer lhyperthreading . . . . . . . . . . . . . . . . . . . . . . . . . .

6 Labo TD
6.1 Serveur Nagios
6.1.1 Nagios .
6.1.1.1
6.1.2 NTP . .

. . . . . . . . . . . . .
. . . . . . . . . . . . .
Problmes rencontrs
. . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

7 Stage au CTI
7.1 Migration vCenter . . . . . . . . . . . . . . . . . . . . .
7.2 CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Choix du systme dexploitation . . . . . . . . .
7.2.2 Benchmarking . . . . . . . . . . . . . . . . . . . .
7.3 Hitachi : Replication True Copy . . . . . . . . . . . . . .
7.3.1 Problmatique . . . . . . . . . . . . . . . . . . .
7.3.2 Mise en place . . . . . . . . . . . . . . . . . . . .
7.3.3 Fonctionnement . . . . . . . . . . . . . . . . . . .
7.3.4 Exemple concret . . . . . . . . . . . . . . . . . .
7.3.4.1 Cration dune paire de synchronisation

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

62
62
64

.
.
.
.

65
65
65
65
66

.
.
.
.
.
.
.
.
.
.

67
67
68
68
69
70
70
71
72
72
72

8 Conclusion

77

A Annexes
A.1 Configuration Nagios du labo . . . .
A.1.1 Priodes de temps . . . . . .
A.1.2 Contacts & Groupes . . . . .
A.1.3 Htes . . . . . . . . . . . . .
A.1.3.1 Firewall Clavister .
A.1.3.2 Serveurs DNS . . . .
A.1.3.3 Serveurs de fichiers .
A.1.3.4 Serveur Nagios . . .
A.1.3.5 Imprimante . . . . .
A.1.3.6 Routeur UNIGE . .
A.1.3.7 Serveur Web . . . .
A.1.4 Groupes dhtes . . . . . . .
A.1.5 Services . . . . . . . . . . . .
A.2 Exemple de greffon Nagios . . . . . .

78
78
78
79
80
80
80
80
81
82
82
83
83
84
85

PENAS Cdric

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

26 juin 2010

Avant-propos
Conventions Typographiques
Afin de faciliter la lecture de ce document, il nous faut dfinir les quelques rgles typographiques
suivantes qui seront appliques :

Le texte par dfaut du document est en Computer Modern 11pt


Les URL sont en bleu (http://www.exemple.com)
Les noms des fichiers sont en italique, gras et en gris ( /dossier/exemple.conf )
Les contenus des fichiers sont en encadr et en Teletype (Exemple de contenu)
Les commandes tapes dans le terminal sont en blanc sur fond noir
exemple de commande

Structure du document
Ce mmoire de diplme se divise en 8 chapitres :
1. Gnralits
Introduction au projet de diplme et son droulement
2. Notions importantes
Description de toutes les notions importantes connatre qui ont t utilises dans ce projet
3. Matriel disposition
Rcapitulatif des infrastructures et du matriel utilis
4. Outils utiliss
Description des outils qui ont t utiliss lors de ce travail de diplme
5. Analyse & optimisation des performances
Guide pratique sur le monitoring et lanalyse des performances
6. Labo TD
Description du travail ralis lHEPIA
7. Stage au CTI
Description du travail ralis au CTI

8. Conclusion

Remerciements
Je tiens remercier M. Grald LITZISTORF pour mavoir propos ce projet de diplme et mavoir
suivi dans mon travail tout au long des huit semaines en me conseillant de la meilleure faon possible.
Je remercie galement M. Philippe LOUTAN de mavoir accueilli au CTI et de mavoir permis dtudier
la virtualisation dans un environnement professionnel. Et plus particulirement, M. Christian DELACOMBAZ pour mavoir suivi durant 5 semaines et pour mavoir fourni de prcieux conseils et pour
son aide dans certaines parties de ce travail.

CHAPITRE 1. GNRALITS

Gnralits

1.1

nonc du projet

La problmatique des performances dun systme dinformation reste prsente dans le quotidien
des activits de lingnieur systme ; quil sagisse datteindre un niveau de qualit suffisant pour les
utilisateurs ou pour optimiser les investissements consentis.
Les spcialistes saccordent aujourdhui reconnatre que lutilisation dune couche de virtualisation
augmente la complexit de lensemble et rend donc lanalyse des performances plus difficile.
La finalit de cette tude vise la bonne matrise des performances dune architecture virtualise avec
VMware ESX-ESXi, afin den identifier les goulets dtranglement ainsi que les ventuelles opportunits
doptimisation.

1.2

Organisation du temps

Ce travail de diplme sest tal sur huit semaines et a t ralis dans deux cadres totalement
diffrents.
Les deux premires semaines ont t consacres la recherche de documentations et un tour dhorizon
sur ce qui est possible de faire dans le domaine des performances en virtualisation. Cette partie sest
droule au laboratoire de transmission de donnes de lHEPIA (6).
Les cinq semaines suivantes se sont passes en stage au CTI (7) qui est le centre des technologies
de linformation de ltat de Genve. Elles auront eu pour but danalyser la faon dont la virtualisation est utilise en entreprise, quelles sont les contraintes, les technologies utilises et bien entendu
mettre un maximum en pratique ce qui a t ralis durant les deux premires semaines.
La dernire semaine de ce projet de diplme a t nouveau ralise HEPIA, afin de finaliser le
mmoire et terminer dtudier quelques points thoriques.

HEPIA

CTI

HEPIA

Temps
1

Semaines

Figure 1.1 Organisation du temps

PENAS Cdric

26 juin 2010

CHAPITRE 1. GNRALITS

1.3

Introduction aux performances

A lheure actuelle, un grand nombre dordinateurs ne fonctionnent qu 10-15% de leur capacit de


calcul et gaspillent ainsi de la ressource qui pourrait servir des tches parallles. La virtualisation
permet daugmenter ce taux dutilisation aux alentours de 85%, en permettant lexcution de plusieurs
systmes dexploitation simultanment sur une mme machine physique.
Cependant, il existe de nombreuses diffrences entre la gestion dune machine physique et celle dune
machine virtuelle. La couche ajoute par lhyperviseur, qui permet de faire le lien entre le matriel
physique et virtuel, amne une complexit supplmentaire rendant ltude des performances beaucoup
plus difficile.
Il faut donc bien comprendre tous les mcanismes qui ont t ajouts par rapport une machine
physique traditionnelle pour pouvoir analyser et optimiser les performances dun systme virtualis.
La plupart des outils de mesure de performances que nous avons lhabitude dutiliser sur des machines physiques, peuvent galement tre utiliss sur des systmes virtualiss pourvu quil soit pris
en compte dans lanalyse des rsultats que les tests ne se sont pas faits directement sur le matriel
physique afin de comprendre les diffrences quil pourrait y avoir.
Ce travail de diplme na pas la prtention dtre le guide absolu des performances sur les systmes
virtualiss, mais il a pour but damener le lecteur rflchir aux consquences de la virtualisation et ses
impacts sur les performances du systme tout entier. De plus, son autre objectif est de faire dcouvrir
les notions importantes qui entrent en jeu, ainsi que dexpliquer les manipulations et recommandations
indispensables qui optimisent la couche de virtualisation.

PENAS Cdric

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Notions importantes

2.1

Virtualisation VMware 1

VMware est une socit qui a dmarr en 1998 et qui a acquis normment dexprience dans la
virtualisation. Aujourdhui, elle est lun des leaders dans ce domaine, grce VMware vSphere 4 qui
est actuellement leur dernier produit sorti sur le march.
Il sagit en ralit plus dune suite doutils, car elle regroupe plusieurs composants dont certains ont
t utiliss pour ce projet de diplme.
On retrouve parmi ceux-ci :
VMware ESX/ESXi est le systme dexploitation, appel hyperviseur, sinstallant sur le matriel physique et qui permet de remplir son rle de couche de virtualisation en prsentant aux
machines virtuelles du "matriel" virtualis.
VMware vCenter Server est un serveur central dans linfrastructure de virtualisation, car il
permet de regrouper la configuration et ladministration de tous les ESX/ESXi disponibles.
VMware vSphere Client est un client avec un GUI sinstallant sur un poste de travail et qui
permet dadministrer soit directement ESX/ESXi, soit de passer par VMware vCenter Server
pour administrer un groupe dESX/ESXi.
VMware vSphere Web Access est une interface web dadministration des machines virtuelles
et qui permet galement de faire du remote console, principalement sur ESX.
En parallle nous avons des mcanismes qui sont utiliss par ces diffrents outils, afin damliorer les
performances des ESX/ESXi et des machines virtuelles.
VMware Virtual SMP est une fonctionnalit permettant une machine virtuelle dutiliser
plusieurs CPU physique simultanment.
VMware vMotion est une fonctionnalit permettant une machine virtuelle de migrer dun
hte ESX/ESXi vers un autre sans arrt de la machine ni dinterruptions 2 .
VMware High Availability (HA) est une fonctionnalit permettant davoir de la haute disponibilit pour une machine virtuelle.
1. http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ intro_ vs. pdf
2. http: // www. tdeig. ch/ vmware/ sandmeier_ M. pdf

PENAS Cdric

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

VMware Distributed Resource Scheduler (DRS) est une fonctionnalit permettant de


faire du load balancing entre les ESX/ESXi dun mme cluster.
Il en existe encore dautres, mais qui ne sont pas utilises dans ce projet, de ce fait nous nentrerons
pas dans les dtails.

2.1.1

Organisation Infrastructure

Nous retrouvons donc dans une infrastructure de virtualisation tous les outils cits en 2.1 avec
quelques nouvelles notions qui font leur apparition comme :
Datacenter
Hosts
Cluster
Resource Pool

Cluster

ESX/ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

VMware Web Access

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

VMware vSphere Client

ESX/ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

Cluster

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX / ESXi

ESX/ESXi

VMware vCenter Server

ESX / ESXi

Cluster

Resource Pool 1

Resource Pool 2

NAS

Machines Virtuelles
SAN

iSCSI

Fibre Channel

Figure 2.1 VMware Datacenter


Ces notions servent avant tout organiser la distribution des ressources au sein du Datacenter qui
regroupe tout le matriel physique destin la virtualisation. Un Datacenter peut servir sparer
linfrastructure de production et de test comme cest le cas dans la plupart des entreprises utilisant la
virtualisation.
Par Host, VMware dsigne un ESX/ESXi install sur une machine physique qui dispose normalement de toute la ressource disponible. Ainsi, si nous disposons physiquement de 4 CPUs dual-core de
4GHZ chacun et de 32GB de RAM, alors lhost disposera de 32GHZ de puissance de calcul et de 32GB
PENAS Cdric

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

de RAM quil pourra distribuer ses machines virtuelles.


Par Cluster, VMware dsigne un groupe dhosts. Le seul but pratique de crer des clusters est de
pouvoir ainsi activer des mcanismes comme HA et DRS, afin de pouvoir crer de la haute disponibilit et du balance de charges entre les hosts.
Pour terminer, un Resource Pool est un sous-ensemble des ressources dont dispose le host, qui peut
tre attribu soit un host particulier, soit un cluster, voir mme un groupe de machines virtuelles.
Par exemple, avec nos 32GHZ de CPUs et 32GB de RAM, nous pourrions dcider que trois hosts ne
disposeraient que de 10GHZ et 12GB de RAM. Il sagirait, ici, dun Resource Pool et par consquent,
le cluster ou lhost qui serait attribu ce pool ne pourrait pas dpasser la quantit de ressources qui
lui a t fix.

2.1.2

ESX-ESXi 3

VMware ESX/ESXi est la partie principale dun host, puisquil sagit de lhyperviseur qui sert de
couche de virtualisation. Il sinstalle directement sur le matriel comme un systme dexploitation traditionnel. Son noyau est bas sur la distribution Linux Redhat 7.3 et dispose dune grande partie des
commandes de cet OS.
Ce systme dexploitation se compose de 3 parties principales :

Applications

Applications

OS invit

OS invit

VMM

VMM

Hyperviseur ESX/ESXi

Service
Console
VMkernel

Matriel
Physique
NIC

RAM

CPU

HDD

Figure 2.2 Architecture ESX/ESXi


VMkernel est le noyau de lOS et contient tous les processus importants au bon fonctionnement
du systme.
Service Console (disponible que pour ESX) est une machine virtuelle particulire permettant
les connexions distantes, via le port 22 (SSH), ou locales pour ladministration du systme en
lignes de commandes.
VMM sert prsenter aux VMs le matriel virtualis et faire le lien entre celui-ci et le matriel
physique. Il existe un VMM par machine virtuelle.
3. http://fr.wikipedia.org/wiki/VMware

PENAS Cdric

10

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

2.1.3

vMotion 4

La fonctionnalit de vMotion permet de migrer une machine virtuelle dun host vers un autre sans
devoir lteindre ( chaud) et cela thoriquement sans interruption de services.
ESX/ESXi
VM

ESX/ESXi
vMotion

VM

VM

VM

VM

VM

Figure 2.3 VMware vMotion

2.1.4

HA 5

La fonctionnalit de High Availability (HA) permet davoir de la haute disponibilit des machines
virtuelles. Dans le cas o un host ESX/ESXi tomberait en panne, le mcanisme soccupe de dplacer
automatiquement les VMs touches sur un autre host grce au vMotion.
Pour que ceci puisse fonctionner, il faut obligatoirement que les hosts soient mis en cluster et que
le HA soit activ manuellement via VMware vCenter Server.

CLUSTER

VM

VM

VM

VM

VM

VM

VM

VM

VM

ESX/ESXi

ESX/ESXi

ESX/ESXi

Figure 2.4 VMware HA


Ce principe de HA fonctionne grce un agent qui tourne sur chaque host et qui maintient un lien
(heartbeat) avec les autres hosts du cluster. Ds que ce lien cesse de fonctionner cause dune panne,
le processus de migration est enclench et les VMs sont dplaces sur un host en bonne sant.
4. http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ intro_ vs. pdf (p.14-15) , http: // www. tdeig.
ch/ vmware/ sandmeier_ M. pdf
5. http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ intro_ vs. pdf (p.16)

PENAS Cdric

11

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

2.1.5

DRS 6

La fonctionnalit de Distributed Resource Scheduler (DRS) permet davoir de la balance de charges


entre les hosts dun mme cluster. Tout comme pour le HA, il faut lactiver sur chaque host.
CLUSTER

CPU 90%

CPU 10%

VM

VM

VM

VM

VM

VM

ESX/ESXi

VM

ESX/ESXi

CPU 10%

VM

ESX/ESXi

Figure 2.5 VMware DRS


Par dfaut, le mcanisme de DRS essaie de placer, grce vMotion, les VMs sur un sous-groupe
du cluster et dteindre les hosts qui ne servent rien. Lorsque la demande en ressource augmente, les
hosts teints peuvent tre rallums et les VMs dplaces sur ceux-ci. DRS compare donc en permanence
les ressources disponibles et la demande, afin de placer de la meilleure faon possible les VMs sur les
hosts.

2.1.6

VMware Tools 7

Une des particularits de VMware, par rapport dautres solutions de virtualisation, est de pouvoir
installer une suite doutils appels VMware tools . Ces VMware tools sinstallent directement sur
lOS invit et sont disponibles pour les systmes dexploitation suivants :

Windows
Linux
FreeBSD
Netware

Ils permettent damliorer les fonctionnalits des systmes invits et des interactions entre les invits
et les htes. Ils permettent, par exemple, dteindre proprement un OS invit depuis lhte ou encore
de copier des fichiers entre linvit et lhte.
Ces VMware tools se divisent en quatre parties :
VMware Device Drivers
Peut-tre ce qui est le plus important dans les VMware tools savoir les drivers. Tout comme
6. http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ intro_ vs. pdf (p.15-16)
7. http://www.virtuatopia.com/index.php/Understanding_and_Installing_VMware_Tools

PENAS Cdric

12

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

sur un systme traditionnel, il faut des drivers pour le matriel virtuel.


En effet, la couche de virtualisation VMware ou plutt le VMM soccupe de grer le matriel physique de lhte et de le prsenter sous forme de matriel virtualis au systme invit.
Par exemple, lhte pourrait avoir une carte rseau Intel Gigabit Ethernet et linvit verrait une
AMD PCnet-PCI II.
Sans les VMware tools , certains OS narrivent pas faire le lien entre ces deux cartes et
donc la connexion ne se fait pas. Cest pourquoi, pour des performances optimales au niveau de
la compatibilit hardware, il est conseill de les installer.

VMware Tools Service


Ce composant des tools est un service tournant en tche de fond du systme dexploitation
invit.
VMwareService.exe (Windows)
vmware-guestd (Linux)
Une des principales fonctions de ce service est denvoyer rgulirement un heartbeat lhte, ce
qui lui permet de savoir si une machine virtuelle est active ou non.
Sa deuxime fonction est de maintenir un canal de communication entre le systme hte et
linvit. Un systme dexploitation nest normalement pas prvu pour accepter des requtes du
serveur VMware, part en paravirtualisation, et cest pourquoi ce processus existe. Il va permettre de, par exemple, pouvoir dire une machine virtuelle de sarrter ou de redmarrer depuis
linterface de management web. Il va donc servir excuter des commandes qui ne sont pas accessibles depuis lextrieur.
Dautres fonctionnalits sont disponibles grce ce service comme par exemple garder une synchronisation de lhorloge (NTP) entre lhte et linvit, ou encore grer la souris dans une console
(Windows).

VMware User Process


Tout comme VMware Tools Service , il sagit dun processus qui tourne en tche de fond.

VMwareUser.exe (Windows)
vmware-user (Linux, FreeBSD et Solaris)
Il se lance normalement automatiquement ds quune interface graphique est prsente dans le
systme invit. Il permet par exemple de faire du copier-coller entre la remote console et le desktop de lhte.
Il amne galement une gestion de la souris et de la rsolution pour les systmes Linux tout
comme VMware Tools Service pour Windows.

PENAS Cdric

13

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

VMware Tools Control Panel


Ce composant offre un panneau de contrle pour les VMware tools , afin de configurer certaines options.
Depuis Windows, il se lance en allant dans Dmarrer -> Panneau de configuration et en cliquant sur licne VMware Tools. Ce qui devrait faire apparatre le panneau (FIG 2.6).

Figure 2.6 VMware Tools Control Panel


Depuis Linux, il suffit de taper la commande suivante dans la console :
/usr/bin/vmware-toolbox&

2.1.7

Virtual Hardware Version

Le Virtual Hardware est un composant qui vient en supplment des VMware Tools dans lequel on retrouve tout le matriel virtuel utilis par VMware. Il contient galement les drivers associs
chaque composant et quelques fonctionnalits.
Avec VMware Virtual Infrastructure 3.5 ce composant Virtual Hardware tait disponible en version
4 et avec larrive de vSphere 4, il est pass en version 7. A noter aussi quil est possible de faire fonctionner une version 4 sous vSphere 4 mais pas linverse avec une version 7 sous VMware VI 3.5. Passons
prsent aux changements, que la nouvelle version apporte, dont voici une liste non exhaustive :
USB : Intgration dun controller USB qui tait dj prsent dans VMware Workstation, mais
pas dans ESX 3.5.
Hot Plug support : Permet de rajouter chaud aux VMs de la mmoire, des vCPUs ainsi que
des priphriques. Il faut nanmoins que le systme dexploitation le supporte. Voir la liste des
OS avec leurs compatibilits (FIG 2.1.7).

PENAS Cdric

14

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Systme dexploitation
Windows Server 2008 Datacenter Edition x64
Windows Server 2008 Datacenter Edition x86
Windows Server 2008 Enterprise Edition x64
Windows Server 2008 Enterprise Edition x86
Windows Server 2008 Standard Edition x64
Windows Server 2008 Standard Edition x86
Windows Server 2008 Web Server x64
Windows Serve 2008 Essential Business Server Premium x64
Windows Server 2008 Essential Business Server Standard x64
Windows Server 2008 Small Business Server Premium
Windows Server 2008 Small Business Server Standard
Windows Server 2003 Enterprise Edition x64
Windows Server 2003 Enterprise Edition x86

Hot-Add Memory
Oui
Oui
Oui
Oui
Oui
Oui
Oui
Oui
Oui
Oui
Oui
Oui
Oui

Hot-Add CPU
Oui
Non
Non
Non
Non
Non
Non
Non
Non
Non
Non
Non
Non

Figure 2.7 Compatibilit OS


256GB RAM : Un ESX/ESXi peut maintenant supporter jusqu 256GB de mmoire RAM.

VMXNET Generation 3 : Nouveau controller rseau qui permet dapporter des amliorations,
comme la gestion de lIPv6, optimisation du trafic rseau etc...

8-way SMP : Dans les versions prcdentes vSphere 4, une VM ne pouvait se voir allouer que
quatre vCPUs au maximum. Avec la nouvelle version, nous pouvons aujourdhui monter jusqu
huit vCPUs pourvu que lOS les supporte.

VMDirectPath : Permet damliorer les performances des vCPU lorsque ceux-ci ont besoin de
faire beaucoup daccs aux priphriques I/O en permettant la VM de sadresser directement
au hardware de lhte.

Block Tracking : Permet damliorer les oprations de sauvegarde et de restauration.

Serial Attached SCSI (SAS) virtual devices : Permet le support des configurations en
clustering de Windows Server 2008.

IDE virtual device : Permet le support des anciens systmes dexploitation qui ne grent pas
les pilotes SCSI.
2.1.7.1

Identifier la version utilise

Sous vSpere Client, il suffit de se mettre sur la vue dun cluster, puis daller sur longlet Virtual
Machines . Il devrait normalement y avoir une colonne "VM Version" (FIG 2.8). Si ce nest pas le
cas, il suffit de faire un clique droit sur le haut dune colonne et de lajouter.

PENAS Cdric

15

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Figure 2.8 Hardware Version

2.2
2.2.1

Architecture x86
Gestion de la mmoire

Dans cette section, la gestion de la mmoire sera dcrite de manire globale et trs synthtique. Le
but ntant pas de faire un cours dtaill, mais de rafrachir la mmoire du lecteur sur les principes
de base. Les chiffres qui seront utiliss pour les exemples seront en rapport direct avec le type de
processeurs utiliss dans ce projet de diplme, savoir des processeurs Intel 64bits.

Mmoire centrale
0xFFFFFFFFFFFFFFFF

CPU
Intel Xeon E5430
Socket LGA771

64bits
Bus d'adresses

Registres

Mot X

64bits
64bits

Mmoire
cache

12MB

Bus de donnes

Mot 1
0x0000000000000000

Figure 2.9 Mmoire centrale

PENAS Cdric

16

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

2.2.1.1

La mmoire physique 8

La mmoire centrale physique dun systme qui est plus couramment surnomme Mmoire RAM ,
peut tre vue comme une suite de blocs (des mots) composs de 1, 2, 4, 8 octets selon larchitecture
disposition, dans notre cas 64 bits soit 8 octets.
La quantit de mmoire utilisable est dfinie par la grandeur du bus dadresses qui relie le processeur la mmoire (FIG 2.9). Il peut donc adresser 264 mots ce qui aujourdhui ne fixe aucune limite,
puisquaucune carte mre actuelle ne pourrait supporter autant de mmoire RAM.
Il sagit plus prcisment de mmoire de type DRAM 9 qui travaille conjointement avec une mmoire
cache se trouvant lintrieur du processeur et qui est de type SRAM 10 , beaucoup plus rapide daccs
mais galement plus chre.
Lorsque le processeur dsire accder un mot mmoire, il le recherche dabord dans ce cache et
sil ne sy trouve pas, il le recherchera en mmoire centrale.
2.2.1.2

La mmoire virtuelle 11

Dans les systmes rcents, la gestion de la mmoire est faite par le systme dexploitation avec
laide dune partie du processeur appele MMU 12 .

Mmoire centrale
Systme

Mmoire centrale
0

Systme

Mmoire centrale
0

Systme

Processus 1

Processus 1

Processus 2
Lancement de
processus

Processus 3

Arrt de
P2 et P3

Processus 4

Processus 4

2^64-1

2^64-1

2^64-1

Figure 2.10 Mmoire centrale & processus


En effet, les premiers systmes allouaient la mmoire aux processus de faon linaire et sans dcoupage. Nous pouvons facilement voir sur la figure 2.10 quel est le problme de cette solution. Le systme
8. http://www.commentcamarche.net/contents/pc/ram.php3
9. Dynamic Random Access Memory
10. Static Random Access Memory
11. http://kurzweg.info/cnam/smb137/partie3/ar01s01.html, http://fr.wikipedia.org/wiki/M%C3%A9moire_
virtuelle,
http://deptinfo.unice.fr/twiki/pub/Minfo05/ApprofondissementSysteme/04_GestionMemoire.pdf,
http://www.lis.inpg.fr/pages_perso/cayre/pub/os/os-3.pdf
12. Memory Management Unit

PENAS Cdric

17

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

dexploitation considre lespace dadressage dun processus comme tant inscable et du coup il est
oblig de le charger entirement en mmoire pour pouvoir lexcuter.
Ce qui nous embte, cest que si les "trous" laisss entre les processus en mmoire centrale sont trop
petits pour accueillir un nouveau processus, il faudra faire de la place. Une solution envisageable est
de lancer une dfragmentation pour boucher ces "trous", mais cest une tche longue raliser.
Un autre problme est que si un processus dpasse la capacit de la mmoire, il ne pourra pas tre
excut. Mais, la plus grosse difficult, dans une architecture de ce type, est quil faut toujours savoir ladresse exacte o doit tre charg un processus, ce qui implique une connaissance pousse de la
mmoire.

MMU

CPU
Adresses
logiques

Adresses
physiques

RAM

SWAP
Disque Dur

Figure 2.11 MMU


Cest pourquoi le mcanisme de mmoire virtuelle t mis au point dans les annes 1960. Il permet
dutiliser une mmoire de masse comme un disque dur en complment de la mmoire centrale (ce qui
est appel SWAP), et ainsi pouvoir excuter de plus gros processus que la capacit de la mmoire ne
le permettrait ou tout simplement faire tourner plus de processus en mme temps (FIG 2.11).
Cest ici quentre en jeu le MMU, car ce mcanisme implique que le processeur ne pourra plus utiliser
directement des adresses physiques, mais il utilisera des adresses virtuelles qui seront traduites par le
MMU afin de pointer sur lemplacement correct. Chaque processus excut par le processeur possdera
son propre espace dadressage virtuel et croira ainsi possder la totalit de la mmoire disponible.
Comme nous pouvons le voir, il y a trois types dadresses :
1. Les adresses logiques ou segmentes (Segmentation) sont les adresses qui sont directement
utilises par les programmes en langage machine et sont composes dun couple (segment, offset).
2. Les adresses linaires ou pagines (Pagination) sont celles qui permettent dadresser toute
la mmoire virtuelle et elles vont de 0x0000000000000000 0xFFFFFFFFFFFFFFFF.
3. Les adresses physiques sont celles qui pointent directement vers la mmoire RAM.
Pour raliser ce mcanisme, il faut introduire les notions de mmoire pagine ou segmente qui permettent de "diviser" un processus en plusieurs parties.

PENAS Cdric

18

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

MMU

Adresses
Logiques

Segmentation

Adresses
Linaires

Processeur

Pagination

RAM

Adresses
Physiques

Figure 2.12 Adressage dans les processeurs x86


2.2.1.3

La pagination 13

La pagination est un mcanisme qui permet de dcouper la mmoire ainsi que les processus, respectivement en cadre de pages et en pages qui sont des blocs de taille fixe (4Ko pour les x86). Avec
cette mthode le systme dexploitation pourra charger en mmoire centrale des morceaux de processus
(FIG 2.13) et par consquent utiliser lespace disponible dune meilleure faon.

Mmoire centrale
0

Table des pages


lie au processus
Processus

11

N-1

page 1

page 1
page 2
page 3

page 3

page 4

page 2

Taille minimale pour une page = 4Ko

...
page 4
2^64-1

Figure 2.13 Table des pages


tant donn quun processus est dcoup en pages, les adresses utilises seront des adresses pagines,
o un octet de la mmoire centrale est reprsent par un couple (numro de la page, dplacement dans
la page). Il sera traduit en adresse physique grce une table de pages contenue dans le MMU (qui
13. http://kurzweg.info/cnam/smb137/partie3/ar01s02.html, http://deptinfo.unice.fr/twiki/pub/Minfo05/
ApprofondissementSysteme/04_GestionMemoire.pdf

PENAS Cdric

19

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

est aujourdhui intgr au CPU) qui contient les relations entre les adresses virtuelles et les adresses
physique (FIG 2.14). Cette relation est mise jour continuellement par le systme dexploitation afin
de savoir exactement o se trouve chaque page dans la mmoire.
Table des pages
Numro page

Numro de cadre

CPU

1
y

2
Numro page

Dplacement

Adresse linaire
= num + dp

Numro de cadre

Mmoire RAM

Dplacement

Adresse physique
= cadre + dp

Cadre 0
Cadre 0
Cadre y

Figure 2.14 Mcanisme de pagination


Chaque processus possde sa propre table de pages dans le cas o la pagination est la seule technique
utilise. Nous verrons par la suite quavec une combinaison des mthodes, cela devient diffrent.
2.2.1.4

La segmentation 14

Le principe de la segmentation est sensiblement quivalent celui de la pagination, la diffrence


prs qu la place de dcouper les processus en pages de taille fixe, ils sont dcoups en segments
de taille variable. Ces segments sont crs par le compilateur qui les divise selon leur contenu et
ils reprsentent un espace dadressage linaire compos dadresses contigus. Ainsi, nous aurons des
segments de donnes ou de code, ce qui correspond une partie logique du processus.
Mmoire virtuelle

Segment
Pile
Segment
Code

Segment
Pile

Segment
Code

Processus
Segment
Tas

Segment
Donnes

Segment
Donnes
Segment
Tas

Figure 2.15 Segmentation dun processus


14. http://kurzweg.info/cnam/smb137/partie3/ar01s03.html, http://deptinfo.unice.fr/twiki/pub/Minfo05/
ApprofondissementSysteme/04_GestionMemoire.pdf

PENAS Cdric

20

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Concrtement, ces segments sont diviss en 4 types :


Code : correspond au code des fonctions.
Tas : correspond lallocation dynamique des variables.
Pile : correspond aux variables locales et paramtres, ainsi quaux adresses de retour des fonctions.
Donnes : correspond aux constantes, variables initialises et non initialises.
Ladressage de ces segments se fait de la mme faon que pour les pages avec un couple (segment,
dplacement) et la rsolution se fait grce une table de segments que le MMU peut consulter. Il
existe galement une table de segments par processus.
Table des segments
Taille

Base

k0

CPU

k3
Dplacement

Segment

Adresse logique
= seg + dp

k6
<

Adresse invalide

oui

non
Numro de cadre

Mmoire RAM

Dplacement

Adresse physique
= cadre + dp

Cadre 0
Cadre 0
Cadre y

Figure 2.16 Segmentation

2.2.1.5

Segmentation & Pagination

Dans les architectures modernes comme x86 ou x86_64, les deux mcanismes de segmentation et
pagination sont utiliss conjointement.
Il faut voir la segmentation comme une structuration de lespace dadressage dun processus et la
pagination comme un moyen pour adapter la mmoire virtuelle la mmoire physique.
Un processus est donc dcoup en segments de diffrentes longueurs (une table des segments par
processus) et ces segments sont dcoups leur tour en pages (une table des pages par segment)
(FIG 2.17). Cest pourquoi, le MMU est compos dune partie de segmentation et dune autre pour la
pagination (FIG 2.12).

PENAS Cdric

21

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Mmoire virtuelle P1

Mmoire RAM

Mmoire virtuelle P2

OS

OS

OS

P1 - Seg P - Page 2

Segment
Donnes

Segment
Pile

P1 - Seg C - Page 1

Segment
Tas

P2 - Seg D - Page 2
P1 - Seg C - Page 3

Segment
Code

P2 - Seg P - Page 3
P1 - Seg T - Page 2

Segment
Code

P1 - Seg P - Page 1

Segment
Pile

P2 - Seg D - Page 2
Segment
Donnes

P1 - Seg D - Page 3

Segment
Tas

P2 - Seg C - Page 1
P1 - Seg T - Page 1

Figure 2.17 Segmentation & Pagination des processus


Nous avons donc au dpart des adresses logiques (segmentes) qui sont traduites en adresses virtuelles (pagines) par le MMU puis, celui-ci traduit encore une fois ces adresses en adresses physiques.

Table des segments


Base

Taille
k0

CPU

k3
Segment

Dplacement

Numro page

k6
<

Adresse invalide

Table des pages

Adresse logique
= seg + dp

Numro de cadre

0
1

oui

non
Numro page

Dplacement

Adresse linaire
= num + dp

Mmoire RAM
Cadre 0

x
k

Numro de cadre

Dplacement

Adresse physique
= cadre + dp

Cadre 0
Cadre y

Figure 2.18 Adressage global

PENAS Cdric

22

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

2.2.2

ISA 15

Lacronyme ISA vient de langlais pour instruction set architecture et est utilis pour dsigner
larchitecture dun processeur du point de vue du programmeur. Elle comprend plusieurs informations,
comme un jeu dinstructions que le processeur peut excuter, un ensemble de registres visibles par le
programmeur, une organisation de la mmoire et des entres-sorties, etc...
Voici une petite liste de quelques exemples dISAs :

2.2.3

x86
x86-64
PowerPC
MIPS
ARM
Motorola 68k
IBM System/360
IBM System/370

Les privilges sur x86 16

Sur un processeur de la famille x86, chaque instruction de base ne sexcute pas avec les mmes
privilges. Ces protections ont t mises en place notamment pour viter quune instruction naccde
une partie de la mmoire qui ne devrait tre accessible que par le systme dexploitation.
Il existe en tout quatre niveaux diffrents de privilges qui se reprsentent la plupart du temps sous
forme danneaux sincluant les uns dans les autres en partant de lanneau 0 (ring 0 ), qui possde le
plus de privilges pour arriver lanneau 3 (ring 3 ), qui est celui par dfaut possdant des privilges
restreints (FIG 2.19).

Les plus bas privilges


3

Ring 3

Applications utilisateurs

Ring 2
Ring 1

Ring 0
1

Les plus haut privilges


0
Systme d'exploitation

Figure 2.19 Privilges x86


Le systme dexploitation a tous les privilges et, par consquent, il se trouve au niveau 0 (appel
mode noyau ), alors quune application utilisateur se trouvera toujours au niveau 3 (appel mode
utilisateur ) limitant ainsi les infractions involontaires ou malveillantes envers la scurit du systme.
Les niveaux 1 et 2 ne sont en gnral pas utiliss.
15. http://en.wikipedia.org/wiki/Instruction_set
16. http://fr.wikipedia.org/wiki/Anneau_de_protection

PENAS Cdric

23

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

2.2.4

Virtualisation x86 17

La virtualisation est ne dans les annes 70 dans un centre de recherche IBM Grenoble. Elle tait
alors pratique sur des mainframes de type IBM System/360-370 et tait bien plus complique que ce
que nous connaissons aujourdhui, car elle faisait intervenir des technologies non seulement logicielles,
mais galement matrielles.

Figure 2.20 IBM System/360


Ce qui nous intresse dans lhistorique de la virtualisation, cest qu cette poque tous les systmes
virtualiss taient bass sur le principe du Trap and Emulate . Cette technique consiste laisser
tourner la machine virtuelle en mode non privilgi et gnrer des interruptions (trap) lorsque celle-ci
excute une instruction critique. Le VMM prend alors le contrle et soccupe de traiter linstruction
en question en lappliquant non pas sur le matriel physique, mais sur le matriel virtuel .
Cest alors que vous vous demanderez srement pourquoi ne pas appliquer le mme principe sur une
architecture x86 ? Pour rpondre cette question, il faut se tourner vers le modle dune architecture
virtualise et vers lISA x86.

RING 3

Applications

Applications

RING 3

RING 2

RING 2

RING 1

Systme d'exploitation
de la machine virtuelle

RING 0

Hyperviseur (VMM)

Systme d'exploitation

Matriel physique

Matriel physique

Architecture
virtualise

Architecture
classique

RING 1

RING 0

Figure 2.21 Comparaison Virtualisation / Classique


Comme nous pouvons le voir sur la figure 2.21, le VMM sexcute en ring 0 ce qui ne laisse dans
17. Implmentation matrielle du support de la virtualisation Intel VT (p.2)

PENAS Cdric

24

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

le meilleur des cas que le ring 1 pour le Guest OS. Cest ici que nous avons donc un problme, car les
instructions x86 ne sont de base pas prvues pour la virtualisation. Il se trouve que dix-sept dentre
elles, qui sont de niveau critique, ne gnrent pas dinterruptions lorsquelles sont excutes en ring
1. Il nest bien videmment pas envisageable de les laisser sexcuter, car elles pourraient accder et
modifier les ressources matrielles, ce qui provoquerait leffondrement du systme tout entier.
Pour pallier ce problme, les trois mthodes suivantes ont t mises en place.
2.2.4.1

Paravirtualisation 18

La paravirtualisation est une technique qui offre aux machines virtuelles une interface logicielle quasiment identique au matriel rel. Elle permet davoir des VMM beaucoup plus lgers et datteindre des
performances proches du matriel rel avec les machines virtuelles. Par contre, il y a un sacrifice non
ngligeable pour arriver cela. Le Guest OS doit pralablement tre modifi, afin de fonctionner avec
un VMM paravirtualis, ce qui implique lutilisation dOS dont il est facile de se procurer le code source.
Il sagit donc dune premire mthode qui a de grands avantages, mais qui reste complique et longue
mettre en uvre. Elle ne peut videmment pas tre utilise par les produits VMware, puisquils
utilisent le principe de la full virtualisation qui sappuie sur les principes de Binary Translation et de
Intel VT & AMD V.
2.2.4.2

Binary Translation 19

La Binary Translation tait la seule technique utilise par VMware jusqu la version 3.x dESX.
Elle est appele Software Technique par opposition la technologie VT-x dIntel qui est appele
Hardware Technique et que nous expliquerons dans la prochaine section.
Son principe est assez simple comprendre. Les instructions x86 de la machine virtuelle vont tre
traduites avant leur premire excution par un composant traducteur , qui se trouve dans le VMM,
dans un sous-ensemble dinstructions x86. Ainsi, toutes les instructions privilgies qui agissaient sur
le matriel physique et qui nous posaient problme jusque-l, seront remplaces par des instructions
non privilgies nagissant que sur le matriel virtualis (FIG 2.22).
Il faut peut-tre aussi prciser que ce principe ne sapplique quau code du noyau, le code utilisateur
est excut directement par le processeur. Il est donc vident quavec cette mthode, les applications
utilisateurs auront de meilleures performances que les applications faisant des appels systmes. Lorsque
la traduction est termine, le code est plac dans un cache, afin de pouvoir tre rutilis et viter les
overhead dus la Binary Translation.
Lorsque la BT est utilise, ESX utilise le principe de la segmentation (2.16) pour la gestion de la
mmoire, ce qui nest plus utilis par les OS actuels au profit de la pagination (2.14). Il ny a donc
aucun souci, mais avec larrive des architectures 64 bits, Intel et AMD ont supprim la segmentation
au niveau du matriel, ce qui rend la Binary Translation impossible. Il faudrait une implmentation
supplmentaire, pour la gestion mmoire, au niveau du VMM, mais loverhead serait alors considrable
et rduirait grandement les performances.
18. http://fr.wikipedia.org/wiki/Paravirtualisation
19. http: // www. vmware. com/ files/ pdf/ software_ hardware_ tech_ x86_ virt. pdf (p.3-4) , http: // www.
vmware. com/ pdf/ asplos235_ adams. pdf (p.2-5)

PENAS Cdric

25

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

isPrime: *mov %ecx, %edi


mov %esi, $2
cmp %esi, %ecx
jge [takenAddr]

isPrime: mov %ecx, %edi ; %ecx = %edi (a)


mov %esi, $2 ; i = 2
cmp %esi, %ecx ; is i >= a?
jge prime ; jump if yes

nexti:
nexti:

prime:

mov %eax, %ecx ; set %eax = a


cdq
idiv %esi ; a % i
test %edx, %edx ; is remainder zero?
jz notPrime ; jump if yes
inc %esi
; i++
cmp %esi, %ecx ; is i >= a?
jl nexti
; jump if no

BT

*mov %eax, %ecx


cdq
idiv %esi
test %edx, %edx
jz notPrime
*inc %esi
cmp %esi, %ecx
jl nexti
jmp [fallthrAddr3]

mov %eax, $1 ; return value in %eax


ret

notPrime: *xor %eax, %eax


pop %r11
mov %gs:0x39eb8(%rip)
movzx %ecx, %r11b
jmp %gs:0xfc7dde0(8*%rcx)

notPrime: xor
ret

Figure 2.22 Binary Translation


Par la suite, AMD a rimplant la segmentation dans ses processeurs, mais ce nest pas le cas dIntel.
Il faut donc prendre garde larchitecture mise en place avant de vouloir utiliser cette technologie.
2.2.4.3

Intel VT & AMD V 20

Les deux technologies Intel et AMD sont trs similaires, cest pourquoi, nous ne verrons ici que la
premire qui est la plus rpandue.
Avec Intel VT, des nouvelles instructions, dites de virtualisation, ont vu le jour savoir (VM Entry, VM Exit, VM Launch, VM Resume et dautres instructions de contrle). Les deux premires sont
celles qui ont la plus grande importance pour la comprhension du fonctionnement de VT.
Comme nous lavons vu, un OS est fait pour fonctionner sur un ring 0 et si ce nest pas le cas,
certaines instructions posent un problme. Cest donc ce niveau que VT apporte une amlioration
en faisant tourner les Guest OS sur un ring 0. Mais comment est-ce possible si ce ring est dj utilis
par le VMM ?

Ring 3
Ring 2
Ring 1
VMX root
(VMM)

VMX non root


(OS invit)

Figure 2.23 Modes VMX dIntel VT


Intel a introduit un nouveau mode dexcution appel VMX (Virtual Machine Extension) dans
20.
http: // www. vmware. com/ pdf/ asplos235_ adams. pdf
Hardware-assisted_virtualization

PENAS Cdric

26

(p.5-6) ,

http://en.wikipedia.org/wiki/

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

lequel, il existe deux modes. Le premier est le VMX root et le deuxime le VMX non-root (FIG 2.23).
Le VMM sexcute sur le mode root qui se trouve sur un ring 0 disposant des comportements classiques
dune architecture x86. Il peut donner la main une machine virtuelle en provoquant un VM entry
et cest alors que la VM en question peut excuter son code librement. Le Guest OS sexcute sur le
mode non-root sur un ring 0 et lorsquune instruction privilgie est excute, un VM exit survient ce
qui rend la main au VMM, qui peut alors faire ce qui est ncessaire pour traiter lexcution de cette
instruction en lappliquant sur le matriel virtualis. Une fois ceci ralis, il peut nouveau rendre la
main la VM en faisant un nouvel VM entry (FIG 2.24).

Applications

Ring 3

OS invit

OS invit

Ring 0

VM exit

VMX non root

Applications

VM entry

VMX root

Virtual Machine Monitor (VMM)

Figure 2.24 VM entry & VM exit


Cette technique peut nous faire penser la mthode du trap and emulate qui tait ralise dans
les dbuts de la virtualisation. Malheureusement, elle nest pas parfaite et introduit une quantit non
ngligeable doverheads avec les nombreux VM exit et VM entry mais permet finalement de virtualiser
sur une architecture x86-64 ce qui tait jusque-l un problme.
Vous trouverez une liste des processeurs supportant cette technologie ladresse suivante : http:
//ark.intel.com/VTList.aspx.

2.2.5

Hyper-Threading 21

LHyper-Threading est une technologie propritaire dIntel datant de 2002 qui implmente le Simultaneous Multi Threading (SMT) . Elle nest disponible que pour une certaine catgorie de processeurs Intel dont voici la liste :

Atom
Core i3
Core i5
Core i7
Itanium
Pentium 4
Xeon CPUs

21. http://www.presence-pc.com/tests/intel-core-i5-23179/5/, http://www.01net.com/article/253531.html

PENAS Cdric

27

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Cette technologie permet damliorer les performances de calculs dans un microprocesseur en crant
pour chaque cur du processeur physique, deux processeurs virtuels. Ainsi, lOS aura limpression
davoir deux fois plus de processeurs sa disposition et pourra, par consquent, excuter autant de
tches simultanment quil y a de processeurs logiques et donc repartir sa charge de travail (FIG 2.25).
Petit bmol, pour pouvoir utiliser de faon optimale lhyper-threading, il faut non seulement que lOS
supporte plusieurs processeurs, mais galement que lOS ait subi une optimisation directement au
niveau de son code source, afin de grer correctement le multi-threading. Si ce nest pas le cas, Intel
dconseille lutilisation de cette technologie qui pourrait amener des performances ngatives. Cette
technologie est correctement prise en compte partir des versions Windows XP et Windows 2003
Server.

Processeurs
physique

Sans
Hyper-threading

Thread 2

Processeurs
logiques vus par l'OS

Excution

Thread 1 Thread 2

Thread 1

temps

ad

re

Avec
Hyper-threading

Th
Th

re

ad

Thread 2
Thread 1

temps

Figure 2.25 Hyper-threading


Au niveau des processeurs virtuels, chacun possde ses propres registres de donnes et de contrle
ainsi quun contrleur dinterruptions, mais ils partagent le reste des ressources, comme la mmoire
cache, lunit dexcution et les bus systme.
Concrtement, limplmentation de cette technologie nutilise que 5% de la surface physique en plus
pour un gain en performance pouvant aller jusqu 30% selon la nature des applications. Les avantages
qui sont apports sont les suivants :

2.3

Optimisation de lutilisation du processeur, car les donnes lui sont envoyes en masse.
Amlioration de la gestion des codes multi-thread
Meilleur temps de raction et temps de rponse
Augmentation du nombre dutilisateurs dans le cas dun serveur par exemple

Rseau de stockage 22

Un rseau de stockage SAN (Storage Area Network) est un rseau ddi permettant de faire du
stockage avec un accs trs haut dbit.
Le SAN nest pas confondre avec un NAS (Network Attached Storage) qui est une ressource de
stockage directement connecte un rseau ethernet et qui peut supporter plusieurs systmes de fichiers rseau diffrents, comme CIFS (Common Internet File System) de Microsoft, NFS (Network File
22. http://en.wikipedia.org/wiki/Storage_area_network

PENAS Cdric

28

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

System) de UNIX ou encore AFP (AppleShare File Protocol) de Apple. Une fois connect, il apparatra
sur les diffrentes machines du rseau comme un serveur de fichiers partags.
Dans le cas dun SAN, les machines du rseau voient les espaces disques des baies de stockage comme
sils taient leurs propres disques durs. Elles ont donc accs cet espace en mode block, un peu comme
cela serait le cas avec un disque dur ATA ou SCSI.
Un serveur accde lespace disque de stockage travers des HBA (Host Bus Adapter) en utilisant un protocole comme SCSI ou Fibre Channel. Dans le cadre du CTI et comme dans la plupart des
cas, cest le Fibre Channel qui est utilis.
Les points forts du SAN par rapport au NAS sont :
La scalabilit de lespace de stockage. Si un espace disque devient insuffisant, il suffit simplement
dajouter un disque ou alors directement un baie.
Il y a entre les serveurs et les baies de stockage un mcanisme daccus de rception permettant
de sassurer que les transferts se sont raliss correctement.
La redondance peut tre assure en dupliquant les baies de stockage.
Le SAN fonctionne dans un environnement htrogne.

2.3.1

Host Bus Adapter 23

Un Host Bus Adapter (HBA) ou contrleur de bus en franais, est une carte dextension qui est
utilise pour connecter un serveur ou un poste client un bus externe, et dans notre cas, un rseau
de stockage. On retrouve plusieurs types diffrents de HBA dont notamment des HBA SCSI et HBA
Fibre Channel mais il existe galement des HBA Ethernet, USB ou encore Firewire.

Figure 2.26 Host Bus Adapter Fibre Channel


Celui qui nous intresse plus particulirement est celui utilis pour la connexion au rseau SAN et
qui supporte le protocole Fibre Channel. Il dispose dune adresse unique un peu comme ladresse MAC
pour Ethernet. Cet identifiant unique, appel World Wide Name (WWN), est cod sur 8 octets dont
les 3 premiers sont attribus par lIEEE et les autres par le constructeur de lquipement.

23. http://fr.wikipedia.org/wiki/Contr%C3%B4leur_h%C3%B4te_de_bus

PENAS Cdric

29

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES



1


50:00:51:e3:63:a4:49:01

Exemple de WWN

2.3.2

Fibre Channel 24

Fibre Channel est le protocole standard utilis dans les rseaux SAN, car il permet une connexion
haut dbit entre le serveur et son espace de stockage. Son nom peut porter confusion et nous faire
croire quil utilise de la fibre optique. Il sagit, en fait, dun protocole fonctionnant en srie qui ne
ncessite que deux conducteurs physiques et qui peut, par consquent, utiliser des supports comme de
la paire torsade, du cble coaxial ou de la fibre optique.
Ce protocole supporte actuellement quatre dbits diffrents (1 Gbit/sec, 2 Gbit/sec 4 Gbit/sec et
8 Gbit/sec) et il utilise trois topologies diffrentes savoir :

Figure 2.27 Topologies Fibre Channel


1. Point point : Liaison directe entre deux priphriques.
2. En boucle : Chaque priphrique est reli deux autres, afin de former une boucle.
3. Commut : Un switch Fibre Channel est utilis pour interconnecter les priphriques entre eux
et ainsi, permettre davoir de la redondance sur les chemins possibles. Dans ce cas, un switch
est appel Fabric, comme nous pouvons le voir sur le schma rseau du CTI (FIG 3.2) avec F/A
(Fabric A) et F/B (Fabric B ).

2.3.3

LUN 25

Un LUN pour Logical Unit Number est un identifiant dunit logique qui est, en fait, un pointeur
vers un espace disque. Il est en gnral dfini par sa taille en GO et par les WWN des HBA des serveurs
qui y ont accs.
Un administrateur de rseau SAN peut effectuer du LUN Masking 26 , ce qui consiste restreindre
laccs un LUN, afin quil ne soit visible que de certains serveurs.
Le nombre de LUNs quun serveur peut grer dpend fortement du systme dexploitation.
24. http://en.wikipedia.org/wiki/Fibre_Channel
25. http://fr.wikipedia.org/wiki/LUN
26. http://www.sansecurity.com/faq/lun-masking.shtml

PENAS Cdric

30

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Systme dexploitation
AIX
HP
Linux
IBM
Windows
ESX

Nombres de LUNs
64000
16000
256
64000
256
2563

Figure 2.28 Nombre de LUNs par hte

2.3.4

Raw Device Mapping

Lorsquon dcide dutiliser un LUN avec un ESX/ESXi, par dfaut ce LUN va tre format en
VMFS et certaines fois, nous voudrions utiliser un autre systme de fichiers. La solution est le Raw
Device Mapping qui permet dutiliser un LUN directement depuis une VM en (lecture/criture).

ESX/ESXi

VM 1

VMFS

Raw Device Mapping


VM 2

Raw Device Mapping


VM 3

Raw Device Mapping

Figure 2.29 Raw Device Mapping


Le lien se fait grce un fichier de mapping se trouvant sur le datatstore VMFS qui pointe sur le
LUN en question. Ce LUN peut donc tre ajout depuis la configuration de la VM en mode Raw
Device Mapping .
Ce mcanisme a t utilis lors du stage au CTI pour les LUNs Command Device servant au True
Copy sur les baies Hitachi (7.3).

2.4
2.4.1

Performances
SLA 27

Le Service Level Agreement (SLA) est un document qui dfinit la qualit de service requise entre
un prestataire et un client.
27. http://fr.wikipedia.org/wiki/Service_Level_Agreement

PENAS Cdric

31

26 juin 2010

CHAPITRE 2. NOTIONS IMPORTANTES

Dans le cadre des performances au sein mme dune entreprise, il dfinit la qualit minimale attendue
pour un service spcifique et pour les performances dun systme informatique physique ou vrituel.
Cest donc ce document qui servira de base pour la configuration des systmes VMware dans une
infrastructure de virtualisation.

PENAS Cdric

32

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

Matriel disposition

Avant de dbuter, il est ncessaire de faire le tour du matriel utilis dans les diffrents cadres de
travail durant ce projet de diplme.

3.1

HEPIA

Le laboratoire de transmission de donnes possde son intranet se trouvant lintrieur du rseau


HEPIA. Le nom de domaine tdeig.ch est gr par un serveur DNS se trouvant dans la DMZ. Il y
a galement un serveur web Apache (hbergeant le site du labo http://www.tdeig.ch) qui se trouve
dans la DMZ et qui est donc accessible depuis lextrieur (voir schma 3.1).

Serveurs publics
DNS tdeig.ch
129.194.184.84
WEB-FTP www.tdeig.ch
129.194.184.80
PKI ca.tdeig.ch
SSL
Serveurs privs
Fichiers - 10.1.1.1

Serveurs DNS

Images - 10.1.1.2
129.194.4.6
Nagios - 10.1.1.5

DMZ
Switch Catalyst X

129.194.4.32

Imprimante - 10.1.0.22
129.194.8.7
129.194.184.82
129.194.184.81

129.194.184.1

HEPIA
Intranet Labo
Switch Catalyst X
10.1.0.0/16

129.194.184.0/22

UNIGE
Switch

10.1.0.1
Firewall
Clavister
DHCP Server

Salle A409
PC Dell
PC ASUS (ESXi)
Switchs

Figure 3.1 Rseau du Labo TD


PENAS Cdric

33

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

Le reste des serveurs, se trouvant au laboratoire, sont privs et par consquent accessibles uniquement en local. Cest le cas du serveur sur lequel tourne lapplication Nagios qui a t monte dans le
cadre de ce projet de diplme.
Les machines utilises 1 pour la virtualisation avec VMware disposent de la configuration hardware
suivante :
Carte mre 2 : Gigabyte GA-G33M-S2L
Processeur : Intel Core2Duo 3Ghz, 6Mb de cache et FSB de 1333Mhz
Mmoire : 4GB DDR800
Sur ces machines est installe la version 4 ESXi build 208167.

1. http://www.tdeig.ch/vmware/Montage_PC_Gigabyte.pdf
2. http://www.tdeig.ch/vmware/motherboard.pdf

PENAS Cdric

34

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

3.2

CTI

Linfrastructure dont dispose le CTI pour la virtualisation est dcrite de manire globale sur limage
3.2.

SITE ACA

IBM Blade Center H


IBM Blade HS21

Rack Standalone

Rack ESX
Chassis 1

Chassis 1

x6

x6
LAN : 10 GB/s
x 12

x 12

Chassis 2

Chassis 2

LAN : 1 GB/s

x 12

SITE

x 12
LAN : 56 GB/s
Chassis 3

LAN : 56 GB/s
Chassis 3

x 12

NHP

x 12
vCenter

Chassis 4

Chassis 4

x 12

x 12
SAN : 4 GB/s

SAN

SAN
F/B

F/A
x 16

x 16
Hitachi USP V

Hitachi USP V

LUNs Boot ESX

LUNs Boot ESX

LUNs Stockage

Command device
Command device

Replication
True
Copy

Command device
Command device
LUNs Stockage

Figure 3.2 Rseau de virtualisation CTI


Un rack IBM, que ce soit le rack contenant les ESX ou un autre, contient en tout quatre chssis
qui possdent chacun quatorze blades (FIG 3.3) avec la configuration matrielle suivante :

Modle : IBM eServer BladeCenter HS21


Processeur : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
Mmoire : 32GB
Nb Sockets : 2

PENAS Cdric

35

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

Nb Cores : 8
Nb NICs : 6
Nb HBA : 5

CHSSIS
IBM BLADE CENTER H

IBM BLADE HS21

Figure 3.3 Chssis IBM avec quatorze blades


Chaque ESX (VMware ESX 4.0.0 build-244038) dispose donc dune blade entire et contient
en moyenne six machines virtuelles.
Au niveau des I/O, chaque chssis possde 6 switchs Ethernet, 2 switchs SAN et 2 modules
de management (FIG 3.4)

Figure 3.4 I/O du Chssis IBM - Vue arrire


Une blade dispose de six ports Ethernet et de deux ports HBA FC, elle est donc relie chacun
des switchs, ce qui permet damliorer les performances rseau grce cette redondance.

3.2.1

Rseaux

Les interfaces rseau dun ESX sont configures pour permettre nimporte quel rseau virtuel de
les utiliser. Ainsi, nous obtenons de la redondance grce aux six ports disponibles (FIG 3.5).
PENAS Cdric

36

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

Figure 3.5 Configuration rseau ESX


Il faut ds lors dfinir des VLANs, si une sparation des rseaux dsire tre ralise. Cette sparation est dite logique puisquau niveau physique tout le trafic passe par les mmes chemins.
Les ports des switchs CISCO doivent par consquent tre configurs en mode trunk , afin de permettre chaque VLAN dutiliser tous les ports disponibles. Nous obtenons donc 2 rseaux physiques
qui sont les rseaux LAN et SAN, mais 3 rseaux logiques :
1. Rseau applicatif (VLAN 503)
2. Rseau administratif (VLAN 101)
3. Rseau de stockage (SAN)
Sur le schma (FIG 3.6), nous navons reprsent que deux blades, mais en ralit, il y en a quatorze
comme dj expliqu. Nous pouvons voir que chaque blade possde une connexion physique avec chacun des switchs du chssis.
Il faut peut-tre encore prciser quau niveau du rseau LAN du CTI, il existe plusieurs switchs sur
lesquels sont connects les chssis, mais nous nen avons reprsent quun seul ici pour une raison de
simplicit.
Au niveau du rseau SAN, il y a galement beaucoup de redondances sur les chemins daccs une
baie de stockage pour assurer la communication. Cest ce que nous avons dfini comme tant un rseau
commut dans la terminologie SAN (2.3.2).

PENAS Cdric

37

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

CHSSIS

IBM HS21

IBM HS21

eth0

eth1

eth2

eth3

eth4

eth5

hba0

hba1

eth0

eth1

eth2

eth3

eth5

eth4

hba0

hba1

x12

...

56 GB/s

4 GB/s

11 GB/s

Fabric A

LAN

SAN

Hitachi USP-V

VLAN 503
Applicatif

Fabric B

Hitachi USP-V

VLAN 101
Administratif

Figure 3.6 Rseaux

PENAS Cdric

38

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

3.2.2

Stockage

Une des particularits du stockage dans linfrastructure de virtualisation du CTI est quaucune des
machines ESX na despace de stockage local. Tous les fichiers se trouvent sur des baies de stockage
Hitachi USP-V (Universal Storage Platform V) dont la datasheet 3 est disponible sur le site officiel
dHitachi. Ces baies sont les derniers modles proposs par cette marque et proposent des performances
de haute qualit.

Figure 3.7 Hitachi USP-V


Pour rsumer les points importants de ces baies :
Bande passante max. de 4 ou 8 GB/s.
Bande passante interne max. de 106 GB/s.
Espace de stockage total max. de 247 PB avec des disques de type SATA II, Fibre Channel ou
Flash.
152 disques maximum.
Jusqu 65,536 LUNs par volume.
1 14 switchs Fibre Channel avec chacun 8 ou 16 ports.
Nous retrouvons donc sur ces baies de stockage un certain nombre de LUNs, qui sont utiliss par les
blades et par consquent par les ESX (FIG 3.8). Parmi ces LUNs, nous avons :
1 LUN de boot par ESX, dune capacit de 15 GB.
6 LUNs de donnes par Cluster, dune capacit de 1 TB.
Les LUNs de boot sont celles qui contiennent linstallation des ESX, avec un systme de fichiers ext3
et une partition vmfs3 pour le service console associ.
Les LUNs de donnes contiennent tous les fichiers servant au fonctionnement des machines virtuelles
(vmx, vmdk, vswp etc...), ainsi que toutes les donnes utilises par celles-ci.
La visibilit des LUNs par les ESX est dfinie par le mcanisme de masking, dont nous avons parl en
2.3.3.

3. http://www.hds.com/assets/pdf/hitachi-datasheet-usp-v.pdf

PENAS Cdric

39

26 juin 2010

CHAPITRE 3. MATRIEL DISPOSITION

VMware cluster
ESX 2

ESX 1

VM 1

VM 4

VM 2

VM 5

VM 3

VM 6

x12
...

HITACHI USP-V

LUN DATA 1 TB

FICHIERS ESX

FICHIERS ESX

Service Console

Service Console

LUN DATA 1 TB

VM 5
.vmx (cong)
.vmdk (disque)
.vswp (swap)

LUN BOOT ESX1


15 GB

LUN BOOT ESX2


15 GB

LUN DATA 1 TB

LUN DATA 1 TB

VM 1

Systmes de chiers

.vmx (cong)
.vmdk (disque)

VMFS3

.vswp (swap)

LUN DATA 1 TB

LUN DATA 1 TB

EXT3

Figure 3.8 Stockage Hitachi USP-V

PENAS Cdric

40

26 juin 2010

CHAPITRE 4. OUTILS UTILISS

Outils utiliss

4.1

VMware vCenter Server

4.1.1

Introduction

vCenter est un service qui permet de centraliser ladministration dhtes ESX/ESXi. Il permet de
manager les htes, ainsi, que les machines virtuelles qui tournent sur ceux-ci. Il y a une possibilit
davoir plusieurs vCenter et les regrouper. Nous pouvons, avec cette mthode, se connecter sur un seul
vCenter qui verra et managera tous les autres vCenter et leurs ressources associes.

4.1.2

Pr-requis hardware minimum

vCenter Server peut tre install soit sur une machine physique, soit sur une machine virtuelle,
pourvu quil ait accs une base de donnes compatible. Il faut respecter les exigences minimales
suivantes :
2 CPUs Intel ou AMD avec au minimum une frquence de 2.0Ghz, plus si la base de donnes est
locale.
3GB de RAM, plus si la base de donnes est locale. Il faut galement compter un supplment de
128MB 1.5GB pour le VMware vCenter Management Webservices qui est un service sexcutant
en parallle.
Un espace de stockage dau minimum 2GB, plus si la base de donnes est locale.
Microsoft SQL Server 2005 Express au minimum. Dautres bases de donnes SQL sont galement
envisageable (Oracle par exemple).
Une connexion gigabit est conseille.

4.1.3

Recommandations

Pour des performances optimales, il faut respecter les suggestions suivantes proposes par VMware :
Jusqu 50 ESX/ESXi et 250 VMs
Produit
vCenter Server

Jusqu 200 ESX/ESXi et 2000 VMs


Produit
vCenter Server

PENAS Cdric

41

CPUs
2

CPUs
4

Mmoire
4GB

Mmoire
4GB

Disque
3GB

Disque
3GB

26 juin 2010

CHAPITRE 4. OUTILS UTILISS

Jusqu 300 ESX/ESXi et 3000 VMs


Produit
vCenter Server

4.1.4

CPUs
4

Mmoire
8GB

Disque
3GB

Ports utiliss

80 : Utilis pour accder linterface web de vCenter. Par dfaut redirig sur le port HTTPS
443.
389 : Utilis par LDAP pour la gestion des groupes de vCenter.
443 : Utilis par dfaut pour la communication entre vCenter et vSphere Client. galement
utilis pour laccs linterface web, depuis un navigateur, et pour la connexion un SDK, par
exemple.
636 : Utilis par SSL pour les vCenter utilisant la notion de groupe.
902/903 : Utilis par dfaut pour la communication avec les htes ESX/ESXi. galement utilis
entre vCenter et vSphere Client pour laffichage de la console des VMs.
8080 : Utilis par les Webservices en HTTP
8443 : Utilis par les Webservices en HTTPS

4.1.5

Installation 1

Nous allons voir ici linstallation ralise au CTI, mais avant de dbuter, il faut sassurer de respecter
les points suivants :
1. Sassurer davoir la configuration hardware minimale dcrite en 4.1.2.
2. Disposer dune base de donnes compatible et fonctionnelle.
3. Il ne doit pas y avoir de NAT 2 entre le serveur vCenter et les htes quil contrle.
4. Le serveur vCenter doit appartenir un domaine plutt qu un groupe de travail, sans quoi, il
ne sera pas capable de dtecter automatiquement tous les domaines.
5. Le nom de la machine excutant vCenter ne doit pas dpasser 15 caractres.
6. Assigner une IP statique au vCenter ainsi quun DNS 3 valide.
Dans notre cas, nous avons la configuration suivante :

OS : Windows Server 2008 64bits


Modle : IBM eServer BladeCenter HS21
Processeur : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
Nb CPU : 2
Nb Cores : 8
Mmoire : 32GB
Espace disque : 100GB

Une fois tout ceci vrifi, linstallation peut dbuter en lanant autorun.exe contenu dans les fichiers
dinstallation de VMware vCenter Server.
Plusieurs composants seront alors installs, afin que tout fonctionne correctement :
1. http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ esx_ vc_ installation_ guide. pdf
2. Network Address Translation
3. Domain Name System

PENAS Cdric

42

26 juin 2010

CHAPITRE 4. OUTILS UTILISS

VMware vCenter Server Un service Windows, qui permet de manager les diffrents serveurs
ESX/ESXi.
Microsoft.NET 3.0 SP1 Framework Utilitaire pour vSphere Client et quelques fonctionnalits lies la base de donnes.
VMware vCenter Orchestrator Module qui fournit plusieurs outils au vCenter, afin damliorer le management des systmes virtualiss.
Microsoft SQL Server 2005 Express Cette base de donnes est optionnelle, car, comme nous
lavons dj prcis, nous pouvons en utiliser une autre, comme Oracle.
Nous trouverons galement dautres outils dans linstallation de vCenter comme :
vCenter converter Permet de virtualiser des machines physiques ou de convertir des machines
virtuelles fonctionnant sous une version dESX/ESXi vers une autre version.
vCenter Update Manager Permet de mettre jour la scurit et les diffrents patchs des
ESX/ESXi et de leurs machines virtuelles.
Lors de linstallation, plusieurs informations vous seront demandes. Pour la plupart, il faudra laisser
la valeur par dfaut.
1. Le nom dutilisateur et lorganisation : Mettre des informations cohrentes avec le reste de linfrastructure.
2. La licence vCenter : Entrez la cl que vous avez reue de la part de VMware.
3. Dossier dinstallation vCenter : Par dfaut.
4. Standalone ou groupe : Savoir si le vCenter fait parti dun groupe, afin de raliser une hirarchie
de management, ou sil est tout seul. Nous linstallerons en Standalone.
5. FQDN 4 du vCenter grant le groupe : Aucun dans notre cas.
6. Port LDAP : Par dfaut, mais utile que si le vCenter fait parti dun groupe.
7. Infos de la base de donnes : Aucune info car nous utilisons la base de donnes par dfaut.
8. Diffrents ports utiliss par vCenter : Nous avons laiss tous les ports par dfaut.

4.2
4.2.1

VMware vSphere Client


Introduction

vSphere Client sinstalle sur une machine Windows et est un client qui permet de se connecter
un vCenter Server ou directement un ESX/ESXi afin de les administrer grce une interface
graphique.

4.2.2

Pr-requis hardware minimum

vSphere Client peut tre install soit sur une machine physique soit sur une machine virtuelle.
Il faut respecter les exigences minimales suivantes :
4. Full Qualified Domain Name

PENAS Cdric

43

26 juin 2010

CHAPITRE 4. OUTILS UTILISS

4.2.3

1 CPU Intel ou AMD avec au minimum une frquence de 500Mhz.


200MB de RAM.
Un espace de stockage dau minimum 1GB.
Une connexion gigabit est conseille.

Recommandations

Pour des performances optimales, il faut respecter les suggestions suivantes proposes par VMware :
Jusqu 50 ESX/ESXi et 250 VMs
Produit
vSphere Client

4.2.4

CPU
1

Mmoire
200MB

Disque
1GB

Jusqu 200 ESX/ESXi et 2000 VMs


Produit
vSphere Client

CPU
1

Mmoire
500MB

Disque
1GB

Jusqu 300 ESX/ESXi et 3000 VMs


Produit
vSphere Client

CPU
1

Mmoire
500MB

Disque
1GB

Installation

Linstallation se fait tout simplement partir dautorun.exe qui a servi installer vCenter. Nous
avons laiss toutes les options par dfaut.
Attention : Host Update Utility nest installer que si larchitecture virtualise nutilise pas
de clusters. Autrement, il faut privilgier vCenter Update Manager, pour la gestion des mises jour.

4.3

Esxtop + perfmon

Esxtop est loutil par excellence utiliser pour monitorer les performances dun ESXi. Nous pouvons le coupler perfmon (Windows), pour un rendu graphique des donnes.
Comment utiliser esxtop ?
http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ resource_ mgmt. pdf (p.159-171)
Les compteurs utiles au niveau du CPU sont %RDY et %USED
http://communities.vmware.com/docs/DOC-5240
Comment interprter les compteurs esxtop ?
http://communities.vmware.com/docs/DOC-9279
Utilisation de perfmon
PENAS Cdric

44

26 juin 2010

CHAPITRE 4. OUTILS UTILISS

http://www.zebulon.fr/astuces/221-optimiser-vista-avec-le-rapport-de-performances.html
http://communities.vmware.com/docs/DOC-5100

4.4

Nagios

Le monitoring dun rseau est une tche assez complexe et parfois complique mettre en uvre,
surtout sur de grandes infrastructures. Il existe, bien videmment, plusieurs palettes doutils permettant de le faire et grce auxquels nous pouvons, par exemple, connatre ltat dune machine (ping),
effectuer une requte HTTP, pour savoir si un serveur web fonctionne, ou encore, visualiser les proprits dun disque, afin de savoir la place libre restante.
Mais le problme est que ces actions sont assez simples raliser, lorsque le rseau est de petite
taille et quil ny a pas beaucoup de services, alors que, dans le cas contraire, cela devient rapidement
ingrable. Cest pourquoi Nagios est utilis dans le domaine professionnel afin de monitorer les performances dun rseau.
Avec son aide, les tches fastidieuses de monitoring rseau sont faites automatiquement et priodiquement. Il est possible dassigner autant de tches que nous le souhaitons un composant du rseau.
Il les excutera et nous signalera le moindre problme (par e-mail), selon des critres fixs.
Une fois matris, il devient vite indispensable pour nimporte quel ingnieur rseau.

4.4.1

Installation

Linstallation ralise dans le cadre du labo de transmission de donnes a t faite sur un Ubuntu
Server 10.04 et, par consquent, Nagios se trouve dans les dpts officiels, ce qui facilite la procdure,
puisquil faut simplement installer le paquet nagios3 .
sudo apt-get install nagios3

Il devrait galement installer Apache2, si ce nest pas dj fait. Pour terminer, un mot de passe
pour le compte nagiosadmin vous sera demand. Il sagit du compte principal pour la gestion de
Nagios.
Pour une installation manuelle vous pouvez suivre le tutoriel officiel ladresse suivante : http:
//nagios.sourceforge.net/docs/3_0/quickstart-ubuntu.html
Une fois linstallation termine, la page principale de Nagios devrait tre accessible via le lien http:
//localhost/nagios3/

4.4.2
4.4.2.1

Configuration
Fichier principal

La configuration principale de Nagios se trouve dans /etc/nagios3/nagios.cfg . Ce qui nous


intresse plus particulirement, dans ce fichier, est le chemin vers les fichiers de configuration pour les
services, htes, contacts etc... Il faut donc le prciser sur la ligne suivante :

PENAS Cdric

45

26 juin 2010

CHAPITRE 4. OUTILS UTILISS


cfg_dir=/etc/nagios3/conf.d/





Extrait de nagios.cfg
Dans notre cas, tous nos fichiers de configurations seront dans le rpertoire /etc/nagios3/conf.d/ .
Afin de valider une configuration, Nagios nous met disposition la commande suivante qui nous
permet de dtecter les incohrences :
sudo nagios -v /etc/nagios3/nagios.cfg

4.4.2.2

Les utilisateurs

Pour ajouter un utilisateur Nagios, il suffit de taper la commande suivante :


sudo htpasswd -c /etc/nagios3/htpasswd.users <username>

Ensuite, les permissions de cet utilisateur peuvent tre modifies dans le fichier /etc/nagios3/cgi.cfg
en ajoutant le nom de cet utilisateur aux lignes commenant par authorized_for . Elles sont au
nombre de sept et correspondent aux autorisations suivantes :
authorized_for_system_information
authorized_for_configuration_information
authorized_for_system_commands
authorized_for_all_services
authorized_for_all_hosts
authorized_for_all_service_commands
authorized_for_all_host_commands

voir ltat des services


voir la configuration du serveur
excuter des commandes systmes
voir ltat de tous les services
voir ltat de tous les htes
excuter des commandes pour tous les services
excuter des commandes pour tous les htes

Figure 4.1 Source : http ://doc.ubuntu-fr.org/nagios

4.4.2.3

Les priodes de temps

Les priodes de temps servent dfinir quand est-ce quun service doit tre surveill. Ainsi, on
peut, par exemple, dire Nagios de ne contrler laccs Web quaux heures de travail.
Pour crer une nouvelle priode de temps, il faut ajouter ou diter, par exemple, un fichier /etc/nagios3/conf.d/timeperiods.cfg qui contiendra des heures de travail :


define timeperiod{
timeperiod_name heures_travail
alias
Heures de travail
monday
07:00-17:00
tuesday
07:00-17:00
wednesday
07:00-17:00

PENAS Cdric

46

26 juin 2010

CHAPITRE 4. OUTILS UTILISS

thursday
saturday
}

07:00-17:00
07:00-17:00


Extrait de timeperiods.cfg

4.4.2.4

Les contacts

Un contact est une personne physique que Nagios pourra contacter, pour lui signaler les incidents
ventuels.
Pour crer un contact, il faut ajouter ou diter, par exemple, un fichier /etc/nagios3/conf.d/contacts.cfg
comme ceci :

11


define contact{
contact_name
dupont
alias
Henry Dupont
service_notification_period heures_travail
host_notification_period
heures_travail
service_notification_options w,u,c,r
host_notification_options
d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email
henry.dupont@domaine.net
pager
+32336254324
}


Extrait de contacts.cfg

Descriptif des diffrents champs :


contact_name : Pseudo du contact qui sera utilis dans les autres fichiers de configuration
pour lui faire rfrence.
alias : Description du contact, souvent utilis pour entrer le nom et le prnom.
notification_period : Priodes durant lesquelles le contact sera averti pour les services et les
htes. Reprendre les priodes de temps de timeperiods.cfg
notification_options : Quand est-ce quune notification doit tre envoye. Pour les services les
options possibles sont (w : warning, u : unknown, c : critical, r : recovery) et pour les htes (d :
down, u : unreachable, r : recovery).
notification_commands : La mthode denvoi des notifications.
email et pager : Les infos pour lenvoi des notifications soit par e-mail soit par sms.
4.4.2.5

Les groupes de contacts

Il est galement possible de regrouper les contacts et davertir, par exemple, un groupe complet au
lieu de samuser paramtrer pour chaque contact.
Un nouveau groupe peut tre dfini dans un fichier /etc/nagios3/conf.d/contacts_group.cfg
comme ceci :

PENAS Cdric

47

26 juin 2010

CHAPITRE 4. OUTILS UTILISS


define contactgroup{
contactgroup_name
alias
members
}



admins
Administrateurs du reseau
dupont, smith, toto


Extrait de contacts_group.cfg
Il suffit simplement de prciser pour le paramtre members quels sont les contacts qui font partis
de ce groupe.
4.4.2.6

Les htes

Les htes sont les quipements du rseau qui seront monitors comme les postes fixes, les routeurs,
les serveurs etc...
Pour plus de clart et pour faciliter la maintenance, nous pouvons spcifier un hte par fichier. Par
exemple, si nous avons une machine sur laquelle tourne un serveur web, on pourra crer le fichier
/etc/nagios3/conf.d/serveur_web.cfg :


define host{
use
host_name
alias
address
check_command
}



generic-host
webserver
Serveur Web
192.168.x.x
check-host-alive


Extrait de serveur_web.cfg
Avec ce fichier, le serveur web sera ping priodiquement grce la commande check-host-alive .
4.4.2.7

Les groupes dhtes

Pareil que pour les contacts, nous pouvons dfinir des groupes dhtes pour, par exemple, limiter
des zones du rseau comme une DMZ.
Il faudra donc crer un fichier /etc/nagios3/conf.d/hostgroups.cfg dans lequel nous pourrons
placer un groupe DMZ :


define hostgroup{
hostgroup_name dmz
alias
Serveurs de la DMZ
contact_groups admins
members
webserver, mailserver
}


Extrait de hostgroups.cfg

PENAS Cdric

48

26 juin 2010

CHAPITRE 4. OUTILS UTILISS

4.4.2.8

Les services

Les services sont le dernier point important de la configuration de Nagios. Comme nous lavons vu,
un hte est ping pour tester sa disponibilit mais rien de plus. Ces services permettront de monitorer
un hte sous diffrents aspects, par exemple, tester un port, vrifier le hardware, rcuprer sa configuration etc...
Si nous dsirons tester le port 80 du serveur web en effectuant une requte HTTP, nous pourrons
crer un fichier /etc/nagios3/conf.d/services_web.cfg :


define service{
use
generic-service
host_name
webserver
service_description Test HTTP
check_command
check_http
}


Extrait de services_web.cfg

PENAS Cdric

49

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

5 Analyse & optimisation des


performances
Dans cette partie du document, nous allons voir en dtail quelles sont les bonnes pratiques respecter pour des performances optimales, sur des systmes VMware ESX/ESXi. Ensuite, nous verrons une
mthodologie permettant didentifier diffrentes sources de problmes, puis, dans la mesure du possible,
quelles sont les manipulations effectuer pour les rgler ou alors des pistes explorer pour les rsoudre.
Nous dbuterons avec un aspect gnral pour ensuite aller plus en profondeur avec des problmes
lis directement au hardware (CPU, RAM, Stockage et Rseau).

5.1

Performances gnrales

Avant de dbuter avec lanalyse des performances du CPU ou bien de la RAM, il faut prendre en
compte quelques aspects gnraux, qui peuvent galement influencer sur les performances du systme
virtualis. Il y a donc quelques points respecter et surveiller, afin que la base de notre systme soit
optimise au maximum.
Nous allons galement voir quels sont les outils qui peuvent nous permettre de surveiller de faon
globale le systme et de dtecter les ventuels problmes.

5.1.1

Les bonnes pratiques

Les diffrents points globaux respecter et contrler sur tous systmes ESX/ESXi, sont les
suivants :
1. Valider le hardware de la machine hbergeant ESX/ESXi en sassurant quil respecte la configuration minimale conseille par VMware 1 dont notamment pour ESX/ESXi 4 :
Processeur 64-bits
2GB de RAM minimum

VMkernel
Virtual CPU

ESX 1.0-2.5
32-bit
32-bit

ESX 3.0
32-bit
32-bit & 64-bit

ESX 3.5
32-bit
32-bit & 64-bit

ESX 4.0
64-bit
32-bit & 64-bit

Figure 5.1 Pr-requis des CPUs physiques


1. http: // www. vmware. com/ resources/ compatibility/ pdf/ vi_ systems_ guide. pdf ,
vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ esx_ vc_ installation_ guide. pdf (p.13-20)

PENAS Cdric

50

http: // www.

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

2. Sassurer que le hardware fonctionne correctement en faisant tourner un benchmark, afin


dliminer toutes les possibilits de dfauts.

3. Vrifier que le Service Console dispose dassez de ressources (256MB de RAM minimum
mais 512MB pour un fonctionnement optimal). Dans le cas contraire, nous pouvons observer les
symptmes suivants (exemples) :
Mauvais temps de rponse du vSphere Client (Pas assez de mmoire)
Impossible de se loguer dans le service console (Pas assez despace disque)
4. Utiliser des systmes dexploitation compatibles.
http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ compatibility_ matrix. pdf (p.17-19)

5. Toujours installer la dernire version des VMware tools sur le Guset OS et la maintenir jour,
surtout aprs une mise jour de lESX/ESXi.
Voir section 2.1.6

6. Disposer de la dernire version hardware compatible avec lESX/ESXi install.


Voir section 2.8

7. Dsactiver les crans de veille et autres animations Windows sur les machines virtuelles. Sur
Linux, dsactiver le server X, sil nest pas utilis. Toutes ces fonctionnalits consomment de la
ressource CPU non ngligeable.

8. Dans la mesure du possible, activer le HA et le DRS.


HA, voir section 2.4
DRS, voir section 2.5

9. Dconnecter tous les priphriques non utiliss sur lhost et sur les guest comme :

Les ports COM


Les ports LPT
Lecteurs Floppy
Lecteurs CD-ROM
Les ports USB

10. Programmer les backups et les scans antivirus dans des heures creuses comme le milieu de la
nuit. appliquer, aussi bien pour les ESX/ESXi que pour les VMs.
PENAS Cdric

51

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

5.1.2

Dtection de problmes

Il est vident quil faut optimiser au maximum un systme en production et le monitorer mais
partir de quel moment pouvons nous considrer quun problme existe ?
En rgle gnral, il existe des SLA (2.4.1) dans chaque entreprise qui dfinissent quels sont les seuils
critiques pour la production. Il est vident que pour une ressource, comme le CPU, le seuil critique
sera pratiquement toujours au mme niveau pour tout systme informatique, mais pour une ressource
moins critique, comme lespace de stockage, la limite critique peut varier.
Il faut donc sappuyer sur ces SLA, afin dutiliser au mieux les outils de monitoring disposition.
Dans le cadre du stage au CTI, les deux outils utiliss sont :
Nagios pour un monitoring constant et pour le dclenchement dalertes.
vSphere Client + vCenter pour un monitoring ponctuel et global.
Ce que nous pouvons conseiller, daprs les nombreuses lectures effectues, cest dutiliser trois outils
pour cibler un problme. Les deux premiers sont ceux utiliss au CTI, mais il faudrait en rajouter un
troisime et qui reste loutil le plus puissant, pour le monitoring en temps rel, qui est Esxtop.
Ce dernier est parfois laiss de ct, car peut-tre un peu plus lourd utiliser, comme il na pas
dinterface graphique avec de jolis compteurs. Mais, il reste nanmoins loutil le plus intressant, car il
donne accs des compteurs auxquels les deux autres outils nont pas accs et le taux de rafrachissement est plus lev, donc plus prcis.

Symptmes

Exemples

- Faible dbit
- Temps de rponse lev

Observations des symptmes


+
Surveillance des alertes Nagios

Sens d'investigation

Problme
possible

Exemples

- Saturation du CPU
- Accs mmoire importants

Observer le problme
avec vSphere Client
Conrmation du problme
et
ressource associe

Exemples

Analyser les compteurs


d'Esxtop

- Mauvaise rpartition de
charge
- Capacit mmoire max
atteinte

Dduction
Exemples

- Mmoire insusante
- Mauvaise conguration

Cause du problme

Figure 5.2 Marche suivre


Nous pouvons donc dfinir la marche suivre reprsente sur limage (FIG 5.2), comme tant la
meilleure faon de monitorer une infrastructure virtualise.
PENAS Cdric

52

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

5.1.2.1

Observation avec Nagios

Le monitoring sous Nagios se fait grce des greffons, qui ne sont rien dautre que des scripts,
programmes ou autres qui peuvent tre dvelopps par nimporte qui.
La seule contrainte est que ces greffons doivent retourner certains codes prcis pour que Nagios puisse
les comprendre et les utiliser. Il existe en tout quatre codes :

0
1
2
3

:
:
:
:

OK
WARNING
CRITICAL
UNKNOWN

Pour exemple de greffon utilis par Nagios, vous trouverez en annexe le code source du programme C
qui permet de tester le ping avec check_ping (Annexe A.2)
Nagios va ensuite excuter tous les greffons priodiquement et nous reporter les tats qui sont retourns. Ce sont ces tats qui dfiniront si une alerte doit tre dclenche. La vue offerte par Nagios
pour le monitoring des services, nous permet davoir une vision globale sur ltat de tous ces services
(FIG 5.3)

Figure 5.3 Monitoring Nagios


5.1.2.2

Observation avec vSphere Client + vCenter

vSphere Client nous offre quelques vues globales de linfrastructure virtualise qui sont intressantes pour se donner une ide rapide de la sant des machines htes, sur lesquelles sont excuts les
ESX/ESXi.
Par exemple, nous pouvons obtenir une vue nous fournissant lutilisation des ressources globales dont
dispose le cluster (5.4).
PENAS Cdric

53

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

CLUSTER

Priode de temps analyse

Figure 5.4 Cluster


Nous pouvons galement afficher une vue dun cluster sur laquelle, il y a un listing de toutes les
machines ESX/ESXi (FIG 5.5) disponibles, avec lutilisation mmoire et processeur (en %) qui sont,
malgr tout, les deux ressources les plus importantes au niveau des performances dun systme. Nous
pouvons galement y retrouver le statut de la machine.

CLUSTER

SANTE GLOBALE

Figure 5.5 Cluster & ESX/ESXi


Et pour terminer pratiquement la mme vue, mais cette fois-ci sous forme de graphique avec
laddition des ressources utilises par chaque hte ESX/ESXi (FIG 5.6).

PENAS Cdric

54

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

CLUSTER

Ressources globales du cluster

Figure 5.6 Cluster & ESX/ESXi

5.1.2.3

Observation avec Esxtop 2

Loutil Esxtop nous fournit un certain nombre de compteurs qui nous permettent de monitorer les
ressources du systme. Nous pouvons trs facilement modifier la vue quil nous fournit, grce des
options et nous pouvons galement exporter les donnes dans des fichiers comme, par exemple, .csv .

Figure 5.7 Esxtop


Par dfaut, Esxtop se rafrachit toutes les 5 secondes. Nous pouvons modifier cette valeur en pressant
la touche "s", puis, en spcifiant la nouvelle valeur [secondes].
2.

PENAS Cdric

55

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

s2

Pour obtenir de laide sur les touches disponibles, il suffit de presser la touche "h".
Ce qui nous donnera la liste suivante :
c affiche les compteurs relatifs au CPU
m affiche les compteurs relatifs la RAM
d affiche les compteurs relatifs aux disques
n affiche les compteurs relatifs aux interfaces rseau
v affiche les compteurs relatifs aux disques des VMs
V valable pour les autres vue et permet de ne voir que les VMs
Il existe bien videmment dautres options mais qui sont moins importantes.
Afin de rcuprer toutes les donnes produites par Esxtop, nous pouvons les exporter dans un fichier qui sera lisible avec par exemple Perfmon ou Excel grce la commande suivante :
esxtop -b -d 2 -n 100 > capture.csv

Loption -d dfinit le taux de rafrachissement, ici fix 2 secondes et -n dfinit le nombre ditrations
qui seront effectues, ici 100. Cela nous produira donc une capture de 2 100 = 200[s].

5.2

Processeur (CPU)

Avant de se lancer dans la configuration ou lanalyse des performances dun processeur virtualis, il
convient de comprendre quels sont les diffrents types de virtualisation et quelles sont les consquences
quelles peuvent avoir sur le systme.
La virtualisation nest pas confondre avec lmulation. Sur cette dernire, toutes les instructions
sont excutes par une partie logicielle qui porte le nom dmulateur. Elle permet de pouvoir excuter
du code, qui nest normalement pas fait pour tre lanc sur la machine hte. Par exemple, du code
prvu pour une architecture x86 pourrait trs bien tre excute sur du PowerPC. Par contre, il ne
sagit l nullement de virtualisation, car ce procd ne revient qu crire un logiciel qui mule et
reproduit le comportement de larchitecture de destination, acceptant les mme entres et fournissant
normalement un rsultat similaire.
Contrairement ceci, la virtualisation du CPU possde deux modes dexcution comme nous lavons
dj voqu (2.2.4). Les instructions peuvent tre directement excutes par le processeur physique,
lorsquil sagit dinstructions non privilgies, alors que, dans le cas contraire, la couche de virtualisation prend la main pour les excuter, cette fois ci, par le processeur virtuel.
Il est donc vident quun overhead d la virtualisation ne sera prsent que dans le cas dune excution
dinstruction privilgie.

PENAS Cdric

56

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

5.2.1

Les bonnes pratiques 3

VMware propose galement au niveau de CPU quelques bonnes pratiques respecter, afin doptimiser les performances. Lorsquun problme survient ce niveau du hardware, il faut donc, tout
dabord, vrifier que les diffrents points suivants sont respects :
Toujours activer les Vmware Tools.
Voir section 2.1.6

Disposer de la dernire version hardware compatible avec lESX/ESXi install.


Voir section 2.8

Utiliser la dernire gnration de processeurs qui permettent damliorer les performances grce
la technologie VT (Intel) ou V (AMD).
Voir section 2.2.4.3

Dans la mesure du possible, associer certaines tches un seul vCPU pour viter les
overhead dus au changement de vCPU lors du traitement.

Utiliser le moins de vCPU possible, ne pas mettre plusieurs vCPU pour une application ou
plus particulirement un OS qui naccepte pas le multi-threading.

Ne pas laisser des vCPU inutiliss, car ils consomment de la ressource en excutant lidle loop
de lOS invit.

Toujours contrler si lOS invit supporte plusieurs ou un seul CPU.

Toujours activer lhypertreading sil est disponible (BIOS et ESX/ESXi)

5.2.2

Monitorer le CPU

Nous avons pu voir dans la section 5.1.2.3 quil y a un grand nombre de compteurs disponibles pour
chaque ressource et en particulier pour le CPU. Limportant, ici, est de faire le tri et de bien savoir
lesquels sont importants et permettent de diagnostiquer un ventuel problme des systmes physiques
et virtuels.
VMware nous fournit donc une liste 4 des compteurs, qui daprs eux sont les plus importants et
cest sur cette base que le monitoring des systmes a t ralis.
3. http: // www. vmware. com/ pdf/ Perf_ Best_ Practices_ vSphere4. 0. pdf (p.11-12, 19-22)
4. http://communities.vmware.com/docs/DOC-5240

PENAS Cdric

57

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

Nous avons donc deux compteurs CPU qui se mettent en avant par rapport aux autres :
%RDY qui indique le pourcentage de temps quun groupe ou une VM passe attendre la ressource CPU pour pouvoir excuter ses tches.
%USED qui indique le pourcentage de ressource CPU utilise par un groupe ou une VM.
Ces deux compteurs peuvent bien videmment tre monitorer via vSphere Client et Esxtop.

Figure 5.8 CPU - vSphere Client

Figure 5.9 CPU - Esxtop

PENAS Cdric

58

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

Problmes & Solutions 5

5.2.3

Avec laide et lanalyse des 2 compteurs vus dans la section prcdente, nous pouvons dtecter les
principaux problmes qui ont un lien avec la ressource CPU. Il est vident que nous ne pouvons pas
fournir une liste exhaustive de tous les problmes qui pourraient survenir sur un systme virtualis
mais la liste suivante comporte les 5 problmes qui sont le plus frquemment observs selon VMware :

Saturation du systme hte


Saturation du systme invit
Utilisation dun seul vCPU sur une VM configur en SMP
Faible utilisation du vCPU de linvit
Forte utilisation du CPU physique 0
Nous allons donc expliquer, pour chacun deux, quels sont les causes les plus probables et dans la
mesure du possible donner des solutions explorer pour aboutir une rsolution des problmes.
5.2.3.1

Saturation du systme hte

Symptmes
Le problme de saturation peut tre dtecter grce aux deux compteurs %USED et %RDY. Si
lutilisation de la ressource CPU de lhte est en permanence en dessus des 75% ou que les pics
en dessus des 90% sont trop frquent, alors il existe une saturation de lhte.
Causes
La principale raison pour laquelle peut survenir une saturation du systme hte, est que les VMs
qui tournent dessus demandent plus de ressources que disponible. Plusieurs scnarios peuvent
amener ce problme dont voici les principaux :
Lhte possde un petit nombre de VMs, avec chacune une grande demande en CPU.
Lhte possde un grand nombre de VMs, avec une demande CPU qui peut tre leve ou
faible peu importe.
Solutions
Pour corriger ce problme, nous pouvons envisager plusieurs solutions.
Dans un premier temps, si lhte ESX/ESXi ne peut pas tre mis en cluster, il faut rduire le
nombre de VMs quil possde ou alors en migrer certaines sur un second hte ce qui revient
faire du load balancing manuellement. Il convient bien videmment danalyser au pralable les
compteurs des VMs, afin de dtecter celles qui demandent le plus de ressource CPU.

Si linfrastructure le permet, nous pouvons choisir la solution du load balancing automatique


avec le mcanisme et DRS, mais il faut disposer dun cluster auquel ajouter notre hte qui est
5.

http: // communities. vmware. com/ servlet/ JiveServlet/ download/ 10352-2-28235/


vsphere4-performance-troubleshooting. pdf (p.29-35)

PENAS Cdric

59

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

satur.

Le matriel virtuel que possde une VM a galement une influence directe sur les performances.
Si une VM est configure pour utiliser 3 vCPU alors que lOS ne le supporte pas et bien, ce sera
de la ressource gaspille, puisquen diminuant le nombre de vCPU de la VM nous libreront
de la ressource pour les autres VMs.

Si aucune de ces solutions ne fonctionne, nous pouvons toujours limiter manuellement une
VM en ressource CPU. En effet, il arrive que certaines applications ne soient pas de bonnes
candidates la virtualisation et quelles consomment normment de ressources.
5.2.3.2

Saturation du systme invit

Symptmes
Pareil que pour la saturation de lhte, mais au niveau de la VM. Si le compteur %USED de la
charge CPU dune VM dpasse constamment les 75% ou a trop de pics au dessus des 90% alors
nous pouvons affirmer quune saturation de linvit existe.
Causes
La saturation du systme invit provient du fait que le systme dexploitation ou une des applications qui tournent dessus consomme toute la ressource CPU qui a t fournie la VM par
lhte ESX/ESXi. Cest le cas avec notamment des applications de calculs intensifs qui prennent
toute la ressource disponible.
Solutions
Si la VM ne dispose pas dj du maximum de ressources quil peut lui tre allou, nous pouvons
lui ajouter des vCPU pour autant que le systme dexploitation invit le permette.

Si lapplication, qui cause la saturation du systme invit, le permet, nous pouvons lancer une
seconde VM faisant tourner la mme application et faire du load balancing entre les deux.

Pour certaines applications, il est utile de maintenir jour les versions car certains patchs
peuvent amliorer la comptabilit avec la virtualisation, ce qui est un des problme principal
pour des applications anciennes.
5.2.3.3

Utilisation dun seul vCPU sur une VM configur en SMP

Symptmes
Lorsque quune machine virtuelle est configur avec plusieurs vCPU et que nous observons quun
seul des vCPUs est utilis.
Causes

PENAS Cdric

60

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

Plusieurs raisons peuvent tre la cause de ce problme, mais pour la plupart, il ne sagit que de
problmes de compatibilit ou de mauvaise configuration.
Si nous pouvons observer le vCPU0 travailler seul, alors il se peut que le systme dexploitation
invit ne supporte pas de multiple processeurs. Il faut alors se rfrer la documentation du
systme dexploitation install pour confirmer.

Certains systmes dexploitation permettent dassigner un seul cur une application. Si votre
systme comporte cette fonctionnalit, il faut vrifier que la configuration est correcte.

Enfin, il existe encore beaucoup dapplications qui ne sont pas prvues pour tre virtualises ou
qui ne supporte tout simplement pas le multi-threading. Dans ce cas, il faut se renseigner sur
les mises jour possible ou sur les produits quivalents qui pourraient corriger ces problmes.
Solutions
Le systme dexploitation invit doit tre tudi un minimum avant dtre install et surtout
virtualis. Il faut au moins se renseigner sur la configuration maximale quil peut supporter et
donc configurer les VMs en fonction.

Les documentations des applications qui souhaitent tre virtualises doivent galement tre
parcourues pour sassurer de la compatibilit et se renseigner si lutilisation du CPU est optimis.
5.2.3.4

Faible utilisation des vCPUs de linvit

Symptmes
La faible utilisation dun processeur nest normalement pas un problme mais si elle est coupl
une mauvaise performance dune application, il faut le prendre comme un signal dalarme et
donc investiguer.
Causes
Ce problme peut survenir cause des raisons suivantes :
Le systme de stockage peut avoir un taux de rponse anormalement lev et donc provoquer
une utilisation des CPUs trop faible.

Lapplication peut avoir besoin de systmes externes comme une base de donnes et il se peut,
au mme titre que le stockage, quil y ait un mauvais temps de rponse.

Pour en revenir au nombre de vCPUs, il se peut que lapplication ne soit pas optimise pour
tire profit des tous les vCPUs qui lui ont t allous.
Solutions
PENAS Cdric

61

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

En ce qui concerne le mauvais temps de rponse des systmes externes comme le stockage ou
les bases de donnes, le problme ne vient en gnral pas de lhte ESX/ESXi, ni des VMs
mais plutt dun problme au niveau du rseau ou alors de performances au niveau du systme
en question.

Si le problme vient dune incompatibilit entre lapplication est le nombre de vCPUs, il suffit
juste den enlever et de relancer un test de performances.
5.2.3.5

Forte utilisation du CPU physique 0

Symptmes
La forte utilisation du pCPU0 par rapport aux autres pCPUs sur un systme utilisant le SMP
peut tre dtecte lorsque le pCPU0 a une activit disproportionne par rapport lactivit des
autres.
Causes
Ce problme ne survient en gnral que sur un hte ESX car il a un lien direct avec le Service
Console . En effet, il est rattach au pCPU0 et ne fonctionne que sur celui-ci. Plusieurs agent de
management sexcutent dans le Service Console et donc lutilisation du pCPU0 est fortement
lie avec lactivit des ces agents.
Il est vident que cette forte utilisation du pCPU0 a un impacte sur les performances globales
de lESX car il sagit de ressource en moins pour les VMs.
Solutions
Pour corriger ce problmes, nous pouvons reduire le nombre dagents en arrtant tous ceux qui
ne sont pas indispensable. Mais il faut tudier cette solution au cas par cas, car il est impossible
de prvoir lavance ceux qui ne seront pas utiliss.

5.2.4
5.2.4.1

Configurations avec vSphere Client


Activer lassistance hardware VT (Intel) 6

1. Slectionner la VM configurer
2. Clique droit -> Edit virtual machine settings -> Options -> CPU/MMU Virtualization.
3. Faire le choix entre les options suivantes :
Automatic laisse ESX choisir la meilleure option. La faon dont le choix est fait dpend
fortement du type de processeur. On retrouve une grille de ces choix ladresse suivante
http://communities.vmware.com/docs/DOC-9882.

6. http: // www. vmware. com/ pdf/ Perf_ Best_ Practices_ vSphere4. 0. pdf (p.22)

PENAS Cdric

62

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

Figure 5.10 Options Intel VT


Use software for instruction set and MMU virtualization dsactive lassistance hardware pour le CPU et pour le MMU. Il y a donc utilisation de la Binary Translation dans la
mesure du possible.

R VT-x/AMD-VTM for instruction set virtualization and software for


Use Intel
MMU virtualization active lassistance hardware VT-x si elle est disponible.

R VT-x/AMD-VTM for instruction set virtualization and Intel


R EPT/AMD
Use Intel
RVI for MMU virtualization active lassistance hardware VT-x et celle pour le MMU, si
elles sont disponibles.

Les choix de lutilisateur qui a cr une machine virtuelle, ainsi que les choix dESX/ESXi peuvent
tre observs partir dune fichier de logs aprs avoir dmarr au moins une fois la VM ( /vmfs/volumes/datastore1/nom_machine_virtuelle/vmware.log ). Ainsi nous obtenons quelque chose
qui ressemble ceci :


Jun
Jun
Jun
Jun
Jun



25
25
25
25
25

16:10:52.536:
16:10:52.536:
16:10:52.536:
16:10:52.536:
16:10:52.536:

vmx|
vmx|
vmx|
vmx|
vmx|

MONITOR MODE: allowed modes


: BT HV
MONITOR MODE: user requested modes : BT HV HWMMU
MONITOR MODE: guestOS preferred modes: HWMMU HV BT
MONITOR MODE: filtered list
: HV BT
HV Settings: virtual exec = hardware; virtual mmu = software

Extrait de vmware.log
La premire ligne nous donne les modes disponibles (BT = Binary Translation, HV = Intel VT).
La deuxime ligne sont les choix fait par lutilisateur sur la VM par ordre de priorit.
La troisime ligne sont les prfrences de lOS invit.
PENAS Cdric

63

26 juin 2010

CHAPITRE 5. ANALYSE & OPTIMISATION DES PERFORMANCES

La cinquime ligne est ce qui est effectivement appliqu.


5.2.4.2

Activer lhyperthreading 7

1. Sassurer que le systme supporte la technologie hyperthreading.

2. Activer lhyperthreading dans le BIOS. Le nom utilis par les constructeurs peut tre Logical
Processor ou alors tout simplement Enable Hyperthreading .

3. Activer lhyperthreading sur lESX/ESXi.


Dans vSphere Client, cliquer sur lhte ESX/ESXi puis sur longlet Configuration
Cliquer sur Processors -> Properties
Activer loption Hyperthreading

7. http: // www. vmware. com/ pdf/ vsphere4/ r40/ vsp_ 40_ resource_ mgmt. pdf (p.19)

PENAS Cdric

64

26 juin 2010

CHAPITRE 6. LABO TD

Labo TD

6.1

Serveur Nagios

6.1.1

Nagios

Linstallation de lapplication Nagios sur le serveur 10.1.1.5 du laboratoire a t raliss grce la


mthode dcrite au point 4.4.1.
La connexion linterface web se fait grce un navigateur, en entrant ladresse http://10.1.1.
5/nagios3.
6.1.1.1

Problmes rencontrs

Aprs linstallation, la configuration de Nagios peut tre vrifie avec la commande suivante :
sudo nagios3 v /etc/nagios3/nagios.cfg

Ce qui a mis en vidence les 2 erreurs suivantes :


Le fichier resource.cfg ne peut pas tre lu
Le chemin /var/lib/nagios3/spool/checkresults est invalide
Ces deux problmes sont dus aux droits sur ces fichiers/dossiers. Pour les corriger, il suffit deffectuer
les manipulations suivantes :
sudo chown root :root resource.cfg

sudo chmod o+r resource.cfg

Ce qui fixe lowner et le groupe du fichier root et donne la permission de lecture tout le
monde.
sudo chmod uog+rwx /var/lib/nagios3

sudo chmod uog+rwx /var/lib/nagios3/spool

PENAS Cdric

65

26 juin 2010

CHAPITRE 6. LABO TD

sudo chmod uog+rwx /var/lib/nagios3/spool/checkresults

Ce qui donne tous les droits sur ces dossiers/fichiers.

6.1.2

NTP 1

Afin que les heures prsentes sur les logs de Nagios soient toujours justes, il a fallu installer et
configurer un client NTP sur le serveur Nagios (10.1.1.5), qui se synchronisera avec le serveur NTP de
lUNIGE.
Le client, par dfaut sur Ubuntu, est ntpdate et cest par consquent celui qui a t install.
Il faut ensuite le configurer pour quil aille chercher les infos lUNIGE, en ditant /etc/default/ntpdate , comme ceci :


NTPDATE_USE_NTP_CONF=no
NTPSERVERS="129.194.184.1"

Contenu de ntpdate
A ct de a, il faut un dmon qui lance la synchronisation intervalle rgulier. Cest la tche de
ntp , qui sinstalle avec la commande suivante :
sudo aptget install ntp

Puis, galement lui indiquer le serveur NTP dans le fichier /etc/ntp.conf :




server 129.194.184.1

Contenu de ntp.conf
Et pour terminer redmarrer le service :
sudo /etc/init.d/ntp restart

1. http://blog.nicolargo.com/2010/03/installation-dun-serveur-ntp-sous-ubuntu.html

PENAS Cdric

66

26 juin 2010

CHAPITRE 7. STAGE AU CTI

Stage au CTI

7.1

Migration vCenter

Le premier travail effectu au CTI a t la migration de vCenter dun Microsoft Windows Server
2003 32bits sur un Microsoft Windows Server 2008 64bits.

CORNE

NEWCORNE

Changement de
machine

Windows Server 2008


IP: 10.y.y.y

Windows Server 2003


IP: 10.x.x.x
RAM: 32GB

RAM: 32GB

RAM utilise: 4GB

RAM utilise: 32GB

Figure 7.1 Migration vCenter


Ce changement a t dcid principalement pour permettre lutilisation de la totalit de la mmoire
RAM disponible, car Windows Server 2003 ne prenait en compte que 4GB au maximum.
Nous avons donc fait, dans lordre, les tapes suivantes :
1. Installation de vCenter sur la nouvelle machine NEWCORNE, en suivant la procdure dcrite
en 4.1.5.
2. Installation de vSphere Client sur NEWCORNE.
3. Dsactivation des services VMware sur CORNE, ainsi que larrt de la machine.
4. Renommer NEWCORNE en CORNE.
5. Modification de lIP du nouveau CORNE de 10.y.y.y en 10.x.x.x.
Une fois le nouveau serveur prt, il ne nous reste plus qu lancer vSphere Client pour se connecter au
nouveau vCenter.
La partie de configuration de vCenter se fait en 3 tapes :
1. Ajout dun Data Center nomm Production.
2. Ajout dun cluster par zone de production.
3. Ajout des htes ESX dans leurs clusters correspondants.

PENAS Cdric

67

26 juin 2010

CHAPITRE 7. STAGE AU CTI

Le point important, respecter ici, est de ne pas activer le HA, ni le DRS au moment de la cration
des clusters, mais une fois que toutes les machines ESX ont t ajoutes correctement, afin quelles
puissent tre configures toutes en mme temps.

7.2

CPU

Lors du stage, certains tests ont pu tre effectu au niveau du CPU.


Premirement, comparer les implications du choix du systme dexploitation invit, sur la configuration vCPU dune machine virtuelle.
Deuximement, utiliser un logiciel de benchmarking afin de comparer les performances entre un systme
dexploitation natif et deux autres qui ont t virtualiss.

7.2.1

Choix du systme dexploitation

Comme nous lavons dj expliqu, le choix du systme dexploitation que nous dsirons virtualiser
a une importance toute particulire sur les performances CPU.
En effet, certains systmes sont limits et ne peuvent pas supporter autant de CPU que lon souhaiterait.
Pour illustrer ceci, nous avons install Microsoft Windows Server 2003 et un Microsoft Windows Server 2008 . Les tests ont t effectus sur les IBM Blade HS21 donc il y a 8 cores disposition.
Deux VMs ont t cres avec chacune huit vCPUs. Sachant que le premier OS, qui est galement
le plus ancien, ne gre que quatre CPU au maximum, nous pouvons facilement nous douter du rsultat. Par contre, le second les gre entirement.

Figure 7.2 Windows 2003

PENAS Cdric

68

26 juin 2010

CHAPITRE 7. STAGE AU CTI

Figure 7.3 Windows 2008

7.2.2

Benchmarking

En ce qui concerne le benchmarking, VMware recommande certains logiciels, notamment les logiciels de PassMark 1 parmi lesquels se trouvent le trs clbre BurnInTest .
Pour effectuer nos tests, nous avons utilis PerformanceTest 7.0 en version dvaluation.
Nous avons donc lanc ce benchmark sur trois systmes diffrents sur des blades IBM HS21 :
1. Windows Server 2008 en natif
2. Windows Server 2008 virtualis
3. Windows Server 2003 virtualis
Voici les rsultats obtenus en ce qui concerne les performances CPU :

Integer (Op/s)
Floating (Op/s)
Prime (P/s)
Multimedia (Mat/s)
Compression (Oct/s)
Cryptage (Oct/s)

Win 2008
3261.1 M
4898.2 M
1423.0 K
26.8 M
11737.2 K
33.5 M

VM (Win 2008)
3085.5 M
4700.6 M
1380.0 K
26.2 M
11445.3 K
32.3 M

VM (Win 2003)
508.1 M
1976.6 M
1073.1 K
8.8 M
5879.0 K
16.7 M

Figure 7.4 Rsultats du banchmarking


Ce que nous pouvons remarquer, cest que la diffrence entre Windows Server 2008 en natif ou
virtualis est quasiment inexistante. Alors que si nous observons la machine avec Windows Server
2003, les performances chutes dune faon assez impressionnante. Cest la une bonne illustration de
limportance du choix de lOS selon la configuration quon souhaite attribuer une machine virtuelle.
1. http://www.passmark.com/products/index.htm

PENAS Cdric

69

26 juin 2010

CHAPITRE 7. STAGE AU CTI

La conclusion que nous pouvons tirer de ce test, est que la virtualisation pratique avec prudence
et avec des choix rflchis, fournie des performances proche dun systme natif. au contraire, si elle est
utilise sans avoir pris la peine de se renseigner sur les bonnes pratiques mettre ne place, elle amne
des performances plus que dsastreuses.

7.3

Hitachi : Replication True Copy

Nous avons pu voir en 3.2.2 que le systme de stockage Hitachi, dont dispose le CTI, permet davoir
des performances leves mais ct de cela, ces baies permettent de mettre en place un mcanisme
appel Replication True Copy .
Il a t tudi et mis en place durant le stage et donc, nous allons en expliquer les principes et la
configuration ralise.

7.3.1

Problmatique

En analysant linfrastructure de stockage 3.2.2 utilise pour la virtualisation avec VMware, nous
pouvons vite nous rendre compte que les baies Hitachi et le rseau SAN sont des lments principaux
et surtout indispensables de cette infrastructure. A partir de cet instant, il devient obligatoire de se
demander ce qui se passerait si la baie de stockage, o se situent les fichiers des diffrentes VMs, venait
avoir un problme la rendant totalement indisponible ?
VMware cluster
ESX 2

ESX 1
VM 1

VM 2

VM 4

VM 5

x12
...

VM 6

VM 3

Hitachi USP-V

Figure 7.5 Problmatique SAN


Il y a bien videmment de la technologie RAID lintrieur mme dune baie qui permet de prvenir
un crash du disque, mais rien ne protge contre le crash de la baie entire. Cest ici quentre en jeu
ce mcanisme de True Copy , qui permet de faire de la duplication/synchronisation de LUNs entre
PENAS Cdric

70

26 juin 2010

CHAPITRE 7. STAGE AU CTI

baies, afin de sauvegarder tous les fichiers utiles des VMs.


Ainsi, lorsque la baie principale, o se trouvent les fichiers des VMs, venait tre indisponible pour
une raison ou une autre, ladministrateur pourrait trs facilement basculer sur la baie secondaire et
faire repartir les VMs.

7.3.2

Mise en place

Afin de mettre en place ce mcanisme, il nous faut quelques pr-requis au niveau hardware et software.
Tout dabord, il nous faut obligatoirement deux baies (de mme type), afin quil y ait un sens
cette installation.
Ensuite il faut prvoir sur la baie secondaire autant de LUNs que nous souhaitons sauvegarder et
en plus 2 LUNs supplmentaires par baie qui serviront de command device qui est une spcificit
du mcanisme. Ces Command Device sont des LUNs spciaux, qui permettent de transmettre des
commandes la baie via un logiciel. Et pour terminer, deux machines virtuelles qui nous serviront
installer ce fameux logiciel Hitachi.

VMware cluster
ESX 1

ESX 3

ESX 2

ESX 4

ESX X

VM 1

VM 4

VM 7

VM 10

VM 13

VM 2

VM 5

VM 8

VM 11

VM 14

VM 6

VM 9

VM 12

VM de
contrle 2

VM de
contrle 1

CMD

CMD

CMD

CMD

Hitachi True copy


P-VOL

S-VOL
Hitachi True copy

S-VOL

P-VOL

Hitachi USP-V
P-VOL => R/W
S-VOL => R

Hitachi USP-V
P-VOL => R/W
S-VOL => R

Figure 7.6 Replication True Copy


Pour rsumer, nous avons besoin de :
Deux baies Hitachi USP-V
4 LUNs de Command Device
X LUNs de backup sur la baie secondaire

PENAS Cdric

71

26 juin 2010

CHAPITRE 7. STAGE AU CTI

2 VMs pour faire tourner le logiciel Hitachi

7.3.3

Fonctionnement

Le principe de fonctionnement de ce mcanisme de Replication True Copy est assez simple


comprendre mais un peu plus compliqu administrer.
Nous avons donc un certain nombre de VMs qui fonctionnent en utilisant un LUN de la baie principale. Ce LUN, nous voulons le dupliquer sur la baie secondaire afin de faire un backup des fichiers des
VMs. Dans la terminologie Hitachi, le LUN principal qui sera dupliqu, se nomme P-VOL (Primary
Volume) et le LUN de backup le S-VOL (Secondary Volume). Le P-VOL se trouve toujours en mode
Read/Write, puisque cest celui qui est utilis par les VMs et le S-VOL est toujours en mode Read Only.
Ces deux LUNs formeront ce qui est appel "PAIR", qui est un lien ou une paire en franais. Cest ce
lien qui dfinira la synchronisation entre les LUNs. Il est dfini par les deux LUNs synchroniser et
par le sens du backup.
Il suffira donc de remplir correctement deux fichiers de configuration par paires, qui sont en fait des
instances Horcm , qui sadresseront chacune une baie, et de crer la paire grce une commande
HORCM. Ensuite le reste du travail se fera automatiquement.

7.3.4
7.3.4.1

Exemple concret
Cration dune paire de synchronisation
VMware cluster
ESX 1

ESX 2

ESX 3

ESX 4

ESX Z

VM 1

VM 4

VM 7

VM 10

VM 13

VM 2

VM 5

VM 8

VM 11

VM 14

VM 3

VM 6

VM 9

VM 12

ESX Y

ESX X

VM de
contrle 2

VM de
contrle 1

03:99

04:10

0B:87

0C:40

CMD

CMD

CMD

CMD

02:76

0B:86

Hitachi USP-V NHP


SN78371

Hitachi USP-V ACA


SN78362

Figure 7.7 Situation de dpart


Nous sommes dans la situation de dpart o un cluster dESX utilise un LUN sur la baie USP-V
ACA. Nous souhaitons donc crer un backup/synchronisation de ce LUN sur la baie USP-V NHP.

PENAS Cdric

72

26 juin 2010

CHAPITRE 7. STAGE AU CTI

Nous avons donc disposition :


Deux VMs de contrle sur deux ESX diffrents, avec le logiciel HORCM dHitachi install.
Deux LUNs de Command Device sur chaque baie qui sont monts en Raw Device Mapping (2.3.4)
sur les VMs.
Un LUN principal sur la baie ACA et un LUN de backup sur la baie NHP.
La premire chose faire est de crer et configurer les instances HORCM sur les VMs de contrle.
Il y aura en tout quatre fichiers de configuration qui se trouvent dans /etc/ . Chacun de ces fichiers
sera une instance HORCM et elles fonctionnent par paires, cest pourquoi il y a deux fichiers de conf
par VM :
horcm0.conf et horcm1.conf sur la VM de contrle 1, qui grent respectivement les Commande
Device de la baie ACA (03 :99) et NHP (0B :87).
horcm10.conf et horcm11.conf sur la VM de contrle 2, qui grent respectivement les Commande
Device de la baie ACA (04 :10) et NHP (0C :40).

/etc/horcm0.conf
HORCM_MON
#ip_address service
localhost 7000

/etc/horcm1.conf

poll(10ms)
timeout(10ms)
1000
3000

HORCM_CMD
# serial 78362 USP-V Acacias
#dev_name
dev_name
\\.\CMD-78362:/dev/sd/

dev_name

HORCM_MON
#ip_address service
localhost 7001

poll(10ms)
1000

timeout(10ms)
3000

HORCM_CMD
# serial 78371 USP-V NHP
#dev_name
dev_name
\\.\CMD-78371:/dev/sd/

dev_name

HORCM_LDEV
#dev_group
dev_name
synchro1
vm1

Serial# CU:LDEV(LDEV#) MU#


78362
02:76

HORCM_LDEV
#dev_group dev_name
synchro1
vm1

Serial# CU:LDEV(LDEV#) MU#


78362
0B:86

HORCM_INST
#dev_group ip_address
synchro1
localhost

service
7001

HORCM_INST
#dev_group ip_address
synchro1
localhost

service
7000

ESX X

ESX Y
VM de
contrle 1

VM de
contrle 2

03:99

04:10

0B:87

0C:40

CMD

CMD

CMD

CMD

02:76

0B:86

Hitachi USP-V ACA


SN78362

Hitachi USP-V NHP


SN78371

Figure 7.8 HORCM sur VM 1


Les fichiers horcm10.conf et horcm11.conf, qui se trouveront sur la VM de contrle 2 seront identiques horcm0.conf et horcm1.conf, part quil faudra changer les identifiants des Command Device
en 04 :10 pour horcm10.conf et en 0C :40 pour horcm11.conf.
Dtaillons prsent les deux fichiers de conf horcm0 et horcm1 ligne par ligne.

PENAS Cdric

73

26 juin 2010

CHAPITRE 7. STAGE AU CTI


/etc/horcm0.conf
HORCM_MON
#ip_address
localhost

service
7000

poll(10ms)
1000

HORCM_CMD
# serial 78362 USP-V Acacias
#dev_name
dev_name
\\.\CMD-78362:/dev/sd/

timeout(10ms)
3000

dev_name

11

13

HORCM_LDEV
#dev_group
synchro1

dev_name Serial#
vm1
78362

CU:LDEV(LDEV#) MU#
02:76

15

17

HORCM_INST
#dev_group
synchro1


ip_address
localhost

service
7001

horcm0.conf
Ligne 3-5 : On dfinit ici linstance du fichier courant, donc dans notre cas, linstance horcm0
grce son IP et le port qui sera utilis.
Ligne 7-10 : On dfinit ici le chemin daccs du Command Device, qui est mont sur la VM.
Ligne 12-14 : On dfinit ici le dpart de la paire de synchronisation en spcifiant un nom de
groupe auquel appartient la paire (au choix), nom de LUN (au choix), numro de srie de la baie,
identifiant du LUN.
Ligne 16-18 : On dfinit ici la deuxime instance se trouvant sur la VM 1, grce au groupe de la
paire, son IP et le port quelle utilise.
Le horcm1.conf sera configur de la mme faon en gardant bien lesprit quil va grer le Command
Device lautre bout de la paire de synchronisation, qui se trouve sur la baie NHP.

/etc/horcm1.conf

HORCM_MON
#ip_address
localhost

service
7001

poll(10ms)
1000

timeout(10ms)
3000

10

12

HORCM_CMD
# serial 78371 USP-V NHP
#dev_name
dev_name
\\.\CMD-78371:/dev/sd/
HORCM_LDEV
#dev_group

dev_name Serial#

PENAS Cdric

dev_name

CU:LDEV(LDEV#) MU#

74

26 juin 2010

CHAPITRE 7. STAGE AU CTI

14

16

18

synchro1
HORCM_INST
#dev_group
synchro1


vm1

78371

ip_address
localhost

0B:86

service
7000

horcm1.conf
A prsent que les fichiers de configuration sont prts sur les deux VMs, nous allons pouvoir crer
la paire de synchronisation. Il faut peut-tre juste rappeler que les instances 10 et 11 ne seront pas
utilises, car elles serviront seulement dans le cas o la VM de contrle 1 serait indisponible.
VMware cluster
ESX 1

ESX X

ESX 2

ESX 3

ESX 4

ESX Z

VM 1

VM 4

VM 7

VM 10

VM 13

VM 2

VM 5

VM 8

VM 11

VM 14

VM 3

VM 6

VM 9

VM 12

ESX Y

Instance 10
Instance 11

Instance 0
Instance 1
VM de
contrle 1

VM de
contrle 2

03:99

04:10

0B:87

0C:40

CMD

CMD

CMD

CMD

P-VOL

S-VOL

02:76

0B:86

Paire de synchronisation
Hitachi True Copy

Hitachi USP-V NHP


SN78371
S-VOL -> R

Hitachi USP-V ACA


SN78362
P-VOL -> R/W

Figure 7.9 Synchronisation


Nous allons donc voir toutes les commandes taper depuis la VM 1 :
1. Plaons-nous tout dabord dans le bon rpertoire
cd /HORMC/usr/bin

2. Dmarrons les instances 0 et 1


./horcmstart.sh 0 1

3. Cration de la paire de synchronisation


./paircreate -ITC0 -g synchro1 -vl -f never

PENAS Cdric

75

26 juin 2010

CHAPITRE 7. STAGE AU CTI

4. Vrifions que la paire a bien t cre


./pairdisplay -ITC0 -g synchro1 -fcx

Nous devrions obtenir quelque chose qui ressemble ce qui suit :


Group

PairVol(L/R) (Port#,TID, LU), Seq#, LDEV#.P/S, Status, Fence, \%, P-LDEV# M

synchro1 nom_ESX(L)
synchro1 nom_ESX(R)


(CL5-B-9, 0, 1) 78362 276.P-VOL


(CL5-B-10, 0, 2) 78371 b86.S-VOL

PAIR
PAIR

NEVER
NEVER

100
100

b86
276

Ce qui est important de vrifier dans ce retour, cest la colonne status qui nous donne le statut de la
paire, et la colonne %, qui nous indique le taux de synchronisation. Nous remarquons galement que
le premier LUN 02 :76 est en P-VOL (Primary-Volume) pour indiquer la source et que le second LUN
0B :86 est en S-VOL (Secondary-Volume) pour indiquer la destination.
Nous sommes donc prsent dans la situation dcrite sur limage (FIG 7.9)

PENAS Cdric

76

26 juin 2010

CHAPITRE 8. CONCLUSION

Conclusion

Comme nous avons pu le voir tout au long de ce travail de diplme, la virtualisation reste un
domaine complexe ds quil sagit de comprendre tous les mcanismes qui entrent en jeu. Les notions
qui y sont rattaches sont galement nombreuses et ne sont pas toujours simples saisir, ce qui ne
facilite pas lapprentissage.
Nanmoins, la virtualisation a tendance se populariser et devenir indispensable pour ceux qui
en ont compris les avantages et qui savent la matriser. Dans certains domaines du monde professionnel, on en arrive presque navoir plus que des systmes virtualiss et, cest l, tout lenjeu de
comprendre et savoir comment configurer ces systmes pour une optimisation parfaite.
Dans ce projet de diplme, je pense avoir fait le tour des principaux outils de management/monitoring (Nagios, vCenter, Esxtop) et des points importants respecter lors de lutilisation de VMware
vSphere4 , essentiellement au niveau du CPU. Il est vident que ce domaine est en perptuelle volution et, par consquent, de nouveaux outils et de nouvelles dcouvertes voient le jour quotidiennement.
Ce projet maura galement permis de pouvoir travailler et me familiariser avec du matriel professionnel grce laide de M. Christian DELACOMBAZ (CTI), que je tiens encore remercier. Ainsi,
mes connaissances, des produits VMware et de matriels professionnels, tels que les Hitachi USPV et les IBM BladeCenter H , se sont vue enrichies.
Cette tude sera sans doute un bon point de dpart pour les personnes dsirant manager et optimiser une infrastructure virtualise, afin dacqurir les bases importantes.

PENAS Cdric

77

26 juin 2010

ANNEXE A. ANNEXES

A
A.1
A.1.1

Annexes
Configuration Nagios du labo
Priodes de temps



###############################################################################
# timeperiods.cfg
###############################################################################

10

12

14

16

18

20

22

24

26

28

# This defines a timeperiod where all times are valid for checks,
# notifications, etc. The classic "24x7" support nightmare. :-)
define timeperiod{
timeperiod_name 24x7
alias
24 Hours A Day, 7 Days A Week
sunday
00:00-24:00
monday
00:00-24:00
tuesday
00:00-24:00
wednesday
00:00-24:00
thursday
00:00-24:00
friday
00:00-24:00
saturday
00:00-24:00
}
# Here is a slightly friendlier period during work hours
define timeperiod{
timeperiod_name workhours
alias
Standard Work Hours
monday
09:00-17:00
tuesday
09:00-17:00
wednesday
09:00-17:00
thursday
09:00-17:00
friday
09:00-17:00
}

30

32

34

36

38

40

# The complement of workhours


define timeperiod{
timeperiod_name nonworkhours
alias
Non-Work Hours
sunday
00:00-24:00
monday
00:00-09:00,17:00-24:00
tuesday
00:00-09:00,17:00-24:00
wednesday
00:00-09:00,17:00-24:00
thursday
00:00-09:00,17:00-24:00
friday
00:00-09:00,17:00-24:00

PENAS Cdric

78

26 juin 2010

ANNEXE A. ANNEXES

saturday
}

42

44

46

48

50

# This one is a favorite: never :)


define timeperiod{
timeperiod_name never
alias
Never
}
# end of file


A.1.2

00:00-24:00

Contacts & Groupes


###############################################################################
# contacts.cfg
###############################################################################

10

12

###############################################################################
###############################################################################
#
# CONTACTS
#
###############################################################################
###############################################################################

14

# In this simple config file, a single contact will receive all alerts.
16

18

20

22

24

26

define contact{
contact_name
penas
alias
Penas Cedric
service_notification_period 24x7
host_notification_period
24x7
service_notification_options w,u,c,r
host_notification_options
d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email
cedric.penas-villamisar@etu.hesge.ch
}

28

30

32

34

36

###############################################################################
###############################################################################
#
# CONTACT GROUPS
#
###############################################################################
###############################################################################

38

40

# We only have one contact in this simple configuration file, so there is


# no need to create more than one contact group.

42

define contactgroup{

PENAS Cdric

79

26 juin 2010

ANNEXE A. ANNEXES

contactgroup_name
alias
members
}

44

46

A.1.3
A.1.3.1

10

12

14

Htes
Firewall Clavister


define service {
use
generic-service
host_name
clavister
service_description Test DHCP
check_command
check_dhcp
}



#
#
#
#
#

Serveurs DNS


define host{
use
host_name
alias
display_name
address
parents
}


A.1.3.3


# a host definition for the gateway of the default route
define host {
use
generic-host
host_name clavister
alias
Routeur_Firewall vers lexterieur
address
10.1.0.1
parents
router_unige
}

A.1.3.2
1

admins
Nagios Administrators
penas


generic-host
dns
Serveur DNS
Serveur DNS
129.194.184.84
clavister

; Name of host template$

Serveurs de fichiers


A simple configuration file for monitoring the local host


This can serve as an example for configuring other servers;
Custom services specific to this host are added here, but services
defined in nagios2-common_services.cfg may also apply.

10

12

14

define host{
use
host_name
alias
display_name
address
parents
}

PENAS Cdric

generic-host
; Name of host template$
fileserver1
Serveur de fichiers1
Serveur de fichiers1
10.1.1.1
clavister

80

26 juin 2010

ANNEXE A. ANNEXES

16

18

20

22

define host{
use
host_name
alias
display_name
address
parents
}

generic-host
; Name of host template to use
fileserver2
Serveur de fichiers2
Serveur de fichiers2
10.1.1.2
clavister

24

26

# Define a service to check the disk space of the root partition


# on the local machine. Warning if < 20% free, critical if
# < 10% free space on partition.

28

30

32

34

36

38

40

define service{
use
host_name
service_description
check_command
}
define service{
use
host_name
service_description
check_command
}


A.1.3.4
1

11

13


#
#
#
#
#

generic-service
; Name of servi$
fileserver1
Espace disque
check_all_disks!20%!10%

generic-service
; Name of servi$
fileserver2
Espace disque
check_all_disks!20%!10%


Serveur Nagios


A simple configuration file for monitoring the local host


This can serve as an example for configuring other servers;
Custom services specific to this host are added here, but services
defined in nagios2-common_services.cfg may also apply.

define host{
use
generic-host
host_name
nagios
alias
Serveur Nagios
display_name
Serveur Nagios
address
127.0.0.1
parents
clavister
}

; Name of host template to use

15

17

# Define a service to check the disk space of the root partition


# on the local machine. Warning if < 20% free, critical if
# < 10% free space on partition.

19

21

23

25

#define
#
#
#
#
#

service{
use
host_name
service_description
check_command
}

PENAS Cdric

generic-service
; Name of service template to use
nagios
Disk Space
check_all_disks!20%!10%

81

26 juin 2010

ANNEXE A. ANNEXES

27

29

31

33

35

37

# Define a service to check the number of currently logged in


# users on the local machine. Warning if > 2 users, critical
# if > 5 users.
define service{
use
host_name
service_description
check_command
}

generic-service
nagios
Current Users
check_users!2!5

; Name of service template to use

39

41

43

45

47

49

# Define a service to check the number of currently running procs


# on the local machine. Warning if > 250 processes, critical if
# > 400 processes.
define service{
use
host_name
service_description
check_command
}

generic-service
nagios
Total Processes
check_procs!250!400

; Name of service template to use

51

53

# Define a service to check the load on the local machine.


55

57

59

61

define service{
use
host_name
service_description
check_command
}


A.1.3.5
1

Imprimante


define host{
use
host_name
alias
display_name
address
parents
}


A.1.3.6

generic-service
; Name of service template to use
nagios
Current Load
check_load!5.0!4.0!3.0!10.0!6.0!4.0


generic-host
printer
Imprimante A408
Imprimante A408
10.1.0.22
clavister

; Name of host template$

Routeur UNIGE


define host{
use
host_name

PENAS Cdric


generic-host
router_unige

; Name of host template$

82

26 juin 2010

ANNEXE A. ANNEXES

alias
display_name
address
}

A.1.3.7

Serveur Web


define host{
use
host_name
alias
display_name
address
parents
clavister
}


A.1.4

Routeur UNIGE
Routeur UNIGE
129.194.184.1


generic-host
web
Serveur Web
Serveur Web
129.194.184.80

; Name of host template$

Groupes dhtes


# Some generic hostgroup definitions

# A simple wildcard hostgroup


define hostgroup {
hostgroup_name all
alias
Tous les equipements et serveurs
members
*
}

11

13

define hostgroup {
hostgroup_name lan
alias
Equipements du reseau LAN du labo
members
nagios, fileserver1, fileserver2, clavister, printer
}

15

17

19

define hostgroup {
hostgroup_name dmz
alias
DMZ
members
web, dns
}

21

23

25

define hostgroup {
hostgroup_name unige
alias
Reseau UNIGE
members
router_unige
}

27

33

# A list of your web servers


#define hostgroup {
#
hostgroup_name http-servers
# alias
HTTP servers
# members
localhost
#
}

35

#define hostgroup {

29

31

PENAS Cdric

83

26 juin 2010

ANNEXE A. ANNEXES

37

39

41

43

45

47

#
hostgroup_name ssh-servers
# alias
SSH servers
# members
localhost
#
}
# nagios doesnt like monitoring hosts without services, so this is
# a group for devices that have no other "services" monitorable
# (like routers w/out snmp for example)
#define hostgroup {
#
hostgroup_name ping-servers
# alias
Test du ping pour tous
# members
*
#
}


A.1.5

Services



# check all is alive
#define service {
# hostgroup_name all
# service_description ISALIVE
# check_command
check-router-alive_4
# use
generic-service
# }

10

12

14

16

# check that web services are running


#define service {
#
hostgroup_name
http-servers
#
service_description
HTTP
# check_command
check_http
#
use
generic-service
# notification_interval
0 ; set > 0 if you want to be renotified
#}

18

20

22

24

26

28

30

32

34

# check that ssh services are running


#define service {
#
hostgroup_name
ssh-servers
#
service_description
SSH
# check_command
check_ssh
#
use
generic-service
# notification_interval
0 ; set > 0 if you want to be renotified
#}
# check that ping-only hosts are up
#define service {
#
hostgroup_name
ping-servers
#
service_description
PING
# check_command
check_ping!100.0,20%!500.0,60%
#
use
generic-service
# notification_interval
0 ; set > 0 if you want to be renotified
#}


PENAS Cdric

84

26 juin 2010

ANNEXE A. ANNEXES

A.2
1

11

13

15

17

19

21

23

25

27

29

31

33

35

37

Exemple de greffon Nagios


/*****************************************************************************
*
* Nagios check_ping plugin
*
* License: GPL
* Copyright (c) 2000-2007 Nagios Plugins Development Team
*
* Description:
*
* This file contains the check_ping plugin
*
* Use the ping program to check connection statistics for a remote host.
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*****************************************************************************/

const char *progname = "check_ping";


const char *copyright = "2000-2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include
#include
#include
#include

"common.h"
"netutils.h"
"popen.h"
"utils.h"

39

41

43

45

#define WARN_DUPLICATES "DUPLICATES FOUND! "


#define UNKNOWN_TRIP_TIME -1.0 /* -1 seconds */
enum {
UNKNOWN_PACKET_LOSS = 200, /* 200% */
DEFAULT_MAX_PACKETS = 5
/* default no. of ICMP ECHO packets */
};

47

49

51

53

int process_arguments (int, char **);


int get_threshold (char *, float *, int *);
int validate_arguments (void);
int run_ping (const char *cmd, const char *addr);
int error_scan (char buf[MAX_INPUT_BUFFER], const char *addr);
void print_usage (void);

PENAS Cdric

85

26 juin 2010

ANNEXE A. ANNEXES

void print_help (void);


55

57

59

61

63

65

67

int display_html = FALSE;


int wpl = UNKNOWN_PACKET_LOSS;
int cpl = UNKNOWN_PACKET_LOSS;
float wrta = UNKNOWN_TRIP_TIME;
float crta = UNKNOWN_TRIP_TIME;
char **addresses = NULL;
int n_addresses = 0;
int max_addr = 1;
int max_packets = -1;
int verbose = 0;
float rta = UNKNOWN_TRIP_TIME;
int pl = UNKNOWN_PACKET_LOSS;

69

char *warn_text;
71

73

75

77

79

81

83

85

int
main (int argc, char **argv)
{
char *cmd = NULL;
char *rawcmd = NULL;
int result = STATE_UNKNOWN;
int this_result = STATE_UNKNOWN;
int i;
setlocale (LC_ALL, "");
setlocale (LC_NUMERIC, "C");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);

87

89

91

addresses = malloc (sizeof(char*) * max_addr);


addresses[0] = NULL;
/* Parse extra opts if any */
argv=np_extra_opts (&argc, argv, progname);

93

95

97

99

if (process_arguments (argc, argv) == ERROR)


usage4 (_("Could not parse arguments"));
/* Set signal handling and alarm */
if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) {
usage4 (_("Cannot catch SIGALRM"));
}

101

103

105

107

/* If ./configure finds ping has timeout values, set plugin alarm slightly
* higher so that we can use response from command line ping */
#if defined(PING_PACKETS_FIRST) && defined(PING_HAS_TIMEOUT)
alarm (timeout_interval + 1);
#else
alarm (timeout_interval);
#endif

109

PENAS Cdric

86

26 juin 2010

ANNEXE A. ANNEXES

for (i = 0 ; i < n_addresses ; i++) {


111

113

115

117

119

121

123

125

127

129

#ifdef PING6_COMMAND
if (address_family != AF_INET && is_inet6_addr(addresses[i]))
rawcmd = strdup(PING6_COMMAND);
else
rawcmd = strdup(PING_COMMAND);
#else
rawcmd = strdup(PING_COMMAND);
#endif
/* does the host address of number of packets argument come first? */
#ifdef PING_PACKETS_FIRST
# ifdef PING_HAS_TIMEOUT
asprintf (&cmd, rawcmd, timeout_interval, max_packets, addresses[i]);
# else
asprintf (&cmd, rawcmd, max_packets, addresses[i]);
# endif
#else
asprintf (&cmd, rawcmd, addresses[i], max_packets);
#endif

131

133

135

if (verbose >= 2)
printf ("CMD: %s\n", cmd);
/* run the command */
this_result = run_ping (cmd, addresses[i]);

137

139

141

if (pl == UNKNOWN_PACKET_LOSS || rta < 0.0) {


printf ("%s\n", cmd);
die (STATE_UNKNOWN,
_("CRITICAL - Could not interpret output from ping command\n"));
}

143

145

147

149

151

if (pl >= cpl || rta >= crta || rta < 0)


this_result = STATE_CRITICAL;
else if (pl >= wpl || rta >= wrta)
this_result = STATE_WARNING;
else if (pl >= 0 && rta >= 0)
this_result = max_state (STATE_OK, this_result);
if (n_addresses > 1 && this_result != STATE_UNKNOWN)
die (STATE_OK, "%s is alive\n", addresses[i]);

153

163

if (display_html == TRUE)
printf ("<A HREF=%s/traceroute.cgi?%s>", CGIURL, addresses[i]);
if (pl == 100)
printf (_("PING %s - %sPacket loss = %d%%"), state_text (this_result), warn_text,
pl);
else
printf (_("PING %s - %sPacket loss = %d%%, RTA = %2.2f ms"),
state_text (this_result), warn_text, pl, rta);
if (display_html == TRUE)
printf ("</A>");

165

/* Print performance data */

155

157

159

161

PENAS Cdric

87

26 juin 2010

ANNEXE A. ANNEXES

printf("|%s", fperfdata ("rta", (double) rta, "ms",


wrta>0?TRUE:FALSE, wrta,
crta>0?TRUE:FALSE, crta,
TRUE, 0, FALSE, 0));
printf(" %s\n", perfdata ("pl", (long) pl, "%",
wpl>0?TRUE:FALSE, wpl,
cpl>0?TRUE:FALSE, cpl,
TRUE, 0, FALSE, 0));

167

169

171

173

if (verbose >= 2)
printf ("%f:%d%% %f:%d%%\n", wrta, wpl, crta, cpl);

175

177

result = max_state (result, this_result);


free (rawcmd);
free (cmd);

179

181

return result;

183

}
185

187

189

191

193

195

197

199

201

203

/* process command-line arguments */


int
process_arguments (int argc, char **argv)
{
int c = 1;
char *ptr;
int option = 0;
static struct option longopts[] = {
STD_LONG_OPTS,
{"packets", required_argument, 0, p},
{"nohtml", no_argument, 0, n},
{"link", no_argument, 0, L},
{"use-ipv4", no_argument, 0, 4},
{"use-ipv6", no_argument, 0, 6},
{0, 0, 0, 0}
};

205

207

209

211

213

if (argc < 2)
return ERROR;
for (c = 1; c < argc; c++) {
if (strcmp ("-to", argv[c]) == 0)
strcpy (argv[c], "-t");
if (strcmp ("-nohtml", argv[c]) == 0)
strcpy (argv[c], "-n");
}

215

217

219

while (1) {
c = getopt_long (argc, argv, "VvhnL46t:c:w:H:p:", longopts, &option);
if (c == -1 || c == EOF)
break;

221

PENAS Cdric

88

26 juin 2010

ANNEXE A. ANNEXES

223

225

227

229

231

233

235

237

239

241

243

245

247

249

251

253

255

257

259

261

263

265

267

269

271

273

275

277

switch (c) {
case ?: /* usage */
usage5 ();
case h: /* help */
print_help ();
exit (STATE_OK);
break;
case V: /* version */
print_revision (progname, NP_VERSION);
exit (STATE_OK);
break;
case t: /* timeout period */
timeout_interval = atoi (optarg);
break;
case v: /* verbose mode */
verbose++;
break;
case 4: /* IPv4 only */
address_family = AF_INET;
break;
case 6: /* IPv6 only */
#ifdef USE_IPV6
address_family = AF_INET6;
#else
usage (_("IPv6 support not available\n"));
#endif
break;
case H: /* hostname */
ptr=optarg;
while (1) {
n_addresses++;
if (n_addresses > max_addr) {
max_addr *= 2;
addresses = realloc (addresses, sizeof(char*) * max_addr);
if (addresses == NULL)
die (STATE_UNKNOWN, _("Could not realloc() addresses\n"));
}
addresses[n_addresses-1] = ptr;
if ((ptr = index (ptr, ,))) {
strcpy (ptr, "");
ptr += sizeof(char);
} else {
break;
}
}
break;
case p: /* number of packets to send */
if (is_intnonneg (optarg))
max_packets = atoi (optarg);
else
usage2 (_("<max_packets> (%s) must be a non-negative number\n"), optarg);
break;
case n: /* no HTML */
display_html = FALSE;
break;
case L: /* show HTML */

PENAS Cdric

89

26 juin 2010

ANNEXE A. ANNEXES

display_html = TRUE;
break;
case c:
get_threshold (optarg, &crta, &cpl);
break;
case w:
get_threshold (optarg, &wrta, &wpl);
break;
}

279

281

283

285

287

289

c = optind;
if (c == argc)
return validate_arguments ();

291

293

295

297

299

301

if (addresses[0] == NULL) {
if (is_host (argv[c]) == FALSE) {
usage2 (_("Invalid hostname/address"), argv[c]);
} else {
addresses[0] = argv[c++];
n_addresses++;
if (c == argc)
return validate_arguments ();
}
}

303

305

307

309

311

313

315

317

319

321

323

if (wpl == UNKNOWN_PACKET_LOSS) {
if (is_intpercent (argv[c]) == FALSE) {
printf (_("<wpl> (%s) must be an integer percentage\n"), argv[c]);
return ERROR;
} else {
wpl = atoi (argv[c++]);
if (c == argc)
return validate_arguments ();
}
}
if (cpl == UNKNOWN_PACKET_LOSS) {
if (is_intpercent (argv[c]) == FALSE) {
printf (_("<cpl> (%s) must be an integer percentage\n"), argv[c]);
return ERROR;
} else {
cpl = atoi (argv[c++]);
if (c == argc)
return validate_arguments ();
}
}

325

327

329

331

333

if (wrta < 0.0) {


if (is_negative (argv[c])) {
printf (_("<wrta> (%s) must be a non-negative number\n"), argv[c]);
return ERROR;
} else {
wrta = atof (argv[c++]);
if (c == argc)
return validate_arguments ();

PENAS Cdric

90

26 juin 2010

ANNEXE A. ANNEXES

}
335

337

if (crta < 0.0) {


if (is_negative (argv[c])) {
printf (_("<crta> (%s) must be a non-negative number\n"), argv[c]);
return ERROR;
} else {
crta = atof (argv[c++]);
if (c == argc)
return validate_arguments ();
}
}

339

341

343

345

347

if (max_packets == -1) {
if (is_intnonneg (argv[c])) {
max_packets = atoi (argv[c++]);
} else {
printf (_("<max_packets> (%s) must be a non-negative number\n"), argv[c]);
return ERROR;
}
}

349

351

353

355

return validate_arguments ();

357

}
359

361

363

365

367

369

int
get_threshold (char *arg, float *trta, int *tpl)
{
if (is_intnonneg (arg) && sscanf (arg, "%f", trta) == 1)
return OK;
else if (strpbrk (arg, ",:") && strstr (arg, "%") && sscanf (arg, "%f%*[:,]%d%%", trta,
tpl) == 2)
return OK;
else if (strstr (arg, "%") && sscanf (arg, "%d%%", tpl) == 1)
return OK;

371

usage2 (_("%s: Warning threshold must be integer or percentage!\n\n"), arg);


return STATE_UNKNOWN;

373

}
375

377

379

381

int
validate_arguments ()
{
float max_seconds;
int i;

383

385

387

if (wrta < 0.0) {


printf (_("<wrta> was not set\n"));
return ERROR;
}
else if (crta < 0.0) {

PENAS Cdric

91

26 juin 2010

ANNEXE A. ANNEXES

printf (_("<crta> was not set\n"));


return ERROR;

389

}
else if (wpl == UNKNOWN_PACKET_LOSS) {
printf (_("<wpl> was not set\n"));
return ERROR;
}
else if (cpl == UNKNOWN_PACKET_LOSS) {
printf (_("<cpl> was not set\n"));
return ERROR;
}
else if (wrta > crta) {
printf (_("<wrta> (%f) cannot be larger than <crta> (%f)\n"), wrta, crta);
return ERROR;
}
else if (wpl > cpl) {
printf (_("<wpl> (%d) cannot be larger than <cpl> (%d)\n"), wpl, cpl);
return ERROR;
}

391

393

395

397

399

401

403

405

407

if (max_packets == -1)
max_packets = DEFAULT_MAX_PACKETS;

409

411

max_seconds = crta / 1000.0 * max_packets + max_packets;


if (max_seconds > timeout_interval)
timeout_interval = (int)max_seconds;

413

415

for (i=0; i<n_addresses; i++) {


if (is_host(addresses[i]) == FALSE)
usage2 (_("Invalid hostname/address"), addresses[i]);
}

417

419

if (n_addresses == 0) {
usage (_("You must specify a server address or host name"));
}

421

423

return OK;

425

}
427

429

431

433

int
run_ping (const char *cmd, const char *addr)
{
char buf[MAX_INPUT_BUFFER];
int result = STATE_UNKNOWN;

435

437

if ((child_process = spopen (cmd)) == NULL)


die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), cmd);

441

child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r");


if (child_stderr == NULL)
printf (_("Cannot open stderr for %s\n"), cmd);

443

while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) {

439

PENAS Cdric

92

26 juin 2010

ANNEXE A. ANNEXES

if (verbose >= 3)
printf("Output: %s", buf);

445

447

result = max_state (result, error_scan (buf, addr));


449

/* get the percent loss statistics */


if(sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d errors, %d%% packet
loss",&pl)==1 ||
sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d duplicates, %d%%
packet loss", &pl) == 1 ||
sscanf(buf,"%*d packets transmitted, %*d received, +%*d duplicates, %d%% packet
loss", &pl) == 1 ||
sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% packet loss",&pl)
==1 ||
sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% loss, time",&pl)==1
||
sscanf(buf,"%*d packets transmitted, %*d received, %d%% loss, time", &pl)==1 ||
sscanf(buf,"%*d packets transmitted, %*d received, %d%% packet loss, time", &pl)==1
||
sscanf(buf,"%*d packets transmitted, %*d received, +%*d errors, %d%% packet loss",
&pl) == 1 ||
sscanf(buf,"%*d packets transmitted %*d received, +%*d errors, %d%% packet loss", &
pl) == 1
)
continue;

451

453

455

457

459

461

/* get the round trip average */


else
if(sscanf(buf,"round-trip min/avg/max = %*f/%f/%*f",&rta)==1 ||
sscanf(buf,"round-trip min/avg/max/mdev = %*f/%f/%*f/%*f",&rta)==1 ||
sscanf(buf,"round-trip min/avg/max/sdev = %*f/%f/%*f/%*f",&rta)==1 ||
sscanf(buf,"round-trip min/avg/max/stddev = %*f/%f/%*f/%*f",&rta)==1 ||
sscanf(buf,"round-trip min/avg/max/std-dev = %*f/%f/%*f/%*f",&rta)==1 ||
sscanf(buf,"round-trip (ms) min/avg/max = %*f/%f/%*f",&rta)==1 ||
sscanf(buf,"round-trip (ms) min/avg/max/stddev = %*f/%f/%*f/%*f",&rta)==1 ||
sscanf(buf,"rtt min/avg/max/mdev = %*f/%f/%*f/%*f ms",&rta)==1)
continue;

463

465

467

469

471

473

}
475

477

/* this is needed because there is no rta if all packets are lost */


if (pl == 100)
rta = crta;

479

481

483

485

487

489

491

/* check stderr, setting at least WARNING if there is output here */


/* Add warning into warn_text */
while (fgets (buf, MAX_INPUT_BUFFER - 1, child_stderr)) {
if (! strstr(buf,"WARNING - no SO_TIMESTAMP support, falling back to SIOCGSTAMP")) {
if (verbose >= 3) {
printf("Got stderr: %s", buf);
}
if ((result=error_scan(buf, addr)) == STATE_OK) {
result = STATE_WARNING;
if (warn_text == NULL) {
warn_text = strdup(_("System call sent warnings to stderr "));
} else {

PENAS Cdric

93

26 juin 2010

ANNEXE A. ANNEXES

asprintf(&warn_text, "%s %s", warn_text, _("System call sent warnings to


stderr "));
}

493

}
}

495

}
497

(void) fclose (child_stderr);


499

/* close the pipe - WARNING if status is set */


if (spclose (child_process))
result = max_state (result, STATE_WARNING);

501

503

if (warn_text == NULL)
warn_text = strdup("");

505

507

return result;
509

511

513

515

517

519

521

523

525

527

529

531

533

535

537

539

541

543

int
error_scan (char buf[MAX_INPUT_BUFFER], const char *addr)
{
if (strstr (buf, "Network is unreachable") ||
strstr (buf, "Destination Net Unreachable")
)
die (STATE_CRITICAL, _("CRITICAL - Network Unreachable (%s)"), addr);
else if (strstr (buf, "Destination Host Unreachable"))
die (STATE_CRITICAL, _("CRITICAL - Host Unreachable (%s)"), addr);
else if (strstr (buf, "Destination Port Unreachable"))
die (STATE_CRITICAL, _("CRITICAL - Bogus ICMP: Port Unreachable (%s)"), addr);
else if (strstr (buf, "Destination Protocol Unreachable"))
die (STATE_CRITICAL, _("CRITICAL - Bogus ICMP: Protocol Unreachable (%s)"), addr);
else if (strstr (buf, "Destination Net Prohibited"))
die (STATE_CRITICAL, _("CRITICAL - Network Prohibited (%s)"), addr);
else if (strstr (buf, "Destination Host Prohibited"))
die (STATE_CRITICAL, _("CRITICAL - Host Prohibited (%s)"), addr);
else if (strstr (buf, "Packet filtered"))
die (STATE_CRITICAL, _("CRITICAL - Packet Filtered (%s)"), addr);
else if (strstr (buf, "unknown host" ))
die (STATE_CRITICAL, _("CRITICAL - Host not found (%s)"), addr);
else if (strstr (buf, "Time to live exceeded"))
die (STATE_CRITICAL, _("CRITICAL - Time to live exceeded (%s)"), addr);
if (strstr (buf, "(DUP!)") || strstr (buf, "DUPLICATES FOUND")) {
if (warn_text == NULL)
warn_text = strdup (_(WARN_DUPLICATES));
else if (! strstr (warn_text, _(WARN_DUPLICATES)) &&
asprintf (&warn_text, "%s %s", warn_text, _(WARN_DUPLICATES)) == -1)
die (STATE_UNKNOWN, _("Unable to realloc warn_text"));
return (STATE_WARNING);
}

545

return (STATE_OK);

PENAS Cdric

94

26 juin 2010

ANNEXE A. ANNEXES

547

549

551

553

void
print_help (void)
{
print_revision (progname, NP_VERSION);

555

557

printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n");


printf (COPYRIGHT, copyright, email);

559

printf (_("Use ping to check connection statistics for a remote host."));

561

printf ("\n\n");

563

print_usage ();

565

printf (_(UT_HELP_VRSN));
printf (_(UT_EXTRA_OPTS));

567

printf (_(UT_IPv46));
569

571

573

575

577

579

printf (" %s\n", "-H, --hostname=HOST");


printf (" %s\n", _("host to ping"));
printf (" %s\n", "-w, --warning=THRESHOLD");
printf (" %s\n", _("warning threshold pair"));
printf (" %s\n", "-c, --critical=THRESHOLD");
printf (" %s\n", _("critical threshold pair"));
printf (" %s\n", "-p, --packets=INTEGER");
printf (" %s ", _("number of ICMP ECHO packets to send"));
printf (_("(Default: %d)\n"), DEFAULT_MAX_PACKETS);
printf (" %s\n", "-L, --link");
printf (" %s\n", _("show HTML in the plugin output (obsoleted by urlize)"));

581

printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);


583

585

587

589

591

593

595

597

printf ("\n");
printf ("%s\n", _("THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel
"));
printf ("%s\n", _("time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the")
);
printf ("%s\n", _("percentage of packet loss to trigger an alarm state."));
printf ("\n");
printf ("%s\n", _("This plugin uses the ping command to probe the specified host for
packet loss"));
printf ("%s\n", _("(percentage) and round trip average (milliseconds). It can produce HTML
output"));
printf ("%s\n", _("linking to a traceroute CGI contributed by Ian Cass. The CGI can be
found in"));
printf ("%s\n", _("the contrib area of the downloads section at http://www.nagios.org/"));
#ifdef NP_EXTRA_OPTS
printf ("\n");
printf ("%s\n", _("Notes:"));

PENAS Cdric

95

26 juin 2010

ANNEXE A. ANNEXES

599

printf (_(UT_EXTRA_OPTS_NOTES));
#endif
printf (_(UT_SUPPORT));

601

}
603

605

607

609

void
print_usage (void)
{
printf (_("Usage:"));
printf ("%s -H <host_address> -w <wrta>,<wpl>%% -c <crta>,<cpl>%%\n", progname);
printf (" [-p packets] [-t timeout] [-4|-6]\n");
}


PENAS Cdric

96

26 juin 2010

You might also like