© 2009 Hewlett-Packard Development Company, L.P.The information contained herein is subject to change without notice
Kexec, Kdump & CrashdcSolutions Linux 2010
Louis BouchardCentre de Compétences Linux EMEA, Oambassadeur OSL
Agenda
● Kexec et Kdump : Concepts● Kdump : Implementations● Kdump : Configurations● Kdump en action● Crashdc● Questions
Kexec et Kdump : Concepts
● Kexec● Dans le noyau officiel depuis 2.6.13● Un ensemble d'appels système qui fournissent
– Un mécanisme de “Fastboot”– Garde le contexte du noyau en cours d'exécution– Pas de reset des firmwares
● Un utilitaire en mode “user” : /sbin/kexec
● Kdump● Utilise les mécanismes de kexec pour capturer un dump
Comment ça marche tout ça ?● kexec réserve une zone mémoire prête à booter
un noyau si nécessaire
● Lors du panic, kexec reboote le serveur à l'aide du noyau chargé dans la zone réservée
● Ce nouveau noyau met à disposition la mémoire de l'ancien noyau dans /proc/vmcore
● Les outils de kdump lisent /proc/vmcore et sauvegardent son contenu pour analyse
Kdump : Implementations● RHEL5
● kexec-tools● system-config-kdump
● SLES10● kexec-tools● kdump● kernel-kdump (except IA64)● yast2-kdump
● SLES11● kexec-tools● kdump● yast2-kdump
Kdump : Configuration● Configuration du noyau
● crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]range=start-[end]('start' est inclusif et 'end' est exclusif)
● crashkernel=256M-:64M@16M (SLES11)
● Configuration en environnement utilisateur● RHEL5
– /etc/kdump.conf– /etc/sysconfig/kdump
● SLES10&11
– /etc/sysconfig/kdump
Kdump en action : details
# echo c > /proc/sysrq-trigger SysRq : Trigger a crashdumpInitializing cgroup subsys cpusetInitializing cgroup subsys cpuLinux version 2.6.27.23-0.1-default (geeko@buildhost) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ) #1 SMP 2009-05-26 17:02:05 -0400BIOS-provided physical RAM map: BIOS-e820: 0000000000000100 - 000000000009f800 (usable) BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved) BIOS-e820: 00000000000dc000 - 00000000000e0000 (reserved) BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000001fef0000 (usable) BIOS-e820: 000000001fef0000 - 000000001feff000 (ACPI data) BIOS-e820: 000000001feff000 - 000000001ff00000 (ACPI NVS) BIOS-e820: 000000001ff00000 - 0000000020000000 (usable)
Kdump en action : detailsSysRq : Changing LoglevelLoglevel set to 1Creating device nodes with udevBoot logging started on /dev/ttyS0(/dev/console) at Thu Dec 3 13:09:20 2009Trying manual resume from /dev/sda1Invoking userspace resume from /dev/sda1resume: libgcrypt version: 1.4.1Trying manual resume from /dev/sda1Invoking in-kernel resume from /dev/sda1Waiting for device /dev/sda2 to appear: okMounting root /dev/sda2mount -o rw,acl,user_xattr -t ext3 /dev/sda2 /rootNothing to delete in /var/crash.Saving dump using makedumpfile-------------------------------------------------------------------------------Copying data : [ 100%]
The dumpfile is saved to /root/var/crash/2009-12-03-13:09/vmcore.
Makedumpfile Completed.-------------------------------------------------------------------------------Generating README Finished.Copying System.map Finished.Copying kernel Finished.Copying kernel.debug Finished.
Restarting system.Initializing cgroup subsys cpusetInitializing cgroup subsys cpuLinux version 2.6.27.23-0.1-default (geeko@buildhost) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ) #1 SMP 2009-05-26 17:02:05 -0400
crashdc : pourquoi ?● Les fichiers vmcore grossissent ( > 16 Gb)
● Une analyse complète n'est pas toujours nécessaire
● Quelques commandes de base de crash fournissent beaucoup d'information
● C'était très efficace sur Tru64 pendant des années
crashdc : qu'est-ce que c'est ?● Un ensemble de scripts bash
● Complètement dépendant de l'utilitaire crash
● Peut être lancé automatiquement lors de la création d'un vmcore ou au reboot
● Peut être utilisé interactivement
crashdc : Comment ça marche ?● Lancement par kdump
● Lancement par /sbin/init
● Utilisation manuelle
CRASHDC FUNCTIONAL DIAGRAM : Kexec automation
KDUMP(part of linux)
run_crashdc-{distro}.sh
Legend{distro} = rhel5
sles10
sles11
crashdc.{distro}(configuration file)
Invokes
crashdc
RUNS
crash-data-[date].txt
crashdcmds(custom commands file)
CRASHDC FUNCTIONAL DIAGRAM : Init automation
/sbin/init(initscript)
/etc/init.d/crashdc
Legend{distro} = rhel5
sles10
sles11
crashdc.{distro}(configuration file)
Invokes
crashdc
RUNS
crash-data-[date].txt
crashdcmds(custom commands file)
CRASHDC FUNCTIONAL DIAGRAM : Manual
/etc/init.d/crashdc
Legend{distro} = rhel5
sles10
sles11
crashdc.{distro}(configuration file)
Invokes
crashdc
RUNS
crash-data-[date].txt
crashdcmds(custom commands file)
Mr Sysadmin
Syntax sanity checks
CRASHDC ARCHITECTURE
Verify files location
Build command
list
Custom cmdfile exists ? Use
custom cmdfile
Yes
Execute crash
commands
Write cmd result to crash-data-
[date].txt
Pré-requis de crashdc● RHEL5
● Kexec-tools
● system-config-kdump
● SLES10● kexec-tools
● kdump
● kernel-kdump (except IA64)
● yast2-kdump
● SLES11● kexec-tools
● kdump
● yast2-kdump
● kernel-debuginfo-common● kernel-debuginfo● crash
● kernel-default-debuginfo● crash
● kernel-default-debuginfo● crash
crashdc : Ça ressemble à quoi ?## Crash Data Collection (Version 0.03)# BASIC mode in use#### Tool Informationcrash> help | grep crashcrash version: 4.0-8.9.1.el5 gdb version: 6.1### Crash Context Informationcrash> sys KERNEL: /usr/lib/debug/lib/modules/2.6.18-164.el5xen/vmlinux DUMPFILE: /var/crash/2010-01-20-17:04/vmcore CPUS: 2 DATE: Wed Jan 20 17:03:33 2010 UPTIME: 00:05:28LOAD AVERAGE: 1.58, 1.03, 0.47 TASKS: 108 NODENAME: crashdc RELEASE: 2.6.18-164.el5xen VERSION: #1 SMP Tue Aug 18 15:59:52 EDT 2009 MACHINE: x86_64 (1965 Mhz) MEMORY: 539 MB PANIC: "SysRq : Trigger a crashdump"### Preserved Kernel Ring Buffercrash> logBootdata ok (command line is ro root=/dev/VolGroup00/LogVol00 console=ttyS0)Linux version 2.6.18-164.el5xen ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Aug 18 15:59:52 EDT 2009BIOS-provided physical RAM map: Xen: 0000000000000000 - 0000000021af4000 (usable)On node 0 totalpages: 137972 DMA zone: 137972 pages, LIFO batch:31DMI present.ACPI: RSDP (v002 PTLTD ) @ 0x00000000000f6a30ACPI: XSDT (v001 INTEL 440BX 0x06040000 VMW 0x01324272) @ 0x000000002feedfd3ACPI: FADT (v004 INTEL 440BX 0x06040000 PTL 0x000f4240) @ 0x000000002fefee98ACPI: BOOT (v001 PTLTD $SBFTBL$ 0x06040000 LTP 0x00000001) @ 0x000000002feee1ddACPI: MADT (v001 PTLTD APIC 0x06040000 LTP 0x00000000) @ 0x000000002feee163ACPI: MCFG (v001 PTLTD $PCITBL$ 0x06040000 LTP 0x00000001) @ 0x000000002feee127ACPI: SRAT (v002 VMWARE MEMPLUG 0x06040000 VMW 0x00000001) @ 0x000000002feee057ACPI: DSDT (v001 PTLTD Custom 0x06040000 MSFT 0x03000001) @ 0x0000000000000000
Crashdc : les modes
BASIC (120 Kb) - crash version - sys - log - set - bt - ps - foreach bt - mount - net - mod
ADVANCED (2.6M) BASIC+ - ps -t - foreach task - foreach files - mount -f - foreach net -s - sym -l - kmem -i - kmem -s
Crashdc : les modes (cont.)
● CUSTOMReçoit les commandes d'un fichier texte
● Peut être utile pour envoyer des commandes spécifiques à exécuter
● Peut être spécifiques à certaines applications (i.e. HPTC)
crashdc : Contenu du paquet
/etc/init.d/crashdc/etc/sysconfig/crashdc.rhel5/etc/sysconfig/crashdc.sles10/etc/sysconfig/crashdc.sles11/usr/bin/crashdc/usr/bin/run-crashdc-rhel5.sh/usr/bin/run-crashdc-sles10.sh/usr/bin/run-crashdc-sles11.sh/usr/share/doc/crashdc-0.5/usr/share/doc/crashdc-0.5/INSTALL/usr/share/doc/crashdc-0.5/README/usr/share/man/man5/crashdc.5.gz/usr/share/man/man7/crashdc.7.gz/usr/share/man/man8/crashdc.8.gz
Installation et configuration
● Installation● # rpm -vih crashdc-0.6-1.noarch.rpm
● Configuration● Consulter /usr/share/doc/crashdc-0.6/INSTALL
pour les instructions complètes
● Test● Générez un crash par echo c > /proc/sysrq-trigger
crashdc : Etat actuel
● Approuvé par l'OSRB● Beta : Toutes les fonctionnalités
testées sur :– RHEL5 : i386 & x86_64– SLES10 : i386 & x86_64– SLES11 : i386 & x86_64
● Ne fonctionne que sur du stockage local
● Disponible publiquement sur : http://crashdc.sourceforge.net
crashdc : futur
● WEB● http://crashdc.sourceforge.net/● http://people.redhat.com/anderson/● http://cariblog.kamikamamak.com/category/crashdc
● Mail● [email protected] (public)
Top Related