Cuando el mecanismo de volcado de errores de kdump está habilitado, el sistema se inicia desde el contexto de otro kernel. Este segundo núcleo reserva una pequeña cantidad de memoria y su único propósito es capturar la imagen de volcado del núcleo en caso de que el sistema falle.
Ser capaz de analizar el volcado del núcleo ayuda significativamente a determinar la causa exacta de la falla del sistema y, por lo tanto, se recomienda enfáticamente tener esta función habilitada. Este capítulo explica cómo configurar, probar y utilizar el servicio kdump en Red Hat Enterprise Linux y proporciona una breve descripción general de cómo analizar el volcado del núcleo resultante mediante la utilidad de depuración de fallas.
Instalación del servicio kdump
Para usar el servicio kdump en su sistema, asegúrese de tener las herramientas kexec paquete instalado. Para hacerlo, escriba lo siguiente en un indicador de shell como root:
# yum install kexec-tools
Configuración del servicio kdump
Configuración del uso de la memoria
Para configurar la cantidad de memoria que se reservará para el kernel kdump, edite el /boot/grub/grub.conf archivo y agregue crashkernel=[size]M o crashkernel=auto . Tenga en cuenta que la opción crashkernel=auto solo reserva la memoria si la memoria física del sistema es igual o mayor que:
- 2 GB en arquitecturas x86 de 32 y 64 bits
Un archivo de muestra /boot/grub/grub.conf
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda3 # initrd /initrd #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.32-220.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/sda3 crashkernel=128M initrd /initramfs-2.6.32-220.el6.x86_64.img
Configuración del tipo de objetivo
Cuando se captura un bloqueo del kernel, el volcado del núcleo puede almacenarse como un archivo en un sistema de archivos local, escribirse directamente en un dispositivo o enviarse a través de una red utilizando el protocolo NFS (Network File System) o SSH (Secure Shell). Solo se puede configurar una de estas opciones en este momento, y la opción predeterminada es almacenar el archivo vmcore en /var/crash/ directorio del sistema de archivos local. Para cambiar esto, como raíz, abra el archivo de configuración /etc/kdump.conf en un editor de texto y edite las opciones como se describe a continuación.
Para cambiar el directorio local en el que se guardará el volcado del núcleo, elimine el signo de almohadilla (“#”) del principio de la línea #path /var/crash y reemplace el valor con la ruta del directorio deseado. Opcionalmente, si desea escribir el archivo en una partición diferente, siga el mismo procedimiento con la línea #ext4 /dev/sda3 y cambie el tipo de sistema de archivos y el dispositivo (un nombre de dispositivo, una etiqueta de sistema de archivos, y UUID son compatibles) en consecuencia. Por ejemplo:
ext3 /dev/sda4 path /usr/local/cores
Para escribir el volcado directamente en un dispositivo, elimine el signo de almohadilla ("#") del comienzo de la línea #raw /dev/sda5 y reemplace el valor con el nombre de dispositivo deseado. Por ejemplo:
raw /dev/sdb1
Para almacenar el volcado en una máquina remota mediante el protocolo NFS, elimine el signo almohadilla ("#") del principio de la línea #net my.server.com:/export/tmp y reemplace el valor con un nombre de host válido y la ruta del directorio. Por ejemplo:
net penguin.example.com:/export/cores
Para almacenar el volcado en una máquina remota mediante el protocolo SSH, elimine el signo almohadilla (“#”) del principio de la línea #net [email protected] y reemplace el valor con un nombre de usuario y un nombre de host válidos. . Por ejemplo:
net [email protected]
Al transferir un archivo central a un destino remoto a través de SSH, el archivo central debe serializarse para la transferencia. Esto crea un archivo vmcore.flat en el directorio /var/crash/ en el sistema de destino, que la utilidad de bloqueo no puede leer. Para convertir vmcore.flat en un archivo de volcado que se pueda leer en caso de bloqueo, ejecute el siguiente comando como root en el sistema de destino:
# /usr/sbin/makedumpfile -R */tmp/vmcore-rearranged* < *vmcore.flat*
Configuración del recopilador principal
Para reducir el tamaño del archivo de volcado de vmcore, kdump le permite especificar una aplicación externa (es decir, un recopilador central) para comprimir los datos y, opcionalmente, omitir toda la información irrelevante. Actualmente, el único recopilador central totalmente compatible es makedumpfile.
Para habilitar el recopilador principal, como raíz, abra el archivo de configuración /etc/kdump.conf en un editor de texto, elimine el signo de almohadilla ("#") del principio del #core_collector makedumpfile -c --message-level 1 - d 31 y edite las opciones de la línea de comandos como se describe a continuación.
Para habilitar la compresión del archivo de volcado, agregue el parámetro -c. Por ejemplo:
core_collector makedumpfile -c
Para eliminar las páginas cero y las gratuitas, utilice lo siguiente:
core_collector makedumpfile -d 17 -c
Consulte la página man de makedumpfile para obtener una lista completa de las opciones disponibles.
Cambiar la acción predeterminada
De forma predeterminada, cuando kdump no puede crear un volcado del núcleo, se monta el sistema de archivos raíz y se ejecuta /sbin/init. Para cambiar este comportamiento, como raíz, abra el archivo de configuración /etc/kdump.conf en un editor de texto, elimine el signo de almohadilla ("#") del comienzo de la línea de shell #default y reemplace el valor con la acción deseada como se describe a continuación:
Acciones admitidas
Opción | Descripción |
---|---|
reiniciar | Reiniciar el sistema, perdiendo el núcleo en el proceso. |
detener | Detener el sistema. |
apagado | Apague el sistema. |
cáscara | Ejecute la sesión msh desde dentro de initramfs, lo que permite que un usuario registre el núcleo manualmente. |
Por ejemplo:
default halt
Habilitación del servicio
Para iniciar el demonio kdump en el momento del arranque, escriba lo siguiente en un indicador de shell como root:
# chkconfig kdump on
Esto habilitará el servicio para los niveles de ejecución 2, 3, 4 y 5. De manera similar, escribir "chkconfig kdump off" lo deshabilitará para todos los niveles de ejecución. Para iniciar el servicio en la sesión actual, use el siguiente comando como root:
# service kdump start
Probar la configuración
Los siguientes comandos harán que el kernel se bloquee. Tenga cuidado al seguir estos pasos y de ninguna manera los utilice en una máquina de producción. Para probar la configuración, reinicie el sistema con kdump habilitado y asegúrese de que el servicio se esté ejecutando:
# service kdump status Kdump is operational
Luego escriba los siguientes comandos en un indicador de shell:
# echo 1 > /proc/sys/kernel/sysrq # echo c > /proc/sysrq-trigger
Esto hará que el kernel de Linux se bloquee, y el archivo dirección-YYYY-MM-DD-HH:MM:SS/vmcore se copiará en la ubicación que haya seleccionado en la configuración (es decir, en /var/crash/ por predeterminado).