Kdump (Linux)

De Wikipedia, la enciclopedia libre

kdump es una característica del núcleo Linux que crea volcados de memoria en el caso de una falla catastrófica del kernel. Cuando se activa, kdump exporta una imagen de memoria (también conocida como vmcore) que se puede analizar con el fin de depurar y determinar la causa de un bloqueo. Se puede acceder directamente a la imagen volcada de la memoria principal, exportada como un objeto de formato ejecutable y enlazable (ELF) a través de /proc/vmcore durante el manejo de una falla del kernel, o puede guardarse automáticamente en un sistema de archivos accesible localmente, en un dispositivo raw, o en un sistema remoto accesible a través de la red.[1][2]

Internos[editar]

En un diseño de "kernel dual", kdump usa kexec para arrancar otro kernel y obtener un volcado de memoria.[3]

En el caso de una falla del kernel, kdump preserva la consistencia del sistema al iniciar otro kernel de Linux, que se conoce como kernel de captura de volcado, y usarlo para exportar y guardar un volcado de memoria. Como resultado, el sistema se inicia en un entorno limpio y confiable en lugar de confiar en un kernel que ya se ha bloqueado, lo que puede causar varios problemas, como la corrupción del sistema de archivos al escribir un archivo de volcado de memoria. Para implementar este diseño de "kernel dual", kdump usa kexec para arrancar en el kernel de captura de volcado inmediatamente después de la falla del kernel, usando la capacidad de kexec para arrancar "sobre" el kernel actualmente en ejecución, evitando la ejecución de un cargador de arranque y la inicialización de hardware realizada por el firmware del sistema (BIOS o UEFI). Un kernel de captura de volcado puede ser una imagen separada del núcleo Linux construida específicamente para ese propósito, o la imagen del kernel principal puede ser reutilizada en arquitecturas que soportan kernels reubicables.[1][3][4][5]

El contenido de la memoria principal (RAM) se conserva al arrancar y ejecutar el kernel de captura de volcado al reservar una pequeña cantidad de RAM por adelantado, en la cual el kernel de captura de volcado está precargado, por lo que no se utiliza ninguna de las RAM utilizadas por el kernel primario. Se sobrescribe cuando se maneja una falla del kernel. Esta cantidad reservada de RAM es utilizada únicamente por el núcleo de captura de volcado y, de lo contrario, no se utiliza durante la operación normal del sistema. Algunas arquitecturas, incluidas x86 y ppc64, requieren una pequeña porción de RAM de posición fija para arrancar un kernel independientemente de dónde se cargue; en este caso, kexec crea una copia de esa porción de RAM para que también sea accesible para el núcleo de volcado de captura. El tamaño y la posición opcional de la porción reservada de RAM se especifican a través del parámetro de arranque del kernel crashkernel y kexec. Una utilidad de línea de comandos se usa después de que el núcleo primario se inicia para precargar una imagen de kernel de captura de volcado y su imagen initrd asociada en la porción reservada de RAM.[1][3][4]

Además de la funcionalidad que forma parte del núcleo Linux, las utilidades de espacio de usuario adicionales admiten el mecanismo kdump, incluido el kexec utilidad mencionada anteriormente.[1][4]​ Además de las utilidades oficiales, que se proporcionan como un parche para el conjunto de utilidades de espacio de usuario de kexec, algunas distribuciones de Linux proporcionan utilidades adicionales que simplifican la configuración de la operación de kdump, incluida la configuración de guardado automático de archivos de volcado de memoria.[6][7][8]​ Los archivos de volcado de memoria creados se pueden analizar utilizando el depurador de GNU (gdb), o utilizando la utilidad de Red Hat crash.[9][10]

Historia[editar]

La funcionalidad de kdump, junto con kexec, se fusionó con la línea principal del núcleo Linux en la versión del kernel 2.6.13, que se lanzó el 29 de agosto de 2005.[11]

Véase también[editar]

  • debugfs  – un sistema de archivos basado en RAM del núcleo Linux diseñado específicamente para propósitos de depuración
  • kdump (BSD)  – una utilidad BSD para ver los archivos de seguimiento generados por la utilidad ktrace
  • Linux kernel oops  – una desviación potencialmente no fatal del comportamiento correcto del núcleo Linux

Referencias[editar]

  1. a b c d Jonathan Corbet (2004-10-27 de mdy). «Crash dumps with kexec». LWN.net. Consultado el 2014-08-09 de mdy. 
  2. «13.2 About Kdump (Chapter 13: Support Diagnostic Tools)». Oracle Corporation. 2012. Consultado el 2014-08-09 de mdy. 
  3. a b c Vivek Goyal (2006-06-14 de mdy). «Kdump: A Kexec-based Kernel Crash Dumping Mechanism» (PDF). lse.sourceforge.net. Consultado el 2014-08-09 de mdy. 
  4. a b c «Linux kernel documentation: Documentation/kdump/kdump.txt». kernel.org. 2013-08-12 de mdy. Consultado el 2014-08-09 de mdy. 
  5. Takashi Iwai (2006-07-26 de mdy). «Debugging using Kdump» (PDF). SUSE. Consultado el 2014-08-09 de mdy. 
  6. «29.2.2. Using the Kernel Dump Configuration Utility (Red Hat Enterprise Linux 6 Deployment Guide)». Red Hat. Consultado el 2014-08-09 de mdy. 
  7. «kexec and kdump: Basic kdump Configuration (System Analysis and Tuning Guide)». SUSE. 2014-04-25 de mdy. Consultado el 2014-08-09 de mdy. 
  8. «How to use kdump to debug kernel crashes». Fedora. 2014-04-09 de mdy. Consultado el 2014-08-09 de mdy. 
  9. David Anderson (2010-08-27 de mdy). «White Paper: Red Hat Crash Utility». Red Hat. Archivado desde el original el 10 de diciembre de 2018. Consultado el 2014-08-09 de mdy. 
  10. «kexec and kdump: Analyzing the Crash Dump (System Analysis and Tuning Guide)». SUSE. 2014-04-25 de mdy. Consultado el 2014-08-09 de mdy. 
  11. «Linux kernel 2.6.13». kernelnewbies.org. 2005-08-29 de mdy. Consultado el 2014-08-09 de mdy. 

Enlaces externos[editar]