Usamos cookies propias y de terceros para ayudarte en tu navegación. Si continuas navegando consideramos que aceptas el uso de cookies. OK

viernes, 22 de agosto de 2014

Administración de fallos del kernel (dumpadm coreadm)

 En esta entrega veremos como administrar los fallos del kernel en un sistema Solaris. Cuando se produce un error grave en el sistema operativo, éste envía un mensaje a la consola en la que describe el error. El sistema operativo genera un volcado de la memoria en un slice de disco (POR LO GENERAL LA SWAP)(para luego ser analizado) y luego se reinicia.

  •  Hay dos tipos:
  1.  Crash dump (panic del sistema.   Se usa el dumpadm).
  2.  Core dump (panic de un proceso. Se usa coreadm).

  1. VOLCADO POR FALLO DEL SISTEMA (Crash Dump)
  •  El archivo que contiene la configuración se llama /etc/dumpadm.conf. Dicho archivo no se modifica a mano, se modifica por medio del comando dumpadm.
#dumpadm
Dump content: kernel pages
Dump device: /dev/dsk/c0d0s1 (swap)
Savecore directory: /var/crash/sys-02
Savecore enabled: yes

El “Dump content” puede variar entre paginas del kernel, all o cuproc. Se cambia mediante el comando # dumpadm –c contenido.
El “Dump device” es el lugar de volcado. Por defecto es la SAWP. Pero puede ser otro lugar. Se cambia mediante #dumpadm –d /directorio.
El “Savecore directory” es el directorio donde se crea el archivo. Este directorio debe estar en un slice que tenga como minimo una cantidad de espacio libre del tamaño de la SWAP. Es conveniente llevarlo a otro slice que no sea el /. Se modifica con #dumpadm –s directorio.
“Savecore enabled” indica si el comando savecore se ejecuta automáticamente durante el inicio.


      2.  VOLCADO POR PANIC DEL PROCESO(Core Dump)

  •  Cuando un proceso falla, el sistema crea un archivo de nucleo central con una copia del espacio de memoria manejada por los procesos. Cuando se crea un archivo del nucleo central, el sistema genera dos copias del mismo: un archivo global y otro por proceso. (Se puede configurar que se creen ambos archivos, uno solo o ninguno.)
  •   Para ver la configuración actual se utiliza el comando #coreadm. El archivo que contiene la confiGuracion es /etc/coreadm.conf.

Algunos ejemplos sobre el uso de los comandos.

Uso del comando dumpadm para mostrar la ubicación del
directorio de archivos del núcleo central
Lleve a cabo los pasos siguientes:

1. Utilice el comando dumpadm sin argumentos para ver la configuración de volcado actual.
# dumpadm
Dump content: kernel pages
Dump device: /dev/dsk/c1d0s1 (swap)
Savecore directory: /var/crash/sys01
Savecore enabled: yes

#
Explicación de la salida del comando:
Contenido del volcado: kernel pages
Dispositivo de volcado: /dev/dsk/c1d0s1 (swap)
Directorio savecore: /var/crash/sys01
¿Está savecore habilitado? Sí
 
2. Utiliczar el comando dumpadm para cambiar el dispositivo de
volcado al slice 5 de la segunda unidad de disco.
# dumpadm -d /dev/dsk/c2d0s5
Dump content: kernel pages
Dump device: /dev/dsk/c2d0s5 (dedicated)
Savecore directory: /var/crash/sys01
Savecore enabled: yes

#

4. Obligue al kernel a guardar una instantánea en tiempo real del
sistema en ejecución y escriba una nueva serie de archivos de
volcado del sistema utilizando el comando savecore -L.
# savecore -L
dumping to /dev/dsk/c2d0s5, offset 65536, content: kernel
100% done: 63380 pages dumped, compression ratio 4.28, dump succeeded
System dump time: Fri Apr 20 13:40:20 2007
Constructing namelist /var/crash/sys01/unix.0
Constructing corefile /var/crash/sys01/vmcore.0
100% done: 63380 of 63380 pages saved

#

4. Utilice el comando file para asegurarse de que el volcado se ha realizado correctamente e identificar los archivos del directorio savecore.
La salida debería ser similar a la siguiente si utiliza un sistema x86/x64:
# cd /var/crash/sys01
# ls
bounds unix.0 vmcore.0
# file vmcore.0
vmcore.0: SunOS 5.10 Generic_118855-33 64-bit Intel crash dump from

''
#

Usando el comando coreadm para configurar la posición de almacenamiento de los archivos del núcleo central.

Lleve a cabo los pasos siguientes:
1. Utilice el comando coreadm para mostrar la configuración predeterminada de los archivos del núcleo central.
# coreadm
global core file pattern:
global core file content: default
init core file pattern: core
init core file content: default
global core dumps: disabled
per-process core dumps: enabled
global setid core dumps: disabled
per-process setid core dumps: disabled
global core dump logging: disabled

#

2. Cree un directorio para los archivos del núcleo central y habilite una ruta de archivo del núcleo central global en la que se utilice el directorio creado.
# mkdir /var/core
# coreadm -e global -g /var/core/core.%f.%p


3. Active el registro de volcados del núcleo globales para que se genere un mensaje cuando el sistema cree un archivo del núcleo central global.
# coreadm -e log

4. Acceda a la información de configuración de los archivos del núcleo central para verificar los cambios.
# coreadm
global core file pattern: /var/core/core.%f.%p
global core file content: default
init core file pattern: core
init core file content: default
global core dumps: enabled
per-process core dumps: enabled
global setid core dumps: disabled
per-process setid core dumps: disabled
global core dump logging: enabled

#

5. Abra otra ventana de terminal. En esta ventana, cree un directorio nuevo que se denomine /var/tmp/dir y cambie a ese directorio.
# mkdir /var/tmp/dir
# cd /var/tmp/dir

#

6. Verifique que el directorio de trabajo actual es /var/tmp/dir.
# pwd
/var/tmp/dir


7. Ejecute el comando ps para mostrar el PID del shell asociado con la nueva ventana de terminal. A continuación, utilice el comando kill para enviar una señal SIGFPE (señal 8) al shell. (SIGFPE
hace que se cree un archivo del núcleo central.)
# ps
PID TTY TIME CMD
1204 pts/2 0:00 ksh
1208 pts/2 0:00 ps
# kill -8 1204

Nota – El comando kill -8 interrumpe la actividad del shell y de la ventana de terminal en la que se ejecuta.

8. En la ventana de terminal original, compruebe que el directorio de trabajo actual del shell antiguo presenta un archivo del núcleo central. Utilice el comando file para verificar que el archivo del
núcleo central pertenece al shell anterior.
# cd /var/tmp/dir
# ls
core
# file core

core: ELF 32-bit LSB core file 80386 Version 1, from 'sh'

9. Utilice el comando ls para localizar un archivo del núcleo central en el directorio /var/core.
# ls /var/core
core.sh.1204


10. Lea el mensaje que se genera en la ventana de la consola y el archivo /var/adm/messages a causa de la habilitación del registro de coreadm.
# tail /var/adm/messages
...
Apr 20 13:58:46 sys01 genunix: [ID 603404 kern.notice] NOTICE: core_log:
sh[1204] core dumped: /var/core/core.sh.1204

No hay comentarios:

Publicar un comentario