[Smart] Surveillance disque Ide

 Technologic  Commentaires fermés
nov 282005
 

Smartmontool

Smartmontools est un outil d’analyse de disque dur et de leurs caractéristiques physiques les plus critiques. Il se compose de deux parties : smartd le daemon, qui verifie par périodes de 30 minutes les paramètres en écrivant le résultat dans /var/log/syslog, et la commande smartctl qui nécessite les droits root et qui sert à afficher toutes les informations.

Activation / Installation de smartmontool

L’installation nécessite également les privilèges root : Le nom du package varie selon votre version de debian. L’exemple si dessous concerne une sarge .


# apt-get install smartmontools
Lecture des listes de paquets... Fait
Construction de l'arbre des dependances... Fait
Les NOUVEAUX paquets suivants seront installes :
smartmontools
0 mis a jour, 1 nouvellement installes, 0 a enlever et 60 non mis a jour.
Il est necessaire de prendre 222ko dans les archives.
Apres depaquetage, 508ko d'espace disque supplementaires seront utilises.
Reception de : 1 http://ftp.fr.debian.org unstable/main smartmontools 5.32-3 [222kB]
222ko receptionnes en 0s (272ko/s)
Selection du paquet smartmontools precedemment deselectionne.
(Lecture de la base de données... 67466 fichiers et repertoires deja installes.)
Depaquetage de smartmontools (a partir de .../smartmontools_5.32-3_i386.deb) ...
Parametrage de smartmontools (5.32-3) ...
Not starting S.M.A.R.T. daemon smartd, disabled via /etc/default/smartmontools

Comme vous pouvez voir, le daemon n’as pas été lancé de suite, il faut encore éditer /etc/default/smartmontools et de-commanter les lignes start_smartd=yes et smartd_opts= »—interval=1800″


23:20 root@revolution /# vi /etc/default/smartmontools
Defaults for smartmontools initscript (/etc/init.d/smartmontools)
# This is a POSIX shell fragment

# list of devices you want to explicitly enable S.M.A.R.T. for
# not needed if the device is monitored by smartd
# enable_smart="/dev/hda /dev/hdb"

# uncomment to start smartd on system startup
start_smartd=yes

# uncomment to pass additional options to smartd on startup
smartd_opts="--interval=1800"
<code>

Les changements validés, lancez le daemon avec la commande {/etc/init.d/smartmontools start}

<code>
# /etc/init.d/smartmontools start
Enabling S.M.A.R.T. for: /dev/hda /dev/hdb.
Starting S.M.A.R.T. daemon: smartd.
23:21 root@revolution /# smartctl -a /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen

Le daemon smartd contrôlera maintenant à un rythme régulier les informations de votre disque et les inscrit dans vos logs :


# cat /var/log/syslog | grep smartd
Mar 17 10:48:34 slut smartd[990]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices

Et voilà c’est prêt.

réglages fin

Pour régler finement la configuration de smartmontools il vous faut éditer le fichier /etc/smartd.conf et rechercher la ligne DEVICESCAN ajouter vos propre réglage comme sur cet exemple :

DEVICESCAN -H -l error -l selftest -t -f -m admin@votredomaine.fr -M exec /usr/bin/mail -s (S/../.././02|L/../../6/03)

La directive DEVICESCAN indique que l’on souhaite appliquer cette configuration à tous les disques dur détectés comme compatible SMART sur le système. Elle peut-être remplacée par le nom d’un périphérique /dev/hdx ou /dev/sdx.


/dev/hda -H -l error -l selftest -t -f -m admin@votredomaine.fr -M exec /usr/bin/mail -s (S/../.././02|L/../../6/03)
/dev/hdc -H -l error -l selftest -t -f -m admin@votredomaine.fr -M exec /usr/bin/mail -s (S/../.././02|L/../../6/03)

L’ajout de cette ligne dans le fichier de configuration permet d’émettre un email à admin@domain.com en utilisant la commande mail de votre système. L’option -t indique que nous souhaitons être informé au cas où l’attribut « Pre-Fail » ou « Old-age » présente des erreurs, si le test de santé (option -H) échoue ou si les journaux d’erreurs error et selftest évoluent (-l). On peut choisir parmi un panel d’options afin d’ajuster au mieux en fonction de ses besoins. On peut par exemple décider d’ignorer volontairement un attribut à l’aide de l’option -I. L’ajout de l’option -I 194 indique que nous souhaitons recevoir un mail en cas de panne mais en ignorant l’attribut numéro 194 (la température). L’option -s permet de définir la périodicité des tests à réaliser ( version >5.30 nécessaire). Dans cet exemple, nous réalisons un test court (S/) tous les jours à 2 heures du matin, et un test long tous les samedi à 3 heures du matin. Il est également possible de modifier le mail qui sera envoyé par smartd en cas de panne. Il suffit de créer un script qui sera appelé à la place de /bin/mail.

Diagnostique et recherche d’erreur

Comme smartd écrit dans /var/log/syslog il est facile de rechercher avec une commande grep un message comme dans l’exemple suivant :


[root@slut /]# grep smartd /var/log/syslog
Mar 17 10:48:34 slut smartd[990]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices
Mar 17 10:48:34 slut smartd[990]: Device: /dev/hda, opened
Mar 17 10:48:34 slut smartd[990]: Device: /dev/hda, found in smartd database.
Mar 17 10:48:35 slut smartd[990]: Device: /dev/hda, is SMART capable. Adding to "monitor" list.
Mar 17 10:48:35 slut smartd[990]: Device: /dev/hdb, opened
Mar 17 10:48:35 slut smartd[990]: Device: /dev/hdb, not ATA, no IDENTIFY DEVICE Structure
Mar 17 10:48:35 slut smartd[990]: Monitoring 1 ATA and 0 SCSI devices
mar 17 10:48:35 slut smartd: Lancement smartd succeeded
Mar 17 10:48:35 slut smartd[2421]: smartd has fork()ed into background mode. New PID=2421.
Mar 17 13:48:35 slut smartd[2421]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 246 to 247
Mar 17 15:48:35 slut smartd[2421]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 247 to 246
Mar 17 17:18:35 slut smartd[2421]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 246 to 247

Comment interpréter ces lignes ? Le disque montre une valeur constante qui varie entre 246 et 247. Si la valeur change de brutalement de 247 à 500, il s’agit d’un comportement anormal.

L’utilisation de la commande smartctl nécessite les droits root. Voyons les différents attributs de la commande.

smartl -h


[root@ slut /]# smartctl -h
smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/[1]
Usage: smartctl [options] device
h, --help, --usage
Display this help and exit
i, --info
Show identity information for device
a, --all
Show all SMART information for device

smartctl -i /dev/hda


=== START OF INFORMATION SECTION ===
Device Model: Maxtor 6E040L0
Serial Number: E1KTPXFE
Firmware Version: NAR61590
User Capacity: 41,110,142,976 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: ATA/ATAPI-7 T13 1532D revision 0
Local Time is: Thu Mar 17 22:21:52 2005 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

smartctl -a /dev/hda


[root@ slut /]# smartctl -a /dev/hda donne le résultat:
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: (1021) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
No General Purpose Logging support.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 17) minutes.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
3 Spin_Up_Time 0x0027 252 252 063 Pre-fail Always - 2463
4 Start_Stop_Count 0x0032 253 253 000 Old_age Always - 18
5 Reallocated_Sector_Ct 0x0033 253 253 063 Pre-fail Always - 0
6 Read_Channel_Margin 0x0001 253 253 100 Pre-fail Offline - 0
7 Seek_Error_Rate 0x000a 253 252 000 Old_age Always - 0
8 Seek_Time_Performance 0x0027 247 238 187 Pre-fail Always - 46214
9 Power_On_Minutes 0x0032 241 241 000 Old_age Always - 950h+09m
10 Spin_Retry_Count 0x002b 252 252 157 Pre-fail Always - 0
11 Calibration_Retry_Count 0x002b 253 252 223 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 253 253 000 Old_age Always - 22
192 Power-Off_Retract_Count 0x0032 253 253 000 Old_age Always - 13
193 Load_Cycle_Count 0x0032 253 253 000 Old_age Always - 72
194 Temperature_Celsius 0x0032 253 253 000 Old_age Always - 31
195 Hardware_ECC_Recovered 0x000a 253 252 000 Old_age Always - 25095
196 Reallocated_Event_Count 0x0008 253 253 000 Old_age Offline - 0
197 Current_Pending_Sector 0x0008 253 253 000 Old_age Offline - 0
198 Offline_Uncorrectable 0x0008 253 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0008 199 199 000 Old_age Offline - 0
200 Multi_Zone_Error_Rate 0x000a 253 252 000 Old_age Always - 0
201 Soft_Read_Error_Rate 0x000a 251 138 000 Old_age Always - 1746
202 TA_Increase_Count 0x000a 253 252 000 Old_age Always - 0
203 Run_Out_Cancel 0x000b 253 252 180 Pre-fail Always - 137
204 Shock_Count_Write_Opern 0x000a 253 252 000 Old_age Always - 0
205 Shock_Rate_Write_Opern 0x000a 253 252 000 Old_age Always - 0
207 Spin_High_Current 0x002a 252 252 000 Old_age Always - 0
208 Spin_Buzz 0x002a 252 252 000 Old_age Always - 0
209 Offline_Seek_Performnce 0x0024 187 183 000 Old_age Offline - 0
99 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
100 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
101 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Maintenant il reste l’interprétation des informations tel que l’uptime du disque, la température et, pour nous le plus intéressant, les erreurs. Pour cela nous observons surtout les deux dernières colonnes : WHEN_FAILED et RAW_VALUE et la section juste en dessous : SMART Error Log Version : 1 No Errors Logged.

Un exemple :


5 Reallocated_Sector_Ct 0x0033 016 016 063 Pre-fail Always FAILING_NOW 598

Ici on voit que la réallocation des secteurs à échoué. Il faut donc surveiller cette partie. Si le nombre indiqué passe rapidement à des chiffres supérieurs, prenez les mesures nécessaires : faites le backup de vos données et contactez éventuellement le support.

Conclusion

Smartmontool est simple d’usage et trés complet. Notez que toutefois un tel outil ne remplace pas le plus important : le backup régulier de vos données.

Exemple d’incident Raid5

 Technologic  Commentaires fermés
nov 182005
 

Un matin
Un email de démon mdadm annonçant une erreur dans la grappe raid5


This is an automatically generated mail message from mdadm
running on hoth

A Fail event had been detected on md device /dev/md6.

Faithfully yours, etc.

La commande dmesg lancé depuis le compte rot m’informe que le disque sdc a des secteurs déffectueux.


[22171490.224000] SCSI error : <4 0 0 0> return code = 0x8000002
[22171490.224000] sdc: Current: sense key: Medium Error
[22171490.224000] Additional sense: No additional sense information
[22171490.224000] Info fld=0x73350b0
[22171490.224000] end_request: I/O error, dev sdc, sector 120803504
[22171490.224000] raid5: Disk failure on sdc, disabling device. Operation continuing on 5 devices
[22171490.228000] RAID5 conf printout:
[22171490.228000] --- rd:6 wd:5 fd:1
[22171490.228000] disk 0, o:0, dev:sdc
[22171490.228000] disk 1, o:1, dev:sdd
[22171490.228000] disk 2, o:1, dev:sde
[22171490.228000] disk 3, o:1, dev:sdf
[22171490.228000] disk 4, o:1, dev:sdg
[22171490.228000] disk 5, o:1, dev:sdh
[22171490.240000] RAID5 conf printout:
[22171490.240000] --- rd:6 wd:5 fd:1
[22171490.240000] disk 1, o:1, dev:sdd
[22171490.240000] disk 2, o:1, dev:sde
[22171490.240000] disk 3, o:1, dev:sdf
[22171490.240000] disk 4, o:1, dev:sdg
[22171490.240000] disk 5, o:1, dev:sdh
[22171490.240000] RAID5 conf printout:
[22171490.240000] --- rd:6 wd:5 fd:1
[22171490.240000] disk 0, o:1, dev:sdi
[22171490.240000] disk 1, o:1, dev:sdd
[22171490.240000] disk 2, o:1, dev:sde
[22171490.240000] disk 3, o:1, dev:sdf
[22171490.240000] disk 4, o:1, dev:sdg
[22171490.240000] disk 5, o:1, dev:sdh
[22171490.240000] md: syncing RAID array md6
[22171490.240000] md: minimum _guaranteed_ reconstruction speed: 1000 KB/sec/disc.
[22171490.240000] md: using maximum available idle IO bandwith (but not more than 200000 KB/sec) for reconstruction.
[22171490.240000] md: using 128k window, over a total of 293036096 blocks.

Je vérifie que la reconstruction automatique du raid avec le disque de backup à bien débuté :


# cat /proc/mdstat

Le reconstruction ayant bien débuté je retire le disque en erreur


# mdadm /dev/md6 --remove /dev/sdc

Je lance en suite un test de lecture bit à bit sur l’itégratilité du disque


# pv /dev/sdc > /dev/null
pv: (stdin): read failed: Input/output error ] 20% ETA 1:05:55
57.6GB 0:17:07 [57.4MB/s] [=============> ] 20% ETA 1:05:55

Input/output error !
La lecture à échoué à 20% du disque. Pas de doute il y a un problème matériel avec ce disques.

J’utilise de nouveau la commande dmesg, Le disque sdc à effectivement des secteurs déffectueux.


[22263951.048000] SCSI error : <4 0 0 0> return code = 0x8000002
[22263951.048000] sdc: Current: sense key: Medium Error
[22263951.048000] Additional sense: No additional sense information
[22263951.048000] Info fld=0x7335095
[22263951.048000] end_request: I/O error, dev sdc, sector 120803472
[22263951.048000] Buffer I/O error on device sdc, logical block 15100434
[22263954.820000] SCSI error : <4 0 0 0> return code = 0x8000002
[22263954.820000] sdc: Current: sense key: Medium Error
[22263954.820000] Additional sense: No additional sense information
[22263954.820000] Info fld=0x73350a3
[22263954.820000] end_request: I/O error, dev sdc, sector 120803488
[22263954.820000] Buffer I/O error on device sdc, logical block 15100436
[22263962.384000] SCSI error : <4 0 0 0> return code = 0x8000002
[22263962.384000] sdc: Current: sense key: Medium Error
[22263962.384000] Additional sense: No additional sense information
[22263962.384000] Info fld=0x73350b0
[22263962.384000] end_request: I/O error, dev sdc, sector 120803504
[22263962.384000] Buffer I/O error on device sdc, logical block 15100438

Je lancer alors une ecriture bit à bit sur l’intégalité du disque. Ce la va forcer le firmware du disque à enregistrer les secteurs en erreur à les ajouter à sa liste d’exclusion. Si cela échoue c’est que le disque à plus que quelque secteur déffectueux mais un vrais problème mécanique (ou un firmware bogué)


# pv /dev/zero > /dev/sdc
#pv: write failed: No space left on device <=> ]
#

Et voila : No space left on device. Le disque à été remplis dans son intégralité sans erreur. Le firmware a donc joué son rôle et exclus les secteurs en erreur.

Je ré-ajoute le disque sdc dans la grappe raid. Il prend la place du disque de backup.


mdadm /dev/md6 -a /dev/sdc

Pour vérifier le bon fonctionnement du disque dans le raid je déclenche une erreur sur le disque sdi mdadm /dev/md6 —fail /dev/sdi

Le raid marque le disque sdi en erreur et ce reconstruit automatiquement avec le disque sdc sans le moindre problème.

Je n’ai plus qu’a replacer le disque sdi en position de backup au cas ou le disque sdc aurait d’autre problème. Pour cela je le retire du raid.


# mdadm /dev/md6 --remove /dev/sdi

Avant de le rajouté.


mdadm /dev/md6 -a /dev/sdi
oct 242005
 

Copyright © 03/12/2004, Mathieu Changeat licence

Introduction

Ce document va décrire les étapes à suivre pour pouvoir lancer une installation de la distribution Debian sur un poste qui ne possède ni lecteur CD ni lecteur disquettes, mais une interface réseau et la prise en charge du boot réseau. Les ultraportables sont par exemple concernés !

Je tiens à dire qu’il s’agit d’une méthode, je ne dis pas que c’est la seule ni la plus simple, mais elle a le mérite de fonctionner et d’être assez générique. Ainsi en appliquant les translations habituelles de commandes entre les différentes distributions, il doit aussi être possible d’appliquer ce petit didacticiel aux autres distributions.

D’autre part, cet article ne prend pas du tout en compte les problèmes de sécurité liés à chacun des serveurs à mettre en place. Nous partons du principe qu’il suffit de les lancer occasionnellement, dans la mesure où l’installation d’une distribution Linux ne se fait que très rarement !

Fonctionnement général

Avant de me lancer dans des explications d’installation et de configuration, je vais expliquer en quelques mots comment fonctionne le boot réseau. (en tout cas, tel que je l’ai compris).

Le boot réseau passe par PXE (pour Preboot eXecution Environment), un protocole propriétaire d’Intel. La carte réseau possède une PROM sur laquelle la machine va booter. Cette PROM contient les premières instructions qui vont permettre d’effectuer une requête DHCP (Dynamic Host Configuration Protocol) auprès du serveur afin d’obtenir une adresse IP sur le réseau et de charger ainsi le client PXE en RAM. Le client récupère ensuite le noyau linux par TFTP (Trivial FTP) et peut donc booter sur ce noyau.

A la lecture de ce paragraphe succint, on s’aperçoit qu’il faut utiliser pas moins de 3 serveurs :

  1. TFTPD
  2. PXE
  3. DHCPD

Serveur TFTP

Ce serveur est une version ultra simplifiée de FTP, qui ne nécessite aucune authentification. Il ne propose pas non plus l’affichage du contenu des répertoires. Donc, lorsqu’on veut récupérer un fichier, il faut connaitre son nom.

Pour l’installer, tapez simplement :


apt-get install atftpd.

Par défaut, son répertoire de base est /tftpboot. Pour le vérifier, éditez le fichier /etc/default/atftpd. S’il n’existe pas, créez-le.


USE_INETD=false
OPTIONS="--daemon --port 69 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot"

Ce serveur ne nécessite pas de configuration supplémentaire pour l’usage que nous en aurons.

Serveur PXE

Commencez par l’installer :


apt-get install pxe syslinux.

Editez le fichier /etc/pxe.conf et adapter les valeurs réseau au votre, notamment quelle sera l’interface réseau sur lequel va se connecter le client, l’IP de celle-ci ainsi que le chemin de base /tftpboot.

Il faut maintenant définir le fichier de configuration de PXE lui indiquant quel est le noyau linux sur lequel le poste client va booter. Mais comme vous êtes d’heureux utilisateurs d’une Debian, ses développeurs ont pensé à vous (nous) et proposent sur certains miroirs des images et configurations toutes prêtes. Récupérez l’archive netboot.tar.gz présente à cette adresse : http://http.us.debian.org/debian/dists/sarge/main/installer-i386/current//images/netboot/

Puis décompressez-la dans /tftpboot.


tar xvzf ./netboot.tar.gz

Si vous n’êtes pas intéressés par le détail de cette configuration, et que seul le boot vous intéresse, vous pouvez passer directement à l’installation de DHCP.

Comme nous l’expliquions en introduction, PXE dans sa configuration précise quel noyau linux vous allez utiliser pour booter sur le poste client. Le fichier de configuration ressemble étrangement à celui de lilo. Il doit se situer dans /tftpboot/pxelinux.cfg et s’appeler default.

En voici un exemple :


display debian-installer/i386/boot-screens/syslinux.txt
default linux

F1 debian-installer/i386/boot-screens/f1.txt
F2 debian-installer/i386/boot-screens/f2.txt
F3 debian-installer/i386/boot-screens/f3.txt
F4 debian-installer/i386/boot-screens/f4.txt
F5 debian-installer/i386/boot-screens/f5.txt
F6 debian-installer/i386/boot-screens/f6.txt
F7 debian-installer/i386/boot-screens/f7.txt
F8 debian-installer/i386/boot-screens/f8.txt
F9 debian-installer/i386/boot-screens/f9.txt
F0 debian-installer/i386/boot-screens/f10.txt

label linux
kernel debian-installer/i386/linux
append vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
label expert
kernel debian-installer/i386/linux
append DEBCONF_PRIORITY=low vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
label linux26
kernel debian-installer/i386/2.6/linux
append vga=normal initrd=debian-installer/i386/2.6/initrd.gz debian-installer/framebuffer=false ramdisk_size=10934 root=/dev/rd/0 devfs=mount,dall rw --
label expert26
kernel debian-installer/i386/2.6/linux
append DEBCONF_PRIORITY=low vga=normal initrd=debian-installer/i386/2.6/initrd.gz ramdisk_size=10934 root=/dev/rd/0 devfs=mount,dall rw --

prompt 1
timeout 0

Dans cette exemple j’ai ajouter l’option debian-installer/framebuffer=false pour le boot du noyau linux26 pour utiliser la fonction remote control offerte par le module de management d’un IBM Bladecenter.

La syntaxe video=vga16:off est également possible.

Voici un exemple de son contenu :

Serveur DHCP

Sous Debian il existe plusieurs versions de ce serveur. Si vous êtes à l’aise avec leur configuration respective, votre version conviendra, sinon en respectant bêtement les instructions suivantes, vous ne devriez pas avoir de difficulté.

Commencez par installer le serveur :


apt-get install dhcp

Le fichier de configuration de DHCP permet d’envisager une multitude de cas d’architectures réseaux. Nous allons considérer la plus simple. Le serveur est dans le réseau 10.200.0.0 avec le masque 255.255.255.0 .

Voici un bloc à rajouter dans /etc/dhcpd.conf afin que la machine cliente obtienne une adresse IP entre 10.200.0.1 et 10.200.0.99. Ces valeurs sont bien sur arbitraires, vous pouvez choisir vous même la plage.


subnet 10.200.0.0 netmask 255.255.255.0 {

range 10.200.0.1 10.200.0.99;
server-name "server";
filename "/tftpboot/pxelinux.0";

}

Si vous disposez de plusieurs interfaces réseau, vous pouvez préciser sur laquelle (ou lesquelles) vous voulez que DHCP réponde aux requêtes. Pour cela, il vous suffit d’éditer le fichier /etc/default/dhcp.

Lancement

Maintenant que tout est installé et configuré, il faut lancer les 3 serveurs :


/etc/init.d/atftpd start
/etc/init.d/pxe start
/etc/init.d/dhcp start

Les 2 premiers ne devraient pas vous poser de problème. DHCP peut quant à lui vous afficher une ligne d’erreur. Pour savoir ce qui ne va pas, vous aurez probablement à inspecter syslog avec la commande :


cat /var/log/messages.

Dès qu’il n’y a plus d’erreur vous pouvez tester votre boot réseau. Branchez la machine cliente et assurez vous qu’elle est configurée pour booter sur le réseau en premier choix. Si tout va bien, vous devriez voir s’afficher au fur et à mesure de l’avancement du boot réseau, de multiples informations : l’adresse IP obtenue, le téléchargement par TFTP, etc …

Et en quelques secondes, l’écran Debian va s’afficher vous proposant alors d’installer la distribution. Pour tout le reste, tout redevient habituel, mais il faut tout de même considérer que votre machine serveur doit partager sa connexion web si vous voulez installer des paquet.

Si le boot réseau est très long et que vous observez des timeout, cela peut venir soit d’une mauvaise configuration, soit de votre firewall qui bloque les ports des différents serveurs. Pour information, voici les numéros de ports qu’utilisent ces derniers :

  1. PXE : 4011
  2. DHCPD : 67
  3. TFTPD : 69

Pour chacun d’entre eux, vous pouvez modifier le numéro de port associé dans les fichiers de configurations respectifs. Mais gardez en tête que la machine client utilisera très certainement les valeurs par défaut.

MAJ certificat ssl apache 1.3

 Technologic  Commentaires fermés
oct 042005
 

Le certificat est généré à l’installation du paquet apache-ssl par dpkg. Il est possible de le reconfigurer simplement en réutilisant la procédure d’installation.

Stopper le serveur


/etc/init.d/apache-ssl stop

Supprimer le certificat


rm /etc/apache-ssl/apache.pem

Supprimer le lien symbolique sur ce fichier dans le répertoire


/etc/apache-ssl

Relancer la configuration


dpkg-reconfigure apache-ssl

Le certificat généré à un duré de un mois. Pour avoir une duré supérieur le paramètre de openssl est -days.

Le script lancer par la procédure d’installation ou de reconfiguration est : /usr/sbin/make-ssl-cert

A la ligne 90 de ce script remplacer


openssl req -config $TMPFILE -new -x509 -nodes -out $output \

Par


openssl req -config $TMPFILE -days 365 -new -x509 -nodes -out $output \

ici le certificat est valable 365 jours

Relancer en suite la configuration


dpkg-reconfigure apache-ssl

Ou la commande si dessous qui est l’équivalent


/usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache-ssl/apache.pem

Backup avec Unison et ssh

 Technologic  Commentaires fermés
août 082005
 

Unison

A la rechercher d’un solution souple et adaptable pour éffectuer des sauvegardes de donnée de station de travail et de serveur sur un gros serveur de fichier distant avec une grappe raid6 de 1,2 To (8 disques)

Et d’un coup d’apt-get j’ai trouvé : UNISON

Le man unison donne cette brève description :

« a file-synchronization tool for Unix and Windows »

Toutes mes informations sont sur le site web de unisons : cliquez ici Il y a entre autre le User Manual and Reference qu’il est indispensable de lire. Il debute par quelque exercises facile pour comprend le principe de base. Faite vos test dans un coin pour mieux appréhender l’outil.

Installation Linux Debian

L’installation sous debian est toujours aussi facile :

apt-get install unison

Installation sous Windows XP

Il y a different binaire disponible sur le site de UNISON en dowload mais je recommande de prendre la version stable en ligne de commande, facile à installer et a utliser en batch avec l’ordonateur de tache.

Comme cette version porte le nom de unison.win32-textui.exe je vous recommende de le renomer en unison.exe et de placer dans c :/windows/system32/ afin qu’il soit disponible dans le path.

Installation sous Aix

Unison est disponible sous IBM Aix également, vous pouvez le télécharger sur la page bullfreeware.com. Les intructions d’installation via smitty sont disponible sur le même site ici .

Première utilisation

Simple comme bonjour si vous avez au moins regardé le User Manual and Reference qu’il est indispensable de lire.

unison dir1 dir2

Par defaut unison travail en mode interactif. Il va donc prépater une liste des fichier et repertoire présent dans dir1 avec leur attribues (date, taille). Puis vous demander pour chacun des differences avec dir2 vous demander la marche a suivre.

Par exemple pour recopier le fichier file-exemple de dir1 a dir2 voici le dialogue :


/dir1 /dir2
new file-exemple ----> / [f] f

la commande f pour flush indique de procéder

A la suite de cela il vous demander de valider la globalité de la synchronisation, repondez y.


Proceed with propagating updates? []

NOTE : Danger Attention a l’ordre de présentation de repertoire à synchroniser ! Présenter dir2 avant dir1 implique que c’est le repertoire dir2 qui est le référent. si celuis ci est vide, unison supprimera tout de dir1.

Regarde bien avant de valider.


/dir2 /dir1
----> delete file-exemple / [f] f

Methode : De disque a disque

Le plus facile est de faire une synchronisation de disque a disque sur un même machine. Il est possible de le faire au travers d’un montage nfs également.

Voici deux exemples de script à placer dans la crontab ou dans l’ordonateur de tache.

Sous linux avec NFS


#!/bin/sh

/usr/bin/unison /var/lib -path=mysql /mnt/serveur/host/ -batch -force /var/lib
/usr/bin/unison /var -path=www /mnt/serveur/host/ -batch

Ici en deux lignes je sauvegarde :
- mes bases de données présente dans /var/lib/mysql
- mon site web dans /var/lib/www

Attention j’ai pris sois de monter un partage nfs du serveur serveur dans /mnt/serveur. Pour cela ajouter la ligne suivante à /etc/fstab et lancer la commande commande mount -a :

serveur.karlesnine.com:/partagenfs /mnt/serveur nfs defaults 0 0

Les options utilisées :
- -patch=mysql pour le prendre en compte qu’un repertoire ou fichier dans un racine pouvant en présenter plusieur comme dans le cas de /var/lib.
- -force /var/lib oblige unison a synchroniser dans un seul sens. ici ne prenant en compte que les modifications local force /var/lib et les imposant sur le partage nfs.
- -batch mode batch, toute les modifications sont valider par defaut il n’y a donc plus de question.

Sous windows

Sous winwows il est possible de faire de même via un partage de fichier smb / samba préalablement activé. Je ne detaille pas ici cette manipulation propre a windows.


unison "C:\Documents and Settings\Nat\Bureau" "Z:\Nat\Bureau" -batch -force "C:\Documents and Settings\Nat\Bureau"

unison "C:\Documents and Settings\Nat\Mes documents" "Z:\Nat\Mes documents" -batch -force "C:\Documents and Settings\Nat\Mes documents"

unison "C:\Documents and Settings\Nat\Application Data\Thunderbird" "Z:\Nat\Thunderbird" -batch -force "C:\Documents and Settings\Nat\Application Data\Thunderbird"

Sous windows la syntaxe reste la même seul change la présentation des chemins de répertoire.
Cependant faire attention aux doubles cotes.

Une doc sur unison et windows

http://demas.free.fr/HowTo/unison/#_Toc32303312

Et avec ssh ?

Sauvegarder via un connexion ssh offre l’avantage de ne pas utiliser de nfs et donc d’administrer des montages non sécurisés et donc l’utilisation d’un tunnel crypté avec identification par clef.

Pas de NFS pour eviter :
- les access root sur un fileserveur distant
- les problèmes de montage
- la simple indication donner parla présence ou le parcoure d’une arborescence
- Palier à la faible sécurité de nfs V3.

Ssh pour :
- Avoir des connexions ponctuelles, automatisées et masquées
- Limite les droits de connexion
- Crypter les tunnels de connexion.
- Avoir une compression minimum du transfert de donnée
- Pouvoir révoquer les droits de connexion de façon centralisé

Unison pour :
- La synchronisation bi-directionnel
- Le filtrage sur les noms de fichiers
- L’intégration avec ssh

Sous Linux via SSH

Serveur de fichier

Sur le serveur de fichier copier la cléf ssh publique créé spécialement pour cette connexion de backup en ajoutant l’option no-pty dans le fichier $HOME/.ssh/authorized_keys du compte choisi pour recevoir la connexion . Ceci pour bloquer l’ouverture d’un shell (apportant un petit plus de sécurité) comme dans cette exemple :


no-pty ssh-dss AAAAB3NzaC...../ /...qxX/27ZZ9X5vAVA== backup

Attention a bien choisir le compte utilisé et a configurer les droit d’écriture sur l’arborescence de destination choisie.
Dans mon architecture j’ai pris le compte admin qui n’est qu’un simple compte utilisateur lamba.

Serveur client

Ajouter dans le répertoire .ssh du compte servant à faire le backup, ici root pour parcourir l’arborescence quelque soit le propriétaire des répertoires, le fichier de configuration particulier nommé config suivant


Host backup
Compression yes
ForwardAgent no
Cipher blowfish
User admin
IdentityFile ~/.ssh/backup
HostName serveur.karlesnine.com

Ce fichier apporte l’utilisation d’un alias backup pour un ensemble de paramètres. En voici l’explication dans l’ordre :
- La compression
- Le blocage du forward de clé
- Une cryptographie legère blowfish
- Le compte utilisateur cible.
- la définition de la clé
- Le serveur de destination

Je ne peux que vous conseillé de vous reporter au site offichier Openssh pour plus de documentation.

Unison

La configuration de unison ce fait avec un fichier default.prf placé dans le répertoire $HOME/.unison du compte servant à faire le backup.


# Unison preferences file
ignore = Name {core,*.pyc,*.dat,*.xcu, *.dvi, *.log, *.pid, *.out, unison.log}
ignore = Path .unison
ignore = Name toto
ignore = Name tutu
ignore = Name tmp
ignore = Name temp
logfile = /var/log/unison.log

Ce fichier de configuration apporte le filtrage sur différent nom de fichier qu’il est trop difficile à sauvegarder ou inutile.
- ignore = Name pour exclure de la synchronisation des fichiers trop souvent modifiés ou volumineux.
- ignore = Path .unison pour le pas synchroniser le repertoire de unison présent dans le compte utilisateur qui lance la synchorisation. En effet unison stock ici ces tables de mise à jour qu’il modifie durant chaque synchronisation.
- Logfile Pour que unison sauvegarde les log ailleur que dans l’environement utilisateur.

Shell script linux de backup

Un petit shell script pour effectuer le backup


#!/bin/sh
#
# Backup avec Unison
# http://www.cis.upenn.edu/~bcpierce/unison/
# Charles-Christian CROIX
# 15/01/2005
# 15/07/2005

UNISON="/usr/bin/unison
MYSQLDUMP="/usr/bin/mysqldump"

$UNISON /etc ssh://backup//home/backupbyhost/$HOSTNAME/etc -silent -backups -maxbackups 3 -batch -force /etc
$UNISON /root ssh://backup//home/backupbyhost/$HOSTNAME/root -silent -backups -maxbackups 3 -batch -force /root

$MYSQLDUMP -u root --all-databases | gzip > /var/lib/mysql/dump/FullDatabasesBackup_$HOSTNAME.sql.gz
$UNISON /var/lib/mysql/dump ssh://backup//home/backupbyhost/$HOSTNAME/var/lib/mysql/dump/ -silent -batch -force /var/lib/mysql/dump

cat /var/log/unison.log | mail admin@votredomaine.fr -s "[$HOSTNAME] Backup"
cat /dev/null > /var/log/unison.log

Option de unison :
- ssh ://backup//home/backupbyhost/$HOSTNAME/etc dans cette ligne nous voyons l’alias ssh backup d’utilisé.
- -silent pour eviter que le cron utiliser pour lancer ce script ne vous spam
- -batch pour eviter l’interactivité
- -force pour forcer la mise à jour du serveur de backup même si celuis ci semble être plus récent.
- -backups pour demander de sauvegarder la version précédente d’un fichier devant être synchronisé avant son écrasement. Sur le serveur distant un fichier test.txt sera ainsi recopier en .test.txt.0.unison.bak avant que la nouvelle version de test.txt ne soit écrite.
- -maxbackups 3 Nombre machimum de sauvegarde avec l’option -backups. Ici trois version comme dans cette exemple : .test.txt.0.unison.bak .test.txt.1.unison.bak .test.txt.2.unison.bak

Concernant l’utilisation de mysqldump :
Dans cette exemple j’ai fait le choix d’extraire l’intégralité des informations des bases de données (data et structure) dans un fichier .sql que le gzip par la suite. C’est ce fichier qui est placé dans un répertoire devant être synchronisé.

Plus facilement il est possible de sauvegarder l’arborescence de mysql en entier afin de disposer des fichiers base par base et table par table. Attention de stoper mysql si besoin pour acceder au fichier en dehors de toute écriture.

Shell script aix de backup

voici le même script que précédement mais adapté a l’environnement Aix qui ne comporte pas les mêmes variables d’environement ($HOSTNAME) ni les même emplacements pour unison. En outre la commande Mail ne répond pas à la même syntaxe.


#!/bin/sh
#
# Backup avec Unison
# http://www.cis.upenn.edu/~bcpierce/unison/
# Charles-Christian CROIX
# 15/01/2005
# 15/07/2005
# 04/08/2005 Aix version

HOSTNAME="aix3"
UNISON="/usr/local/bin/unison"

cat /dev/null > /root/.unison/unison.log
date > /root/.unison/unison.log

for I in `ls -l /home | grep ^d | grep -v lost+found | awk '{print $9}'`;
do /usr/local/bin/unison /home/$I ssh://backup//home/backupbyhost/$HOSTNAME/home/$I -silent -backups -maxbackups 2 -batch -force /home/$I;
done;

$UNISON /etc ssh://backup//home/backupbyhost/$HOSTNAME/etc -silent -backups -maxbackups 3 -batch -force /etc
$UNISON /root ssh://backup//home/backupbyhost/$HOSTNAME/root -silent -backups -maxbackups 3 -batch -force /root

mail -s "[Aix3] Backup" admin@votredomaine.fr < /root/.unison/unison.log

La bouche for en shell est destiné a optenir la liste des seul répertoires présent dans /home (donc a l’exclusion des fichiers) et a filtré ceux ci par un grep -V partern en fonction de l’environnement particulié de chaque machine aix. Puis pour chaque élément de cette liste réalisé une synchronisation.

© 2012 Karlesnine Suffusion theme by Sayontan Sinha