Tous les articles par Florian Cristina

Bench HDD : Bonnie++

On m’a conseillĂ© d’utiliser Bonnie++ afin de bencher plus en profondeur.

Télécharger bonnie ici : http://www.coker.com.au/bonnie++/

# wget http://www.coker.com.au/bonnie++/bonnie++-1.03c.tgz
# tar -zxvf bonnie++-1.03c.tgz
# cd bonnie++
# ./configure
# make
# make install

A prĂ©sent il ne vous reste plus qu’a spĂ©cifiĂ© la taille du fichier de test et son rĂ©pertoire. Dans mon cas un fichier de 8GB dans /home/artiflo/temp. Il est conseillĂ© que la taille du fichier de test sous le double de la mĂ©moire.

# bonnie++ -s 8000 -d /home/artiflo/temp

Changer l’ip d’une Zone

Pour changer l’ip d’une zone non-global, il vous faut utiliser le zonecfg dans la zone globale. Je vais prendre l’exemple de ma zone glassfish

# zonecfg -z z_glassfish
# zonecfg:z_glassfish> select net address=<old-ip>
# zonecfg:z_glassfish:net> set address=<new-ip>
# zonecfg:z_glassfish:net> end
# zonecfg:z_glassfish> commit

Obtenir des informations sur le HDD

Il est assez facile d’obtenir une ribambelle d’information sur votre disque dur avec l’intermĂ©diaire de smartmontools.

# apt-get install smartmontools

Pour obtenir les information minimum Ă  l’adaptant Ă  votre besoin:

# smartctl -i -d ata /dev/sda

Et enfin pour obtenir toutes les infos, dont les erreurs SMART :

# smartctl -d ata -a /dev/sda

Bench Hdd chez dedibox

La semaine dernière j’ai Ă©cris un billet sur un petit bench hdd chez ovh. Je rĂ©cidive mais cette fois ci chez dedibox.

Je tiens a remercier l’Ă©quipe de dedibox qui m’a permis d’avoir accès Ă  tout leur gamme de serveur afin de rĂ©aliser ce test.

Je vais reprendre exactement le mĂŞme protocole de test :
Pour l’écriture voici la commande qui a été utilisé :

# time dd if=/dev/zero of=./8gb bs=1024k count=8192

Pour la lecture voici la commande qui a été utilisé :

# time dd if=./8gb of=/dev/null bs=64k

Je vais rajouter hdparm au protocole de test :

hdparm -tT /dev/sda2

Voici les résultat sous forme de tableau:

Ecriture Lecture Ecriture Lecture hdparm cache hdparm read
Dedibox v1 2,56 1,5 49,2 78 400 74,75
Dedibox v2 3,15 2,1 44,1 71 600 67,7
Dedibox v2 RAID 3,23 2,21 42,5 60,7 605 59
Dedibox XL 1,57 1,53 73,4 75,7 2978 91,1
Dedibox XL RAID 2,2 1,55 70,4 74,8 3489 86,41


En premier les performances en minutes :
Graphique Bench Dedibox 2008

Les performances en MB/s :
Graphique Bench Dedibox 2008

Pour note les Dedibox v1 sont pourvus de Seagate 7200.10, les Dedibox v2 de hitachi 7k160 et dedibox XL de Hitachi P7K500.

Note pour xen

Une petite note pour Xen, inutilisable c’est un brouillon publique.

    Network setup

#nano /etc/network/interfaces

auto eth0
iface eth0 inet static
        address 88.191.34.xxx
        netmask 255.255.255.0
        network 88.191.34.0
        broadcast 88.191.34.255
        gateway 88.191.34.1

# ifconfig -a

eth0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.34.xxx Bcast:88.191.34.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:189 errors:0 dropped:0 overruns:0 frame:0
TX packets:115 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:16820 (16.4 KiB) TX bytes:13745 (13.4 KiB)
Interruption:18 Adresse de base:0xfc00

lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

J’ajoute dans /etc/network/interfaces

auto eth0
iface eth0 inet static
address 88.191.34.50
netmask 255.255.255.0
network 88.191.34.0
broadcast 88.191.34.255
gateway 88.191.34.1

auto eth0:0
iface eth0:0 inet static
address 88.191.202.227
netmask 255.255.255.224
network 88.191.202.224
broadcast 88.191.202.255

# /etc/init.d/networking restart

# ifconfig -a

eth0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.34.50 Bcast:88.191.34.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:210 errors:0 dropped:0 overruns:0 frame:0
TX packets:435 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:67357 (65.7 KiB) TX bytes:45173 (44.1 KiB)
Interruption:18 Adresse de base:0xfc00

eth0:0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.202.227 Bcast:88.191.202.255 Masque:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:18 Adresse de base:0xfc00

lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

    Xen Setup

Install

///VIEUX : apt-get install xen-linux-system-2.6.18-5-xen-686 xen-tools libc6-xen xen-hypervisor-3.0.3-1-i386-pae xen-linux-system-2.6.18-5-xen-vserver-686 bridge-utils

apt-get install xen-hypervisor-3.0.3-1-i386 xen-ioemu-3.0.3-1 xen-linux-system-2.6.18-4-xen-vserver-686 xen-tools xen-utils-3.0.3-1 xen-utils-common linux-headers-2.6.18-4-xen-686 linux-image-2.6.18-4-xen-vserver-686 linux-image-2.6.18-4-xen-686 linux-image-xen-686 linux-modules-2.6.18-4-xen-vserver-686 linux-modules-2.6.18-4-xen-686

— Suppression de lilo, installation de GRUB

# apt-get remove lilo –purge
# apt-get install grub mdadm

répondre all

— Installation de GRUB sur le MBR

# grub-install /dev/sda

— CrĂ©ation de la configuration GRUB (menu.lst)

# update-grub

reboot

# ifconfig -a

eth0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.34.50 Bcast:88.191.34.255 Masque:255.255.255.0
adr inet6: fe80::240:63ff:fee7:ac66/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:457 errors:0 dropped:0 overruns:0 frame:0
TX packets:186 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:36270 (35.4 KiB) TX bytes:20743 (20.2 KiB)
Interruption:16 Adresse de base:0xfc00

eth0:0 Lien encap:Ethernet HWaddr 00:40:63:E7:AC:66
inet adr:88.191.202.227 Bcast:88.191.202.255 Masque:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:16 Adresse de base:0xfc00

lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:HĂ´te
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

sit0 Lien encap:IPv6-dans-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

# /etc/xen/scripts/network-bridge status

============================================================

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:40:63:e7:ac:66 brd ff:ff:ff:ff:ff:ff
inet 88.191.34.50/24 brd 88.191.34.255 scope global eth0
inet 88.191.202.227/27 brd 88.191.202.255 scope global eth0:0
inet6 fe80::240:63ff:fee7:ac66/64 scope link
valid_lft forever preferred_lft forever
Device « xenbr0 » does not exist.

# xen-create-image –dir /home/xen –hostname tutu –debootstrap –dist etch –boot

# nano /etc/xen-tools/xen-tools.conf

kernel = /boot/vmlinuz-2.6.18-4-xen-686
initrd = /boot/initrd.img-2.6.18-4-xen-686

# xen-delete-image
# xen-list-images

    WINDOWS

2.6.18-5-xen-686

title Xen 3.0.3-1-i386-pae / Debian GNU/Linux, kernel 2.6.18-5-xen-686
root (hd0,0)
kernel /xen-3.0.3-1-i386-pae.gz
module /vmlinuz-2.6.18-5-xen-686 root=/dev/md2 ro console=tty0
module /initrd.img-2.6.18-5-xen-686
savedefault

1 / creer un fichier pour contenir le guest

# dd if=/dev/zero of=/var/xenvm/winxp.img bs=1024k count=4000

2 / decommenter le vif-nat dans /etc/xen/xend-config.sxp

3 / Activé le pool

#nano /etc/modules.conf
#options loop max_loop=64
#rmmod loop
# modprobe loop

4 / Config

import os, re
arch = os.uname()[4]
if re.search('64', arch):
    arch_libdir = 'lib64'
else:
    arch_libdir = 'lib'
kernel = '/usr/lib/xen-3.0.3-1/boot/hvmloader'
builder='hvm'
memory = 512
shadow_memory = 100
name = 'WinXP'
vcpus=1
#vif = [ 'type=ioemu, mac=00:16:3e:FF:FE:05, bridge=xenbr0 ']
#vif = [ 'ip=192.168.1.130, type=ioemu, model=ne2k_pci' ]
vif = [ 'ip=192.168.1.130' ]
disk = [ 'file:/var/xenvm/winxp.img,ioemu:hda,w','file:/var/xenvm/IMAGES/WINXPVL.ISO,hdc:cdrom,r' ]
device_model = '/usr/lib/xen-3.0.3-1/bin/qemu-dm'
boot="d"
vnc=1
vncviewer=1
vncdisplay=3
vncunused=0
vncpasswd=''
nographic=0
localtime=1
usb=1
usbdevice='mouse'
keymap='us'
ne2000=1
    OVH

# echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
# /etc/init.d/networking restart
# xm create /home/xen/winxp.cfg

source

http://www.howtoforge.com/debian_etch_xen_3.1

Glassfish dans une Zone

En savourant un bagel dans cette belle ville de MontrĂ©al je me suis dit « tiens si j’Ă©crivais un mini guide sur l’installation de Glassfish dans une Zone solaris ». Et paf c’est partie.

Je vais passer l’Ă©tape d’installation de Solaris 10 et de sa configuration que vous pouvez trouver sur mon blog et passer directement a la crĂ©ation de la zone puis l’installation de glassfish dedant.

Alors il faut commencer par creer l’espace de stockage pour la future zone.

# mkdir /var/zones
# mkdir /var/zones/z_glassfish

Un petit coup de chmod pour pacifier les droits :

# chmod –R 700 /var/zones/z_glassfish

Je ne vais pas créer de pool de ressource CPU mains directement créer la zone. Je reviendrais dans un autre billet à ce sujet.

# zonecfg -z z_glassfish
sunrise: No such zone configured
Use ‘create’ to begin configuring a new zone.
#zonecfg:sunrise> create # Création de la Zone
#zonecfg:sunrise> set zonepath=/var/zones/z_glassfish #Dossier de la zone
#zonecfg:sunrise> add net # Ajout d’une configuration réseau
#zonecfg:sunrise:net> set address=192.168.1.120 #Ip de la zone
#zonecfg:sunrise:net> set physical=pcn0 #Nom de l’interphase rĂ©seau physique (vmware pour l’exemple)
#zonecfg:sunrise:net> end # fin de la configuration réseaux
#zonecfg:sunrise> verify # Vérification de la configuration
#zonecfg:sunrise> commit # Validation de la configuration
#zonecfg:sunrise> exit # Sortie de la configuration de zone

On va vérifier la configuration :

# zonecfg -z z_glassfish info
zonepath: /var/zones/z_glassfish
autoboot: false
pool:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 192.168.1.120
physical: pcn0

Maintenant que la configuration de la zone est prête on va passer à la création à proprement parlé de la zone. Cette étape peut être relativement longue celon les performances de votre machine.

# zoneadm –z z_glassfish verify
# zoneadm -z z_glassfish install
Preparing to install zone .
Creating list of files to copy from the global zone.
Copying <2812> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1200> packages on the zone.
Initialized <1200> packages on zone.
Zone is initialized.
Installation of <1> packages was skipped.
Le fichier
contient un journal de l’installation de la zone.

Vous pouvez vérifier que la zone z_glassfish est bien installé :

# zoneadm list -cvi

Maintenant que la zone est créer, on va pouvoir la démarrer :

#zoneadm –z z_glassfish boot -s

Lors du premier boot il faut configurer la zone en fonction de vos préférence. Parfois Solaris a un peu du mal a reconnaitre le F2 dans ce utiliser la combinaison de touche MAJ + Esc + 2 pour validé les étapes.

On se loge sur la zone z_glassfish :

# zlogin –C z_glassfish

Pour ne pas encombrĂ© inutilement d’image le billet, je vous ai fait un rĂ©capitulatif des diffĂ©rentes options que vous devrez choisir (dans l’ordre d’affichage) :

Langue : Français
Environnement Localisé : France(UTF8)
Emulateur de terminal CDE (dtterm)
Hostname: glassfish
Configuration kerberos: No
Name Service : None
NFS4 configuration: Choix par defaut.
Time zone: Europe
Countries et regions : France
Mot de passe : password

A présent la console doit vous demander de vous identifier

glassfish console login : root
password : password

Voila vous ĂŞtes dans votre zone, vous pouvez faire exit pour en sortir et retour dans votre zone globale solaris.

Maintenant installons glassfish.

Toutes cette opération se déroule dans la zone que vous venez de créer, vérifier que vous êtes bien logger dedans et non dans votre zone globale.

# wget http://java.net/download/javaee5/v2ur2/promoted/SunOS_X86/glassfish-installer-v2ur2-b04-sunos_x86.jar

A prĂ©sent, je vais executer le jar tĂ©lĂ©charger, qui va s’installer dans le rĂ©pertoire courant.

# java -Xmx256m -jar glassfish-installer-v2ur2-b04-sunos_x86.jar

Je dĂ©place tout ça dans un dossier appserver que j’ai creer dans le /var/ Vous pouvez faire comme vous voulez, cela ce configure dans le setup.xml

# mkdir /var/appserver
# cp -R glassfish/* /var/appserver/
# cd /var/appserver/

Je rajoute les droits d’exĂ©cution sur le dossier qui contiens les librairies qui vont me permettre de dĂ©ployer mon serveur glassfish.

# chmod -R +x lib/ant/bin

Et enfin, je vais compiler le fichier setup.xml pour déployer le serveur.

# lib/ant/bin/ant -f setup.xml

Normlement, vous devrez avoir a la fin de l’exĂ©cution ceci :

BUILD SUCCESSFULL

A prĂ©sent on va utiliser asadmin pour dĂ©ployer le domain par defaut que l’on vient de creer. Attention l’asadmin fournis dans Solaris 10 provoque une erreur de type timeout

Timeout waiting for domain domain1 to go to starting state.
CLI156 Could not start the domain domain1.

Pour eviter cela, je vais utiliser le asadmin livré avec glassfish

# bin/asadmin start-domain domain1

Ce qui devrait vous retourner quelque comme ça :

Starting Domain domain1, please wait.
Log redirected to /var/appserver/domains/domain1/logs/server.log.
Redirecting output to /var/appserver/domains/domain1/logs/server.log
Domain domain1 is ready to receive client requests. Additional services are being started in background.
Domain [domain1] is running [Sun Java System Application Server 9.1_02 (build b04-fcs)] with its configuration and logs at: [/var/appserver/domains].
Admin Console is available at [http://localhost:4848].
Use the same port [4848] for « asadmin » commands.
User web applications are available at these URLs:
[http://localhost:8080 https://localhost:8181 ].
Following web-contexts are available:
[/web1 /__wstx-services ].
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://glassfish:8686/jmxrmi] for domain management purposes.
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].
Domain does not support application server clusters and other standalone instances.

Vous pouvez donc a présent accéder aux différent service de votre serveur glassfish comme indiqué dans le log juste au dessus.

Source qui m’ont aider a rĂ©diger ce billet :
http://swik.net/GlassFish+solaris
https://glassfish.dev.java.net/
et bien sur les guru de chez guses : www.guses.org

Solaris le terminal cassé

Lors d’un crash de ma vmware une de mes zones a perdus la configuration du terminale. Ce qui provoque des erreur de type :

TERM environment variable need set

Alors on peut vĂ©rifier avec un env comment se porte les variables d’environnement.
Dans mon cas, cela donnait :

# env

HZ=
LC_MONETARY=fr_FR.UTF-8
SHELL=/usr/bin/bash
LC_NUMERIC=fr_FR.UTF-8
MAIL=/var/mail/root
PATH=/opt/csw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
LC_MESSAGES=fr.UTF-8
LC_COLLATE=fr_FR.UTF-8
PWD=/root/glassfish
TZ=Europe/Paris
SHLVL=1
HOME=/
LOGNAME=root
LC_CTYPE=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
_=/usr/bin/env
OLDPWD=/root

La solution est relativement simple, dans mon cas j’utilise dtterm ce qui donne :

# TERM=dtterm
# export TERM

Et la magie fonctionne.

Solaris 10 for noob

Comme je débute en solaris, je me fait une petite note pour ma loutre ayant toujours connus le monde linux.

Alors pour rajouter le user artiflo, qui aura son répertoire dans /export/home/artiflo et qui utilisera par défaut le bash:

# useradd -d /export/home/artiflo -m -s /bin/bash -c « Artiflo » artiflo

On peut changer le shell par defaut avec la commande :

# passwd -e user

Et dans mon cas je vais donc répondre /usr/bin/bash.
A noter que le shell par dĂ©faut est prĂ©cisĂ© par /etc/passwd, qui a Ă©tĂ© lui mĂŞme initialisĂ© au moment de crĂ©er l’utilisateur (avec la commande useradd, option -s).

Configurer son mot de passe :

# passwd artiflo

Connaitre les informations réseau :

# ifconfig -a

Dans un premier temps je vais faire hurler les vĂ©ritables admin sys SOLARIS et installer nano dans mon petit Solaris pour illustrer l’utilisation de pkg-get avec les dĂ©pĂ´t de blastwave et les clĂ©s qui vont avec :

# pkgadd -d http://www.blastwave.org/pkg_get.pkg
# /opt/csw/bin/pkg-get -i gnupg textutils

RĂ©pondre « yes » Ă  toutes les questions. Il se peut que l’on vous demande beaucoup beaucoup beaucoup de rĂ©pondre Ă  des questions liĂ© Ă  des dĂ©pendance. Si vous savez ce que vous faire vous pouvez sauter les Ă©tapes de contrĂ´le en faisant ceci et pouvoir aller jouer avec votre loutre pendant que gnome s’installe.

# cp -p /var/pkg-get/admin-fullauto /var/pkg-get/admin

A prĂ©sent vous avec pkg-get d’installer vous pouvez installer tous les applicatifs disponible chez blastwave.
Commençons donc par nano.

# /opt/csw/bin/pkg-get -i nano

Je sens déjà ma loutre qui respire en ayant nano sous la papate.

Maintenant que nano est installer on va en profiter pour configurer le pkg-get.conf afin de préciser les mirroir de blastwave qui correspondent a votre zone géographique. La liste des mirroirs ce trouve ici http://www.blastwave.org/mirrors.html. Pour la france je vous conseil ceux de solaris-fr en stable ce qui donne ceci :http://blastwave.solaris-fr.org/stable/

# /opt/csw/bin/nano /opt/csw/etc/pkg-get.conf

Commentez ceux pas défaut et remplacer par ceci :

# solaris-fr.org, pour la FRANCE: 
url=http://blastwave.solaris-fr.org/stable/

A prĂ©sent je vais modifier le PATH pour les user et le root afin que les binaire de blastwave puisse s’Ă©xecuter sans devoir ecrire le chemin a la main a chaque fois. Pour cela il faut Ă©diter 2 fichier : /etc/default/login et /etc/default/su et modifier a chaque fois le PATH et le SUPATH ainsi

# /opt/csw/bin/nano /etc/default/login

PATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
SUPATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin

et

# /opt/csw/bin/nano /etc/default/su

PATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
SUPATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin

Il faut vous déloger puis vous reloger pour que les informations soit pris en compte.

Vous pouvez consulter tous les paquets installer Ă  l’aide de pkg ainsi :

# ls -ladt /var/sadm/pkg/CSW*

Enfin je termine sur un point de sécurité « facultatif » pour la plus part.

Tout a l’heure je vous ai fait installer gnupg et texutils afin de pouvoir profiter de la vĂ©rification de l’installation des paquets.
Nous allons donc télécharger puis importer la clés pgp de chez blastwave.

# wget –output-document=pgp.key http://www.blastwave.org/mirrors.html
# gpg –import pgp.key

A présent les paquets que vous installerez auront leurs clés de vérifier.

C’est fini, voici des sources qui m’ont aidĂ© a Ă©crire ce billet :

http://from8to5.blogspot.com/2007/11/solaris-add-user-useradd.html

http://www.blastwave.org/howto.html

Présentation Zones Solaris

Voici mon premier billet sur solaris. J’ai Ă©cris ceci pour dans le cadre du laboratoire linux de SUPINFO. C’est une explication de l’utilisation des zones dans le pour l’entreprise.

Zone solaris

1. La virtualisation

La virtualisation serveur n’a rien de nouveau IBM le pratique depuis longtemps en mainframes avec VM/370 (1972). Mais ce n’est que plus récemment avec l’expansion de la Virtualisation pour serveur Intel x86 (Xen, OpenVZ, etc) que Sun à commencer avec Solaris 10 à mettre en avant ses solutions de Virtualisation. Dans ce document nous allons étudier la virtualisation n’ont pas pour mettre en avant le principe de mettre plusieurs OS différent sur une OS hôte comme ce que le grand publique a l’habitude de faire mais plutôt la consolidation.

2. Consolidation kesako ?

2.1. La consolidation : Faire plus avec moins.

Le principe de la consolidation est simple. Cela consiste à fusionner plusieurs processus hébergé sur des serveurs différents sur un même serveur tout en conservant la sécurité et la répartition de charge des processus.

Solaris zone Conslidation

Un exemple :
Vous êtes l’administrateur système d’un parc de 8 serveurs sous Solaris qui travail pour le même projet en load balancing. Il y 4 serveurs web, 3 serveur de BDD et 1 serveur mail. Tous ces serveurs ne sont pas exploiter aux mieux de leurs performance du fait de l’impossibilité de répartir la charge CPU entre eux selon le besoin. De surcroit la quantité de travail pour administrer les 8 serveurs lors des mises à jour ou du contrôle des logs est longue et fastidieuse.

Solution : La consolidation, vous regrouper ces processus sur le même serveur et vous partager aussi bien le CPU, la RAM et l’espace disque entre les serveurs, vous améliorer ainsi les performances, réduisez le temps de maintenance et les couts. Conteneur Solaris : Les Zones

Alors pour ceux qui ne lisent pas entre les lignes voici les 3 principaux intérêts de la consolidation :

  • La ContinuitĂ© de service avec la migration des zones. Reprise en cas de panne en relançant la zone prĂ©alablement sauvegardĂ© sur un autre serveur Solaris sans avoir besoin de la rĂ©installer.
  • Performance. Optimisation de la ressource des serveurs. En permettant de pouvoir utiliser un plus grand nombre d’application sur le mĂŞme serveur les ressources ne soient pas gaspillĂ©es.
  • Cout. En rĂ©duisant le nombre de serveur, cela rĂ©duit par la mĂŞme l’espace physique occupĂ© dans le datacenter, les frais de gestion, l’énergie consommĂ© par le serveur et par le système de refroidissement (50% du cout d’un serveur).

2.3. Les autres produits de consolidation

openvzvmware

Xen

Alors comme je l’écrivais plus haut Sun n’a pas inventé le principe de consolidation. Voici les autres
principales solutions de consolidation.

  • Xen pour plateforme x86, x64, IA-64, PowerPC et SPARC. Les OS supportĂ© sont : Linux, FreeBSD, NetBSD, Plan 9, Gnu Hurd.
  • VMware GSX/ESX
  • Les solutions de IBM z/VM.
  • Virtuozzo (OpenVZ) qui s’inspire des Conteneurs solaris
  • Microsoft Virtual Server

3. La virtualisation chez Solaris : les Zones et les Containers

Maintenant que l’intérêt de la consolidation est clarifié attaquons nous à sa mise en place pour Solaris 10. Une machine virtuelle chez Solaris s’appel une Zone (elle peut aussi etre appeler Container).

Solaris zone

3.1. Définition des Zones et des Containers

Un « Solaris Containers » est une application de Virtualisation intégré directement au système d’exploitation qui est apparut pour la premières fois dans Solaris 10 en 2007.Il permet de contrôler et d’allouer les ressources aux différente Zones à partir du système hôte.

Une « Solaris Zones » permet de virtualiser un Système d’exploitation en l’isolant et le sécurisant du
reste du système. Une application fonctionnant dans une zone est donc isolé des autres applications
ce qui la protèges de failles ou de crash d’une application sur une autres. Une zone fournis un niveau d’abstraction pour l’OS virtualisé ce qui permet de séparer de l’accès direct a la couche matériel de la machine.
La limite thĂ©orique du nombre maximum de Zone est de 8192 mais en pratique elle dĂ©pend de la quantitĂ© de ressource hardware requise par les applications comparativement Ă  la quantitĂ© hardware disponible. C’est-Ă -dire le nombre de processeur, mĂ©moire vive, carte rĂ©seau, disque dur etc.

Mais est ce que cela consomme plus de ressource ?

OpenSolaris fournis un exemple d’un cas d’utilisation d’un environnement en production web. Sur un vieux Sun Entreprise 250 Server (2 CPU 300Mhz, 512 MB RAM, 3 HDD en RAID de 40 GB) il y a 40 zones d’installée et chacune des zones contient 5 service web Apache. En exécutant des requêtes http sur les serveurs apache les couts en ressource système de la gestion des zones est si faible qu’ils ne sont pas mesurable (moins de 5%).

4. Les différents types de Zones

Il existe 2 type de Zone : La Zone Globale qui est l’instance de Solaris 10 de la machine hôte qui se lance lors du boot et les Zones non-globale qui sont les machine virtualisé héberger dans la Zone Globale.

4.1. La zone Globale

Pour alléger la quantité de ressources nécessaire les applications coexistent dans la Zone Globale. Les Zones non-globale pourront donc faire appel directement à ses applications sans avoir forcement besoin de les installer (nous y reviendront).

Tous systèmes Solaris 10 contiennent donc une Zone Globale. Cette zone globale a 2 fonctions : une pour le créer la couche d’interaction d’abstraction système et l’autre pour le contrôler et l’autre pour gérer les zones non-globale. Les processus et application fonctionnent donc dans la zone globale si aucune zone non-globale n’a été créée.

La zone globale est la seule zone où les zones non-globale peuvent être configurées, installées, gérées et désinstallées. Seul la zone globale est démarrable à partir du hardware du serveur.

L’administration de l’architecture système tel que la gestion périphérique, du routage des IP partagé,
de la reconfiguration dynamique est possible seulement dans la zone globale.
Il y a 2 façons de configurer les adresses IP, soit en allouant une IP exclusive pour une zone soit en IP
partager entre plusieurs zones.

4.2. Les zones Non-Globale

Si les paramètres par défaut sont sélectionnés, chaque Zone non-globale aura besoin d’au minimum 85MB d’espace disque libre pour s’installer si la zone globale a été installée avec tout les Metacluster des paquets Solaris. Tout nouveau paquet installer dans la zone globale demandera de l’espace disque pour les zones non-global. La quantité de mémoire vive minimum par zone est quand a elle de 40MB.
Il existe deux types de model de fichier système de zone non-globale: Les « wholes root » et les « sparse ». Le modèle « whole root » permet une configuration avec plus de paramètre alors que le modèle « wholes root » donne de meilleure performance.

Une zone installer avec le model « full-root » demandera dans les 500MB d’espace disque libre. Chaque zone, en incluant la zone globale se voit attribuer un nom de zone. La zone globale à toujours le nom globale. Chaque zone a un numéro d’identification unique attribué par le système quand la zone est démarrée. La zone globale a toujours le numéro d’identification 0. Le nom de la zone ainsi que son id sont configurable avec la commande « zonecfg ». Chaque zone a un nom de nœud qui est indépendant du nom de zone. Le nom de nœud est attribué par l’administrateur de la zone. Chaque zone dispose d’un chemin d’accès a son répertoire racine qui est relatif au répertoire racine de la zone globale.

4.3. Les différents types de zone Non-Globale

4.3.1. Les Zones Native

Par défaut une Zone non-globales et une Zone Native. Une Zone Native est une zone ayant les mêmes propriétés que le système d’exploitation (Solaris 10) en cours d’exécution sur la zone Globale.

Si le système d’exploitation hôte est configuré avec les Solaris Trusted Extensions chaque Zone non-globales sera associée avec le même niveau de sécurité ou label.

4.3.2. Les Branded Zones

Dans une Zone non-globales il est également possible de lancer un autre environnement d’exploitation que Solaris 10. Les Zones marqué (Branded Zones) permettent d’élargir la possibilité de création d’architecture de Zones différente à travers des framework ou des OS différente.

Il existe pour l’instant 2 types de Zone Branded supporté :

  • Lx branded (une Zone linux) est une Zone Non-globale qui permet d’utilisĂ© les applications dĂ©veloppĂ©s pour Linux dans un environnement linux complet. Lx branded n’est toutefois pas une distribution Linux Ă  part entière.
  • Solaris 8 Branded permet de migrer un environnement sous Solaris 8 dans une Zone Solaris 8 fonctionnant sur un serveur hĂ´te (Zone Globale) en Solaris 10.

4.4. Droit et privilèges

Un administrateur global a les droits super utilisateur ou rôle d’administrateur Primaire. Lorsque l’administrateur global est connecté à la zone globale il peut surveiller et contrôler l’ensemble du système.
Une zone non-globale peut être administrée par un « administrateur de zone ». L’administrateur global assigne le profil « d’administrateur de zone » dans l’interface de Management de Profile de zone. Les privilèges d’administrateur de zone sont confiné a une zone non-globale.

4.5. Récapitulatif

Zone Globale :

  • ID 0 attribuĂ© par le système.
  • Fournit la seule instance du noyau Solaris qui est bootable et fonctionnant sur le système.
  • Contiens une installation complète du Système d’exploitation Solaris.
  • Peut contenir d’autres logiciels, des rĂ©pertoires, des fichiers et d’autres donnĂ©es qui ne sont pas installĂ©s par le biais de paquets.
  • Fournit une base de donnĂ©es produit complète sur tous composants logiciels installĂ©s dans la zone globale.
  • Contient les informations de configuration uniquement de la zone globale, comme le nom d’hĂ´te de la zone globale, ou le système de fichier.
  • Est la seule zone qui connait tous composants ou système de fichier.
  • Est la seule zone qui connait l’existence des zones non-globales et leur configuration.
  • Est la seule a partir de laquelle une zone non-globale peut ĂŞtre configurĂ©, installĂ©, gĂ©rĂ© ou dĂ©sinstallĂ©.

Zone Non-Globale :

  • ID attribuĂ© par le système lors du dĂ©marrage de la zone.
  • OpĂ©ration partagĂ© sous le kernel dĂ©marrĂ© dans la zone globale.
  • Contient un sous-ensemble de l’installation complète des paquets de l’OS Solaris.
  • Contient des paquets partagĂ©s avec la zone globale.
  • Peut contenir des paquets logiciels non partagĂ© depuis la zone globale. • Peut contenir d’autres logiciels, des rĂ©pertoires, des fichiers et d’autres donnĂ©es qui ne sont pas installĂ©s par le biais de paquets ou partager depuis de la zone globale.
  • Fournit une base de donnĂ©es produit complète sur tous composants logiciels installĂ©s dans la zone, qu’ils soient prĂ©sent dans la zone non-globale ou partager en lecture seule depuis la zone globale.
  • N’est pas conscient de l’existe d’autre zone.
  • Ne peux pas configurer, installĂ©, gĂ©rĂ© ou dĂ©sinstallĂ© d’autres zone, mĂŞme elle-mĂŞme.
  • Contient les uniquement les informations de configuration de la zone non-globale, comme le nom d’hĂ´te de la zone non-globale, ou le système de fichier.
  • Peut avoir sa propre configuration du fuseau horaire.

Smokeping sur Ubuntu 8.04

Aujourd’hui je m’attaque a smokeping

#sudo apt-get install smokeping

VĂ©rifiĂ© que votre vhost apache a bien cette ligne d’Ă©crite :

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        

On peut a présent passer a la configuration de smokeping :

#sudo nano /etc/smokeping/config

Tout d’abord il faut prĂ©ciser dans quel rĂ©pertoire seront stockĂ© les images. Pour ma part j’ai dĂ©cider de tout stocker dans le rĂ©pertoire du site web ce qui donne ceci :

imgcache = /home/user/www/monsite.fr/smokeping

Ensuite je passe Ă  la configuration des infos du serveur :

owner    = Artiflo
contact  = artiflo@gmail.com
cgiurl   = http://urldevotresite/cgi-bin/smokeping.cgi
mailhost = localhost

Configurer le mail d’alerte :

*** Alerts ***
to = alertee@address.somewhere
from = root@tondomain.fr

La suite de la configuration est plus pointu est n’est pas utile de modifier. Je passe directement Ă  la configuration des arbres de ping.

Par defaut il y a le localhost ce qui n’est pas une mauvaise chose, je vous conseil de le laisser pour le reste il vous suffit de reprendre les exemple et les adapters a votre besoin.