Gestion du savecore Solaris

savecore, crash-dump, kernel dump...mais qu'est-ce que c'est ?

Vous avez dit crash ?

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.

Pourquoi le "dump device" est-il forcément la swap ou une partition dédiée ?

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.

Peux-t-on supprimer les dumps ?

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.

Configuration

Visualisation

# 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

Désactiver

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

Configurer

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.

Contenu du crash dump

dumpadm -c kernel | all | curproc
  • kernel : les pages kernel
  • all : TOUTE la mémoire
  • curproc : les pages kernel + les process qui s’executaient sur les CPUs au moment du crash

all, ça fait beaucoup. kernel c’est déjà très bien.

Emplacement du crash dump

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 !

Emplacement du savecore

dumpadm -s chemin_du_repertoire

Si /var/crash/`uname -n` ne vous convient pas...lachez vous !

Eviter de saturer le système de fichier avec les savecore

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 %.

Activer le savecore

 # dumpadm -y
 # svcadm enable dumpadm

Espace nécessaire pour le crash dump

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 :

  • dump sur swap : swap taillé à la taille de la RAM
  • dump sur slice dédié : 50 à 70% la taille de la RAM


Nicolas Dorfsman Janvier 2008

 
docs/base/savecore.txt · Dernière modification: 02/01/2008 15:33 par ndorfsman