Archives pour la catégorie ‘Système’

Munin : monitorer la température des disques durs sous FreeBSD & Mac OS X


Je vous fais part de mon patch pour le plugin hddtemp_smartctl de Munin afin que la température des disques durs puisse être monitorée sous FreeBSD, OpenBSD, NetBSD et Mac OS X :

http://exchange.munin-monitoring.org/plugins/hddtemp_smartctl/details

Pour rappel, ce plugin nécessite le port sysutils/smartmontools. La commande smartctl n’étant fonctionnelle que sous root, il faut adapter la configuration de Munin dans le fichier /usr/local/etc/munin/plugin-conf.d/plugins.conf :

[hddtemp_smartctl]
user root

Pour tester le bon fonctionnement du plugin, rien de plus simple :

$ perl /usr/local/etc/munin/plugins/hddtemp_smartctl
disk0.value 50

Mac OS X : placer les widgets Dashboard directement sur le bureau

Pour pouvoir utiliser vos widgets Dashboard directement depuis votre bureau, un paramètre caché est à activer :

$ defaults write com.apple.dashboard devmode YES

Il faut relancer le Dock ensuite :

$ killall Dock

Activez ensuite Dashboard par la touche F12, sélectionnez le widget et commencez à le déplacer. Tout en ne relâchant pas le bouton de la souris, appuyez sur F12. Le widget demeure à présent sur le bureau. Pour l’enlever, faites l’opération inverse.

Note : ce n’est vraiment utile qu’en configuration multi-écrans, étant donné que les widgets seront toujours au premier plan.

FreeBSD : activer le support SSH depuis l’installation en mode ‘fixit’

Le mode ‘Fixit’ présent sur le CD / DVD d’installation de FreeBSD 8 est utile pour dépanner votre système ou encore effectuer une installation custom (ZFS et cie).

Pour améliorer votre confort, un vrai terminal est préférable, encore faut-il que le support SSH soit activé. Pour ce faire, on commence par l’initialisation réseau :

Fixit# ifconfig em0 192.168.1.166
Fixit# route add default 192.168.1.254
Fixit# echo 'nameserver 192.168.100.254' > /etc/resolv.conf

Ensuite, la configuration du serveur SSH :

Fixit# mkdir /etc/ssh
Fixit# cp /dist/etc/ssh/sshd_config /etc/ssh
Fixit# echo PermitRootLogin yes >> /etc/ssh/sshd_config
Fixit# ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N ''
Fixit# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
Fixit# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''

Et la configuration d’un environnement minimal pour l’utilisateur root (qui n’aura d’ailleurs aucun mot de passe) :

Fixit# mkdir /root
Fixit# ln -s /mnt2/bin/csh /bin/csh
Fixit# echo "setenv PATH ‘/bin:/sbin:/usr/bin:/usr/sbin:/stand:/mnt2/stand:/mnt2/bin:/mnt2/sbin:/mnt2/usr/bin:/mnt2/usr/sbin’" > /root/.cshrc
Fixit# echo “setenv EDITOR ‘/mnt2/usr/bin/ee’” >> /root/.cshrc
Fixit# echo “set prompt=’Fixit# ‘” >> /root/.cshrc
Fixit# /mnt2/usr/sbin/sshd

Et c’est parti, on peut maintenant agir à distance :

$ ssh root@192.168.1.166
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
	The Regents of the University of California.  All rights reserved.

Fixit#


Réseau : détecter les adresses IP utilisées

Pour détecter automatiquement l’ensemble des IP utilisées sur un réseau particulier, le scanneur nmap est d’un grand secours :

$ sudo nmap -T4 -sP 192.168.100.0/24

Starting Nmap 5.21 ( http://nmap.org ) at 2010-04-18 10:22 CEST
Nmap scan report for lenny.interact.lu (192.168.100.2)
Host is up (0.00024s latency).
Nmap scan report for scratchy.interact.lu (192.168.100.3)
Host is up (0.00034s latency).
Nmap scan report for flanders.interact.lu (192.168.100.25)
Host is up (0.00023s latency).
Nmap scan report for filmfund.interact.lu (192.168.100.82)
Host is up (0.00047s latency).
Nmap scan report for krusty.interact.lu (192.168.100.86)
Host is up (0.00056s latency).
Nmap scan report for maggie.interact.lu (192.168.100.100)
Host is up (0.00040s latency).
Nmap scan report for otto.interact.lu (192.168.100.254)
Host is up (0.00012s latency).
Nmap done: 256 IP addresses (7 hosts up) scanned in 3.36 seconds

La sortie peut être plus verbeuse (adresse MAC, constructeur de la carte réseau) si le poste est connecté sur le réseau scanné.

Système : copie d’un disque par le réseau

Sur la machine cible :

# netcat -vv -l -p 7000 | dd of=/dev/hdb
listening on [any] 7000 ...
connect to [192.168.100.166] from maggie.interact.lu [192.168.100.100] 53106

Sur la machine source :

# dd if=/dev/hdb | netcat -vv 192.168.100.166 7000
Warning: Inverse name lookup failed for `192.168.100.166'
192.168.100.166 7000 (afs3-fileserver) open

Système : trier les processus par nombre de descripteurs

# lsof -n | awk '{print $1}' | sort |  uniq -c | sort -rn | head

Pour classer uniquement par descripteur de type socket :

# lsof -ni | awk '{print $1}' | sort |  uniq -c | sort -rn | head

MacPorts : cleanup & upgrade

Quelques commandes d’utilisation de MacPorts …

- Nettoyer les fichiers objets et temporaires liés à la compilation de chaque port :

$ sudo port -f clean --all installed

- Désinstaller toutes les versions antérieures des ports installés :

$ sudo port -f uninstall inactive

- Effectuer une mise à jour avec nettoyage automatique :

$ sudo port selfupdate
$ sudo port -fuc upgrade outdated

Cherokee : le serveur web qui réconcilie administrateurs et développeurs

Un serveur web rapide, léger et facilement configurable ? C’est Cherokee !

Toutes les fonctions sont présentes : TLS, FastCGI, rewrite, proxy, cache, journalisation Apache, expiration, compression, limitation du trafic … et en plus une interface web de configuration dont la simplicité est déconcertante. Cette dernière prouve son réel intérêt avec le mécanisme des règles appliquées au contenu. Des assistants sont même présents pour configurer automatiquement le support PHP, créer un hôte pour WordPress, Mailman, etc …

Niveau performances, un benchmark prouve sa supériorité face à Nginx / Lighttpd (sans compter l’autre que je ne nommerai pas), mais il manque un test avec 100/200 clients simultanés pour être certain que les performances ne s’effondre pas à forte charge (ce qui est toujours le cas, OS oblige). L’interface de configuration fonctionne dans un processus séparé, son exécution est donc indépendante et peut être arrétée à tout moment.

Voici quelques screenshots de l’interface web :

PS : non, je n’ai pas acheté le dernier Linux Mag.

FreeBSD : RAID1 hotswap avec gestion AHCI

FreeBSD 8 gère par défaut vos disques par le driver ATA. Celui ne gère pas le hotswap disque. Si atacontrol permet bien de désactiver et débrancher un disque à chaud, la détection n’est effective qu’au prochain reboot. Pour permettre une détection à chaud, il est nécessaire d’utiliser le driver expérimental AHCI, tout en s’assurant que la gestion AHCI des disques est supportée et activée dans le BIOS.

La gestion AHCI s’appuie sur la couche CAM (déjà utilisée pour les périphériques SCSI et USB), ce qui implique un changement  de noms des disques durs. Ainsi /dev/ad0 devient /dev/ada0. La fstab est à modifier avant de redémarrer, d’autant qu’un LiveCD est nécessaire en cas d’erreur ou pour réactiver la gestion ATA. Pour éviter ces désagréments, GEOM propose comme solution les labels qui permettent de bénéficier de noms fixes pour les disques (quelque soit le mode en cours). Pour récupérer les labels de vos partitions UFS, activez l’option suivante :

# sysctl kern.geom.label.debug=1

Les labels seront alors listés au prochain boot, lesquels seront à récupérer et à placer dans la fstab. Pour la partition de swap, le label doit être créer par glabel :

# glabel label swap /dev/ad0s1b

Dans le cas d’un système déjà configuré en RAID par GEOM, les labels sont déjà configurés : GEOM les utilise implicitement. Ainsi, l’activation / désactivation de l’AHCI est transparente et un simple reboot permet de bénéficier de la gestion AHCI.

Pour rappel, voici la méthode de création d’un RAID1 sous GEOM :

# sysctl kern.geom.debugflags=16
# gmirror label -v -b round-robin gm0 /dev/ad8
# cat geom_mirror_load="YES" >> /boot/loader.conf
# ee /etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/gm0s1b      none            swap    sw              0       0
/dev/mirror/gm0s1a      /               ufs     rw              1       1
/dev/mirror/gm0s1f      /home           ufs     rw              2       2
/dev/mirror/gm0s1d      /usr            ufs     rw              2       2
/dev/mirror/gm0s1e      /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
# shutdown -r now
# gmirror insert gm0 /dev/ad10
# gmirror status
 Name    Status  Components
mirror/gm0  DEGRADED  ada0
                      ada1 (48%)

A présent, la gestion des AHCI peut être activée :

# cat ahci_load="YES" >> /boot/loader.conf
# shutdown -r now
# camcontrol devlist
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus2 target 0 lun 0 (ada1,pass2)
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus3 target 0 lun 0 (pass0,ada0)
<Slimtype DVD A  DS8A2S 6P5D>      at scbus5 target 0 lun 0 (cd0,pass1)

Je débranche le second disque, la pile RAID se dégrade :

(ada1:ahcich3:0:0:0): lost device
(ada1:ahcich3:0:0:0): Invalidating pack
GEOM_MIRROR: Cannot write metadata on ada1 (device=gm0, error=6).
GEOM_MIRROR: Cannot update metadata on disk ada1 (error=6).
GEOM_MIRROR: Device gm0: provider ada1 disconnected.

Une fois le disque rebranché, une détection des périphériques de masse est nécessaire (ce n’est pas automatisé) :

# camcontrol devlist
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus2 target 0 lun 0 (pass0,ada0)
<Slimtype DVD A  DS8A2S 6P5D>      at scbus5 target 0 lun 0 (cd0,pass1)
# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful
Re-scan of bus 4 was successful
Re-scan of bus 5 was successful
# camcontrol devlist
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus2 target 0 lun 0 (pass0,ada0)
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus3 target 0 lun 0 (ada1,pass2)
<Slimtype DVD A  DS8A2S 6P5D>      at scbus5 target 0 lun 0 (cd0,pass1)

Le disque est à présent reconnu mais le RAID lui aussi ne se reconstruit pas automatiquement :

(ada1:ahcich3:0:0:0): Synchronize cache failed
(ada1:ahcich3:0:0:0): removing device entry
(aprobe0:ahcich3:0:0:0): SIGNATURE: 0000
ada1 at ahcich3 bus 0 target 0 lun 0
ada1: <WDC WD2502ABYS-02B7A0 02.03B03> ATA/ATAPI-8 SATA 2.x device
ada1: 300.000MB/s transfers
ada1: 239429MB (490350672 512 byte sectors: 16H 63S/T 16383C)
ada1: Native Command Queueing enabled
GEOM_MIRROR: Component ada1 (device gm0) broken, skipping.
GEOM_MIRROR: Cannot add disk ada1 to gm0 (error=22).
GEOM_MIRROR: Device gm0: rebuilding provider ada1.

Ce qui est entrepris de suite :

# gmirror forget gm0 /dev/ada1
gmirror: No such device: /dev/ada1.
# gmirror insert gm0 /dev/ada1
# gmirror status
 Name    Status  Components
mirror/gm0  DEGRADED  ada0
                      ada1 (1%)

La reconstruction RAID au final ne nécessite plus aucun redémarrage. Le driver AHCI apporte également d’autres fonctionnalités comme le support du NCQ, ce qui permet d’augmenter le débit en cas de forte charge. Pour le vérifier et obtenir des informations détaillées sur un disque, camcontrol est de rigueur :

# camcontrol identify ada0
pass0: <WDC WD2502ABYS-02B7A0 02.03B03> ATA/ATAPI-8 SATA 2.x device

protocol              ATA/ATAPI-8 SATA 2.x
device model          WDC WD2502ABYS-02B7A0
serial number         WD-WCAT1E308323
firmware revision     02.03B03
cylinders             16383
heads                 16
sectors/track         63
LBA supported         268435455 sectors
LBA48 supported       490350672 sectors
PIO supported         PIO4
DMA supported         WDMA2 UDMA6
overlap not supported

Feature                      Support  Enable    Value           Vendor
write cache                    yes    yes
read ahead                     yes    yes
Native Command Queuing (NCQ)   yes        31/0x1F
Tagged Command Queuing (TCQ)   no    no    31/0x1F
SMART                          yes    yes
microcode download             yes    yes
security                       yes    no
power management               yes    yes
advanced power management      no    no    0/0x00
automatic acoustic management  yes    yes    254/0xFE    128/0x80

Gentoo : mise à jour udev 146

Faites attention aux dernières versions d’udev car depuis la version 146, la compatibilité avec les noyaux antérieurs aux 2.6.25 est rompue. Si çà n’est pas le cas, le résultat est sans appel : votre système est incapable de booter et un joli « bloc » textuel va surgir prétextant une impossibilité de trouver le root device ! Heureusement, depuis le package udev-146-r1, un message explicite est affiché juste avant le plantage (cf le screenshot), ce qui n’était le cas du précédent … et lors de mon intervention.

On en parle ici : http://bugs.gentoo.org/292833

Haut de page