Archive | May, 2010

Tags: , ,

Nommer ses périphériques grâce à Udev

Posted on 20 May 2010 by Thomas Ginestet

J’ai eu récemment un problème sur un serveur de sauvegarde avec un chargeur de bandes LTO4 qui avait changé de nom après le reboot dudit serveur. Les fichiers de configuration qui comportaient une directive vers l’emplacement du chargeur de bandes n’ont pas apprécié…

J’ai donc décidé d’attribuer un nom immuable à mon périphérique, grâce à une règle UDEV. Après l’avoir identifié, cette règle va créer un lien symbolique vers le périphérique. Il est donc important d’être rigoureux pour fournir à udev une identification précise du matériel.

Pour procéder à cette identification, nous allons nous aider de udevadm info. Udev se basant sur sysfs (/sys) nous allons devoir au préalable trouver la correspondance entre le nom de mon périphérique dans /dev et celui dans /sys.

Dans /dev mon chargeur se nomme actuellement sg9, soit /dev/sg9. La commande suivante va me permettre de trouver sa correspondance dans /sys:

thomas@cryonux:~$ find /sys -name dev | grep sg9

me donne:

/sys/devices/pci0000:00/0000:00:06.0/0000:0c:00.0/0000:0d:08.0/host2/port-2:0/end_device-2:0/target2:0:0/2:0:0:1/scsi_generic/sg9/dev

Utilisons maintenant udevadm info afin de trouver des informations pertinentes pour l’identification du matériel:

thomas@cryonux:~$ udevinfo -a -p /sys/devices/pci0000:00/0000:00:06.0/0000:0c:00.0/0000:0d:08.0/host2/port-2:0/end_device-2:0/target2:0:0/2:0:0:1/scsi_generic/sg9/dev

Plein d’informations découpées en rubriques vont résulter de cette commande, le but étant de prendre celles qui permettent d’identifier simplement mais efficacement le périphérique.

Attention cependant à ne pas piocher les informations dans plusieurs rubriques différentes car udev considérant chaque rubrique comme un périphérique différent, votre règle ne fonctionnerait pas.

L’autre solution serait de séparer les informations dans votre règle udev en plusieurs lignes, mais rappelez vous que plus votre règle udev est simple, mieux c’est.

Une fois que vous avez trouvé votre bonheur, il ne reste plus qu’à créer la règle udev. Pour cela, il faut créer un fichier .rules dans /etc/udev/rules.d/ et, tout comme avec le fonctionnement des runlevels, spécifier l’ordre d’exécution de la règle.

Le mien s’appelle 55-chargeur-lto4.rules et contient uniquement la ligne suivante:

SUBSYSTEMS=="scsi",  ATTRS{model}=="PV-124T         ", ATTRS{type}=="8",  SYMLINK+="chargeur-lto4"

Vous noterez que j’ai rajouté aux informations trouvées grâce à udevinfo un attribut SYMLINK. Cet attribut correspond à un nom que j’ai donné à mon périphérique, sous forme de lien symbolique créé dans /dev/

Pour prendre en compte à chaud la modification on va lancer la commande:

thomas@cryonux:~$ udevadm trigger

Un ptit:

thomas@cryonux:~$ ls -al /dev/chargeur-lto4

Et oh magie on a comme résultat:

lrwxrwxrwx 1 root root 4 2009-12-28 21:02  /dev/chargeur-lto4 -> sg9

Comments (0)

Tags: , ,

Réinitialiser le mot de passe root

Posted on 20 May 2010 by Thomas Ginestet

Changer un mot de passe root perdu (on va dire perdu hein…) sous Linux, ya vraiment rien de plus simple !

Il suffit pour cela d’un accès physique à la machine ou même d’un accès type KVM. La méthode décrite ci-dessous n’a été testée qu’avec le bootloader Grub, mais on ne doit pas être loin de la vérité avec Lilo.

Voici les différentes étapes:

- Démarrez ou redémarrez la machine

- Lorsque le menu de Grub apparaît, sélectionnez le kernel sur lequel vous souhaitez faire booter la machine et appuyez sur “a

- Au prompt “grub append>“, rajoutez init=/bin/bash à la fin de la ligne et validez en appuyant sur “Entrée”

- Maintenant que vous avez la main en root, il va falloir remonter la partition racine en lecture/écriture afin de pouvoir changer le mot de passe. Pour cela, tapez:

thomas@cryonux:~$ mount -o remount,rw /

- Yapuka changer le mot de passe avec la commande passwd

- Par mesure de sécurité, vous pouvez remonter la partition en lecture seule avant de redémarrer la machine avec:

thomas@cryonux:~$ mount -o remount,ro /

- Au prochain boot n’oubliez pas de retirer les modifications effectuées sur grub afin de charger normalement le kernel.

Comments (0)

Tags: , , , ,

Sauvegarder et restaurer une base Mysql à chaud

Posted on 20 May 2010 by Thomas Ginestet

Un (des) moyen de sauvegarder proprement une base Mysql est d’utiliser la commande mysqldump.
Cette commande permet d’effectuer la sauvegarde à chaud et peut séparer les squelettes des tables de leurs données (pratique par exemple pour transférer une base vers un autre serveur qui ne serait pas forcément du Mysql).

Voici un script shell qui va parser l’ensemble de vos bases Mysql puis effectuer la sauvegarde:

#!/bin/bash

user="login"
pass="mdp"
listdb=$(mysql --user=$user --password=$pass --exec="SHOW DATABASES;" | tail -n +2)

for dbname in $listdb; do

destdir="/usr/local/dumps/$dbname"

if [ -d $destdir ]; then
echo "Dumping $dbname database"
mysqldump --tab /usr/local/dumps/$dbname --opt --all $dbname --user=$user --password=$pass || echo "Error when dumping $dbname database"
else
mkdir /usr/local/dumps/$dbname
chown -R mysql:mysql /usr/local/dumps/$dbname
echo "Dumping $dbname database"
mysqldump --tab /usr/local/dumps/$dbname --opt --all $dbname --user=$user --password=$pass || echo "Error when dumping $dbname database"
fi
done
echo "Finished"
exit 0

Le script va ici aller mettre dans /usr/local/dumps/nomdelabase (le répertoire sera créé s’il n’existe pas) l’ensemble des squelettes des tables de chaque base au format .sql ainsi que les données au format .txt

A noter que vous pouvez très bien ne pas séparer les squelettes des données en supprimant l’argument –tab. Je vous invite à vous reporter à la doc de mysqldump pour voir l’ensemble des possibilités que vous offre cette commande.

Pour restaurer tout cela, on va utiliser les commandes suivantes (et pourquoi pas les scripter elles aussi):

mysql -u login -pmdp mabase < squelette.sql
mysqlbinlog mysql-bin.xxxxxx (si vous avez activé les fichiers de logs binaires)
mysqlimport --lock-tables --user=login --password=mdp mabase données.txt

Comments (0)

Tags: ,

Kixtart: un langage de script pour vos ouvertures de session Windows

Posted on 20 May 2010 by Thomas Ginestet

Kixtart ( à ne pas confondre avec Kickstart de RedHat ) est un langage de script utilisé principalement pour effectuer les ouvertures de sessions sous Windows. Il est gratos ( et pourtant développé par un mec de chez Krosoft, c’est dire ! ) et super simple à utiliser. Il parait qu’il permet aussi une exécution plus rapide de l’ouverture de session que ne le ferait un vbscript…

Pour ma part, je l’ai intégré dans un contrôleur de domaine Samba à la place du bon vieux logon.bat en place.

Le principe est donc sensiblement le même, à savoir un script ( lancé avec les droits de l’utilisateur courant ) qui va parser vos droits et groupe(s) d’appartenance et mapper votre ou vos lecteurs réseaux en fonction de cela.

Je vous invite à vous rendre sur le helpdesk Kixtart http://helpdesk.kixtart.org avant de parcourir mon script afin de voir à quoi correspondent les macros et fonctions utilisées.
Votre script devra porter l’extension .kix et en fonction de votre parc clients (98 ?!, XP, Vista), vous aurez à placer ou non dans votre répertoire de logon ( genre //pdc/netlogon ;-) ) des .dll et .exe requis par Kixtart. Encore une fois, RTFM sur http://www.kixtart.org ou sur le helpdesk.

Notez le truc con, l’exécution de votre script se fera par l’intermédiaire d’un batch.

Voici dans les grandes lignes à quoi peut ressembler un script de connexion:

DEBUG OFF  ; DEBUG ON active le mode debug qui est  vraiment pratique en cas de soucis
; Initialise les variables pour les serveurs / partages  windows
$serveur5 = \\v5
$serveur2 = \\v2
;  ******************** Let's rock ***************************
;  ****************
; *******
; Place un raccourci  applicatif sur le bureau de l'
utilisateur
IF NOT EXIST ("c:\Documents and Settings\@USERID\Bureau\mon raccourci.url")
COPY @LDRIVE+"mon raccourci.url" "c:\Documents and  Settings\@USERID\Bureau" /r/c/h
ENDIF
? " copie de mon raccourci.url"
IF @ERROR <>  0
? @ERROR
ENDIF
; Synchronisation avec le serveur de temps du réseau
SETTIME @LSERVER
IF @ERROR <> 0
? @ERROR
ENDIF
;  On supprime les connexions persistantes potentielles
USE * /Delete /Persistent
; Affiche un message de bienvenue
?  "--------------------------------------------------"
? "Bienvenue sur le domaine "+@LDOMAIN+" "+@FULLNAME
? "Vous utilisez le poste de travail @WKSTA"
?  "--------------------------------------------------"
? ""
; Notifie si le mot de passe est hors d'âge
IF @PWAGE > 79
MESSAGEBOX ("Votre mot de passe a "+@PWAGE+" jours. Pour des raisons de securite, merci de le changer.","CHANGEMENT DU MDP",0)
ENDIF
; Mapping des lecteurs réseaux
?  "Connexion aux lecteurs du reseau..."
?  "..................................................."
;;;;;;;;;;;;;
;  on va commencer par les disques perso des utilisateurs
;;;;;;;;;;;;;
IF  @USERID = "administrateur" GOTO Exit ENDIF ; pas besoin de monter de lecteur pour l'
admin
USE U: /delete
USE U: @LSERVER+"\"+@USERID
IF @ERROR <> 0
? "
Error mapping drive U !"
ENDIF
;;;;;;;;;;;;;
;  maintenant on va mapper les lecteurs réseaux des utilisateurs avec droits spécifiques
;;;;;;;;;;;;;
SELECT</p>
CASE @USERID = "
utilisateur1"
USE P: /delete
USE P: @LSERVER+"
\privee"
IF @ERROR <> 0
? "
Error mapping drive privee !"
ENDIF
USE Q: /delete
USE Q: $serveur5+"
\partage"
IF @ERROR <> 0
? "
Error mapping drive partage !"
ENDIF
CASE @USERID = "
utilisateur2"
USE R: /delete
USE R: @LSERVER+"
\documents"
IF @ERROR <> 0
? "
Error mapping drive documents !"
ENDIF
ENDSELECT
;;;;;;;;;;;;;;
; On va mapper ensuite les lecteurs réseaux communs en fonction des groupes d'appartenance
;;;;;;;;;;;;;;
IF EXIST ("
@LSERVER\@PRIMARYGROUP") = 1
USE O: /delete
USE O: "
@LSERVER\@PRIMARYGROUP"
IF @ERROR <> 0
? "
Error mapping drive @PRIMARYGROUP !"
ENDIF
ENDIF
;;;;;;;;;;;;;;
; On va mapper les lecteurs réseaux communs spécifique à certains groupes d'appartenance
;;;;;;;;;;;;;;
IF @PRIMARYGROUP = "
ungroupe"
USE P: /delete
USE P: $serveur2+"
\d$"
IF @ERROR <> 0
? "
Error mapping drive d$ !"
ENDIF
ENDIF
Exit

Vous voyez, c’est vraiment pas sorcier. Ca m’a aussi permis de réduire de moitié la taille de mon script de connexion par rapport à mon ancien logon.bat.

Je vous ai présenté une utilisation assez basique de Kixtart, cependant il ne faut pas le réduire à une simple fonction de mappage réseau. Vous pouvez vous en servir pour effectuer des opération bien plus puissantes telles que des installations et mises à jour d’applicatifs (ex: antivirus), des interactions avec des fichiers Words ou Excel, des interfaces graphiques, etc.

Comments (0)

Tags: , ,

Optimiser le filtre antispam de Zimbra avec les RBL

Posted on 20 May 2010 by Thomas Ginestet

Lors de l’installation de Zimbra, la configuration de SpamAssassin se résume au minimum.

Pour optimiser le filtrage des spams, vous pouvez configurer et activer des RBL (Realtime Blackhole List). Ces fameuses RBL vont permettre de lister les serveurs connus pour être de gros spammeurs et de catégoriser en spam les mails reçus de ces serveurs. On pourrait donc résumer ça à une grosse liste noire.

Attention cependant à ne pas utiliser n’importe quelle RBL, certaines étant plus ou moins efficaces… Je vous conseille donc d’utiliser uniquement celles répertoriées sur le site officiel de Zimbra.

Voici comment configurer et activer l’utilisation des RBL avec Zimbra:

- Connectons-nous en tant qu’utilisateur zimbra:

thomas@cryonux:~$ su zimbra

- Listons tout d’abord les RBL actuellement utilisées par SpamAssassin:

zimbra@cryonux:~$ zmprov gacf | grep zimbraMtaRestriction

qui me donne:

zimbraMtaRestriction: reject_invalid_hostname
zimbraMtaRestriction: reject_non_fqdn_hostname
zimbraMtaRestriction: reject_non_fqdn_sender
zimbraMtaRestriction: reject_unknown_client
zimbraMtaRestriction: reject_unknown_hostname
zimbraMtaRestriction: reject_unknown_sender_domain

- Récupérons les RBL en cours et ajoutons à celles-ci les RBL listées sur le site de Zimbra dans la commande suivante:

zimbra@cryonux:~$ zmprov mcf zimbraMtaRestriction reject_invalid_hostname zimbraMtaRestriction reject_non_fqdn_hostname zimbraMtaRestriction reject_non_fqdn_sender zimbraMtaRestriction reject_unknown_client zimbraMtaRestriction reject_unknown_hostname zimbraMtaRestriction reject_unknown_sender_domain zimbraMtaRestriction "reject_rbl_client dnsbl.njabl.org" zimbraMtaRestriction "reject_rbl_client cbl.abuseat.org" zimbraMtaRestriction "reject_rbl_client bl.spamcop.net" zimbraMtaRestriction "reject_rbl_client dnsbl.sorbs.net" zimbraMtaRestriction "reject_rbl_client sbl.spamhaus.org" zimbraMtaRestriction "reject_rbl_client relays.mail-abuse.org"

Voilà, ça devrait être déjà mieux !

Comments (1)

Tags: , , ,

Restaurer une sauvegarde Amanda avec Amrestore

Posted on 20 May 2010 by Thomas Ginestet

L’utilitaire Amrestore permet tout comme Amrecover de restaurer les fichiers sauvegardés par Amanda, mais de manière moins “fine”. En effet, si les données à sauvegarder sont trop volumineuses, Amanda effectue la sauvegarde en découpant en plusieurs morceaux les disques déclarés dans votre fichier disklist. Cela permet d’effectuer la sauvegarde plus rapidement.

Amrestore se base sur ces morceaux (chunks) pour établir une restauration. Il ne peut restaurer qu’au minimum un morceau. Pour restaurer un seul fichier, vous êtes obligé de restaurer l’intégralité du morceau dans lequel il se trouve.

Quel est alors l’intérêt d’utiliser un outil “moins puissant” ? C’est simple, contrairement à Amrecover, Amrestore n’a pas besoin des fichiers d’index pour effectuer une restauration. Si vos index sont perdus, vous pouvez donc quand même effectuer une restauration de vos fichiers.

Voici la méthode

Rembobiner la bande:

thomas@cryonux:~$ mt -f /dev/nst0 rewind

Lancer la commande pour lister le contenu de la bande:

thomas@cryonux:~$ amrestore -p /dev/nst0 no-such-host > /dev/null

Voici un exemple de listing qu’amrestore va vous générer:

CMD  N° DE CHUNK   ACTION  SERVEUR._DISQUE.DATE
amrestore: 1: skipping pdc._home.20080917.3.01
amrestore: 2: skipping pdc._home.20080917.3.02
amrestore: 3: skipping pdc._home.20080917.3.03
amrestore: 4: skipping pdc._etc.20080917.3.1
amrestore: 5: skipping pdc._var_lib.20080917.3.2
amrestore: 6: skipping sgbd._opt.20080917.3.3
amrestore: 7: reached end of tape: date 20080918

Puis rembobiner la bande à nouveau:

thomas@cryonux:~$ mt -f /dev/nst0 rewind

Pour restaurer l’ensemble des données du serveur “pdc” présentes sur la bande nous allons faire:

thomas@cryonux:~$ amrestore /dev/nst0 pdc | tar xvf -

Pour ne restaurer par exemple que le disque “etc” du serveur “pdc” nous allons faire:

thomas@cryonux:~$ amrestore /dev/nst0 pdc etc | tar xvf -
amrestore: 1: skipping pdc._home.20080917.3.01
amrestore: 2: skipping pdc._home.20080917.3.02
amrestore: 3: skipping pdc._home.20080917.3.03
amrestore: 4: restoring pdc._etc.20080917.3.1
amrestore: 5: skipping pdc._var_lib.20080917.3.2
amrestore: 6: skipping sgbd._opt.20080917.3.3
amrestore: 7: reached end of tape: date 20080918

Il y a un petit truc pour aller plus rapidement, si au préalable vous aviez lancé le listing de la bande (cf commande correspondante). Amrestore lance la recherche de l’emplacement des données sur la bande avant d’effectuer la restauration et ce processus peut prendre énormément de temps si vous avez beaucoup de données sauvegardées. Le truc consiste alors à se placer directement à l’endroit des données à restaurer, pour cela il suffit d’avoir le numéro du morceau correspondant à cet emplacement sur la bande (n° de chunk).

Exemple avec mon disque “etc” du serveur “pdc”:

thomas@cryonux:~$ mt -f /dev/nst0 fsf 4

4 correspondant donc au morceau où se trouve “etc”

amrestore: 4: restoring pdc._etc.20080917.3.1
amrestore: 5: skipping pdc._var_lib.20080917.3.2
amrestore: 6: skipping sgbd._opt.20080917.3.3
amrestore: 7: reached end of tape: date 20080918

Il ne reste alors plus qu’à décompresser l’archive restaurée pdc._etc.20080917.3.1 avec tar -xzvf

A noter, Amanda n’utilise pas de format propriétaire pour la sauvegarde de vos fichiers. Si votre serveur de sauvegarde est en rade et que vous devez faire une restauration en urgence, vous pouvez tout simplement utiliser les outils Linux pour restaurer vos bandes. Certes, ça va être du “tout ou rien” mais ce n’est pas le moment de chipoter !

En utilisant dd on va pouvoir restaurer tout une bande en un seul coup:

thomas@cryonux:~$ dd  if=/dev/nst0 bs=32k count=1
thomas@cryonux:~$ dd if=/dev/nst0 bs=32k skip=1 | gunzip | tar xvf

Comments (0)

Tags: , ,

Activer automatiquement le verrouillage numérique sous GDM (Ubuntu)

Posted on 20 May 2010 by Thomas Ginestet

Je n’ai jamais compris pourquoi cette option n’était pas activée par défaut, m’enfin voici comment l’activer dès l’invit de connexion de GDM:

Dans le fichier /etc/gdm/Init/Default, placer les lignes suivantes:

if [ -x /usr/bin/numlockx ] ; then
/usr/bin/numlockx on
fi

It works !

Comments (0)

Tags: , , ,

Tester les performances de son disque dur

Posted on 20 May 2010 by Thomas Ginestet

Sous Linux, il existe plusieurs outils afin de tester les performances de votre disque dur voire même de les améliorer:

- HDPARM: J’ai pu lire un peu partout que hdparm ne fonctionne qu’avec les disques IDE. Pourtant le man est formel: “hdparm provides a command line interface to various hard disk ioctls supported by the Linux SATA/PATA/SAS “libata” subsystem and the older IDE driver subsystem.

En gros ça fonctionne aussi avec les disques SATA (sauf condition citée plus bas…) et il suffit de tester pour s’en convaincre ! La preuve avec une tripotée d’informations sur mon disque SATA:

thomas@saturne:~$ sudo hdparm -I /dev/sdb2
/dev/sdb2:
ATA device, with  non-removable media
Model Number:       WDC WD2500AAJS-75VWA0
Serial Number:      WD-WCARZ0203751
Firmware Revision:  12.01B02
Transport:           Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5
Standards:
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical         max     current
cylinders       16383    16383
heads           16      16
sectors/track    63      63
--
CHS current addressable sectors:    16514064
LBA    user addressable sectors:  268435455
LBA48  user addressable sectors:  488281250
device size  with M = 1024*1024:      238418 MBytes
device size with M =  1000*1000:      250000 MBytes (250 GB)
Capabilities:
LBA,  IORDY(can be disabled)
Queue depth: 32
Standby  timer values: spec'd by Standard, with device specific minimum
R/W multiple sector transfer: Max = 16  Current = 8
Recommended acoustic management value: 128, current value: 128
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO:  pio0 pio1 pio2 pio3 pio4
Cycle time: no flow  control=120ns  IORDY flow control=120ns
Commands/features:
Enabled Supported:
*    SMART feature set
Security Mode feature set
*    Power Management  feature set
*    Write cache
*    Look-ahead
*    Host Protected Area feature set
*     WRITE_BUFFER command
*    READ_BUFFER command
*    NOP cmd
*    DOWNLOAD_MICROCODE
Power-Up In Standby feature set
*    SET_FEATURES required  to spinup after power up
SET_MAX security extension
*    Automatic Acoustic Management feature set
*     48-bit Address feature set
*    Device Configuration  Overlay feature set
*    Mandatory FLUSH_CACHE
*    FLUSH_CACHE_EXT
*    SMART error logging
*    SMART self-test
*    General Purpose Logging  feature set
*    WRITE_{DMA|MULTIPLE}_FUA_EXT
*    64-bit World wide name
*    Segmented  DOWNLOAD_MICROCODE
*    SATA-I signaling speed (1.5Gb/s)
*    SATA-II signaling speed (3.0Gb/s)
*     Native Command Queueing (NCQ)
*    Phy event counters
DMA Setup Auto-Activate optimization
*     Software settings preservation
*    SMART Command  Transport (SCT) feature set
*    SCT Long Sector Access  (AC1)
*    SCT LBA Segment Access (AC2)
*     SCT Error Recovery Control (AC3)
*    SCT Features  Control (AC4)
*    SCT Data Tables (AC5)
unknown 206[12]
unknown 206[13]
Security:
Master password revision code = 65534
supported
not     enabled
not     locked
frozen
not     expired: security count
supported: enhanced erase
66min for SECURITY ERASE UNIT.  66min for ENHANCED SECURITY ERASE UNIT.
Checksum: correct

Effectuons maintenant un test de rapidité en lecture sur ce disque (-t) ainsi que sur son cache (-T):

thomas@saturne:~$ sudo hdparm -tT /dev/sdb2
/dev/sdb2:
Timing cached reads:    6818 MB in  2.00 seconds = 3411.63 MB/sec
Timing buffered disk  reads:  228 MB in  3.02 seconds =  75.37 MB/sec

hdparm vous permet aussi d’effectuer des modifications de configuration de votre disque dur, dont certaines plus ou moins risquées. Vous pouvez par exemple:

- Activer , modifier ou désactiver le DMA (Direct Memory Access) avec -d.

- Modifier le paramètrage de l’AAM (Automatic Acoustic Management) avec -M afin d’améliorer les temps d’accès disque ou à l’inverse d’avoir un disque plus silencieux mais des temps d’accès plus important.

- Démonter un disque à chaud avec -Y.

- Réinitialiser un disque avec -w (à bien réfléchir avant).

- Modifier l’APM (Advanced Power Management) avec -B.

Il est également possible de modifier la vitesse de votre lecteur CD avec l’option -E bien que je ne vois pas réellement l’intérêt d’une telle option…après tout les lecteurs sont censés gérer automatiquement cela.

NB: pour rendre vos modifications définitives, vous devrez les paramétrer dans le fichier /etc/hdparm.conf

A noter que si vous disposez d’un disque SATA et qu’il n’apparaît pas en tant que disque IDE, l’utilisation de sdparm plutôt que de hdparm va plus ou moins s’imposer. Le problème c’est que cet utilitaire pour disque SCSl est moins complet que l’autre, essayez donc de déterminer la vitesse de votre disque…

- BONNIE++: Un programme centré sur le benchmark de vos disques. Il n’est pas possible comme avec hdparm de modifier quoi que ce soit dans la configuration de votre disque.

Bonnie++ fonctionne sur tous les types de disques durs et fourni des résultats plus poussés, mais vraiment barbare à décoder !

Voyez par vous même les résultats par défaut de lecture / écriture sur le même disque SATA que précédemment:

Version  1.03        ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine         Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
saturne          4G 42024  69 44121   9 22591   5 51857  80 55822   6 139.7   0
------Sequential Create------ --------Random  Create--------
-Create-- --Read--- -Delete--  -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP   /sec %CP  /sec %CP  /sec %CP  /sec %CP
16 +++++  +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
saturne,4G,42024,69,44121,9,22591,5,51857,80,55822,6,139.7,0,16,+++++,+++,+++++,
+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++

Quelques petites explications sur cette sortie, le benchmark étant décomposé en plusieurs parties:

- sequential output et sequential input: débit en lecture / écriture octet par octet ou bloc par bloc d’un fichier de 4Go. Affichage de la consommation CPU.

- random seek: temps d’accès et charge CPU.

- sequential create: écriture séquentielle de n fichiers et charge CPU.

- random create: écriture aléatoire de n fichiers et charge CPU.

Il est bien évidemment possible d’affiner votre benchmark en modifiant par exemple la taille du fichier généré pour le test avec -s, la taille de la RAM à utiliser avec -r ou encore la désactivation du buffer avec -b.

Pour mettre en forme vos résultats, vous pouvez utilisez deux scripts perl fournis avec bonnie++: bon_csv2html afin d’exporter les résultats en html et bon_csv2txt afin d’exporter les résultats en …

Voici comment l’utiliser:

thomas@saturne:~$ echo saturne,4G,42024,69,44121,9,22591,5,51857,80,55822,6,139.7,0,16,+++++,+++,+++++,
+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ |  bon_csv2html >> bonnie_results.html

Il ne reste plus qu’à ouvrir bonnie_results.html dans un navigateur pour voir s’afficher les résultats de vos différents benchmarks dans un “joli” tableau.

Comments (0)

Tags: , , , ,

Sauvegarder et restaurer sa base OpenLDAP

Posted on 19 May 2010 by Thomas Ginestet

Sauvegarder sa base openLDAP ? Rien de plus simple si l’on prend un minimum de précautions.

Bien que vous puissiez faire cela à chaud, il est quand même conseillé de couper le service avant d’effectuer la sauvegarde. Si vous ne pouvez vous le permettre, vous pouvez également passer le démon slapd en lecture seule afin de ne pas corrompre la base sur une mauvaise manip.
Pour cela il suffit de rajouter dans le fichier de configuration slapd.conf la directive “readonly on” et de relancer le démon slapd.

Sauvegarde de la base:
- Couper le démon slapd (et vérifier qu’il se soit bien arrêté…).

- Ouvrir le fichier de configuration slapd.conf et noter le chemin indiqué par la directive “directory“: c’est le chemin d’accès à votre base LDAP.

- Dans ce répertoire, sauvegarder la totalité des fichiers .bdb qui vous permettront en cas de mauvaise manipulation de retrouver votre base dans son ancien état (il suffira alors de replacer ces fichiers dans le répertoire et de relancer le démon slapd).

- Lancer la commande:

thomas@cryonux:~$ slapcat -n 1 -c /oùvousvoulez/backup.ldif

-n spécifie le nombre de base LDAP dont vous disposez (correspond au nombre de directives “directory” de votre slapd.conf) et -c faisant abstraction des erreurs potentiellement rencontrées.

- Relancer le démon slapd et vérifier que tout fonctionne correctement.

Importation de la sauvegarde:

- Couper le démon slapd (et vérifier qu’il se soit bien arrêté…).

- Dans le répertoire indiqué par “directory“, sauvegarder les fichiers .bdb puis supprimer la totalité des fichiers contenu dans ce répertoire.

- Lancer la commande:

thomas@cryonux:~$ slapadd -n 1 -l /oùvousavezsauvegardé/backup.ldif

- Vérifier que les fichiers .bdb aient bien été reconstruits dans le répertoire indiqué par “directory” et qu’ils aient les bons droits d’accès (lecture et écriture seulement pour le propriétaire de la base).

- Relancer le démon slapd et vérifier que tout fonctionne correctement.

Comments (0)

Tags: , , , ,

Tuner l’utilisation de la RAM avec la variable swappiness

Posted on 19 May 2010 by Thomas Ginestet

Il est erroné de penser que sous Linux, une machine va utiliser toute la RAM disponible avant de commencer à swapper.

La variable swappiness permet de faire varier l’utilisation de la mémoire vive par rapport à la swap. Par défaut, cette variable est fixée à 60 sur une échelle qui va de 0 à 100.

Plus cette valeur est élevée plus le système va avoir tendance à swapper au détriment de l’utilisation de la mémoire vive.

Réduire cette valeur peut améliorer considérablement les performances du système, je vous laisse le soin de tester cela avec les commandes suivantes:

thomas@cryonux:~$ cat /proc/sys/vm/swappiness

ou:

thomas@cryonux:~$ sysctl vm.swappiness

vous permettra de voir quelle est la valeur en cours de swappiness.

thomas@cryonux:~$ sysctl -w vm.swappiness=10

va par exemple fixer la valeur de 10 à swappiness.

Si vous voulez que cette modification soit conservée même après un redémarrage de la machine, il vous faudra la renseigner dans le fichier /etc/sysctl.conf en y insérant la directive suivante:

thomas@cryonux:~$ vm.swappiness = 10

photo: jscreationzs/FreeDigitalPhotos.net

Comments (0)