Il y a certaines circonstances dans lesquelles le kernel n’a pas d’autre choix que de tout planter et lancer un redémarrage. Cette opération est appelé un “panic” ou “kernel panic”. S’il en a la possibilité, le noyau va écrire la cause de ce panic dans la syslog. Ces informations peuvent-être suffisantes pour comprendre et corriger le problème, mais encore faut-il que votre daemon syslogd soit correctement configuré, que le kernel ait le temps de lui envoyer les infos, etc, etc, etc. Pour permettre un debug efficace, l’arme du kernel-geek est le crash dump. On y trouvera, au minimum, une image des pages mémoires utilisées par le kernel au moment du crash. Il n’y a plus qu’à sortir le tournevis et la lampe torche pour une analyse post-mortem.
Ah ! Vous aimeriez que le dump soit écrit sur un système de fichier ? Quand le bateau coule, on va au plus simple...c’est pareil pour le kernel.
Oui ! Ca prend rapidement de la place, et si vous n’en avez pas l’utilité : rm -rf /var/crash/`uname -n`, et pensez aussi à jeter un oeil dans /var/crash s’il n’existe pas d’autres répertoires (si par exemple votre machine a changé de nom).
Attention toutefois : si vous espérez que quelqu’un analyse votre problème dans le détail, allez-y doucement...et conservez quelque part ce matériel.
Pour faire court, si vous êtes sur cette page après être passé vous même en mode panique à cause de cette sacré machine qui a fait un panic et qui tourne maintenant sur deux pattes en raison de / ou /var qui est full...allez-y rm -rf /var/crash/???* ...vous reviendrez lire tranquillement cette page quand la production sera de nouveau d’aplomb.
# dumpadm
Dump content: kernel pages
Dump device: /dev/dsk/c0t0d0s4 (dedicated)
Savecore directory: /var/crash/nicobox
Savecore enabled: yes
# svcs dumpadm
STATE STIME FMRI
online Dec_06 svc:/system/dumpadm:default
Comprenez tout d’abord, que vous ne pouvez pas empêcher le kernel d’enregistrer son crash dump, enfin presque : vous pouvez toujours lui offrir une slice d’un seul secteur si vous tenez absolument à interrompre rapidement cette procédure, mais cela n’a pas beaucoup de sens, autant lui laisser au moins une chance de vous laisser quelques traces en l’autorisant à utiliser la zone swap.
En revanche, et c’est souvent cette partie que l’on tente de modifier, on peut désactiver la sauvegarde de ces images de dump sur le système de fichier. Certains vous indiqueront de désactiver le service dumpadm, je ne suis pas partisan de cette méthode, d’autant qu’elle s’avère différente entre Solaris 10 et les versions précédentes. Non, il suffit en fait de confier votre désir à dumpadm :
# dumpadm -n
Si vous avez lu ce qui précède, vous vous doutez déjà de l’outil : dumpadm
SYNOPSIS
/usr/sbin/dumpadm [-nuy] [-c content-type] [-d dump-device]
[-m mink | minm | min%] [-s savecore-dir] [-r root-dir]
Je vais vous laisser lire attentivement le manuel (man dumpadm), tout en vous donnant ici les options recherchées le plus souvent.
dumpadm -c kernel | all | curproc
all, ça fait beaucoup. kernel c’est déjà très bien.
dumpadm -d swap | chemin-absolu-d-une-slice
Si vous avez besoin d’un reboot le plus rapide possible (machines critiques), dédiez une slice !
dumpadm -s chemin_du_repertoire
Si /var/crash/`uname -n` ne vous convient pas...lachez vous !
dumpadm -m mink | minm | min%
Ceci indique à la procédure de ne pas sauvegarder le crash dump sur système de fichier si cet enregistrement réduit la place disponible dans le répertoire à moins de min kilooctets ou min mégaoctets ou min %.
# dumpadm -y # svcadm enable dumpadm
Je sais pas ! C’est difficile à déterminer de façon sûr en fait.
D’abord ça dépend bien entendu de quel type de crash dump vous avez réclamé à dumpadm. Puis ensuite, il faut penser au fait que l’image est compressé au moment du crash.
J’ai tendance à tailler de cette manière :
— Nicolas Dorfsman Janvier 2008