Když je povolen mechanismus kdump crash dumpingu, systém se zavede z kontextu jiného jádra. Toto druhé jádro si vyhrazuje malé množství paměti a jeho jediným účelem je zachytit obraz výpisu jádra pro případ, že dojde k pádu systému.
Možnost analyzovat výpis jádra významně pomáhá určit přesnou příčinu selhání systému, a proto důrazně doporučujeme mít tuto funkci povolenou. Tato kapitola vysvětluje, jak nakonfigurovat, testovat a používat službu kdump v Red Hat Enterprise Linux, a poskytuje stručný přehled toho, jak analyzovat výsledný výpis jádra pomocí nástroje pro ladění pádů.
Instalace služby kdump
Chcete-li ve svém systému používat službu kdump, ujistěte se, že máte kexec-tools balíček nainstalován. Chcete-li tak učinit, zadejte do příkazového řádku jako root následující příkaz:
# yum install kexec-tools
Konfigurace služby kdump
Konfigurace využití paměti
Chcete-li nakonfigurovat množství paměti vyhrazené pro jádro kdump, upravte soubor /boot/grub/grub.conf soubor a přidejte crashkernel=[velikost]M nebo crashkernel=auto . Všimněte si, že volba crashkernel=auto vyhrazuje paměť pouze v případě, že fyzická paměť systému je rovna nebo větší než:
- 2 GB na 32bitových a 64bitových architekturách x86
Ukázkový soubor /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
Konfigurace typu cíle
Když je zachycen pád jádra, výpis jádra může být buď uložen jako soubor v místním souborovém systému, zapsán přímo do zařízení nebo odeslán přes síť pomocí protokolu NFS (Network File System) nebo SSH (Secure Shell). V tuto chvíli lze nastavit pouze jednu z těchto možností a výchozí možností je uložit soubor vmcore do /var/crash/ adresář místního souborového systému. Chcete-li to změnit, jako root otevřete konfigurační soubor /etc/kdump.conf v textovém editoru a upravte možnosti, jak je popsáno níže.
Chcete-li změnit místní adresář, do kterého se má výpis jádra uložit, odstraňte znak hash („#“) ze začátku řádku #path /var/crash a nahraďte hodnotu požadovanou cestou k adresáři. Volitelně, pokud chcete zapsat soubor na jiný oddíl, postupujte stejným způsobem také s řádkem #ext4 /dev/sda3 a změňte typ systému souborů i zařízení (název zařízení, štítek systému souborů, a UUID jsou všechny podporovány). Například:
ext3 /dev/sda4 path /usr/local/cores
Chcete-li výpis zapsat přímo do zařízení, odstraňte znak hash („#“) ze začátku řádku #raw /dev/sda5 a nahraďte hodnotu požadovaným názvem zařízení. Například:
raw /dev/sdb1
Chcete-li výpis uložit na vzdálený počítač pomocí protokolu NFS, odstraňte znak hash („#“) ze začátku řádku #net my.server.com:/export/tmp a nahraďte hodnotu platným názvem hostitele. a cestu k adresáři. Například:
net penguin.example.com:/export/cores
Chcete-li výpis uložit na vzdálený počítač pomocí protokolu SSH, odstraňte znak hash („#“) ze začátku řádku #net [email protected] a nahraďte hodnotu platným uživatelským jménem a názvem hostitele. . Například:
net [email protected]
Při přenosu souboru jádra do vzdáleného cíle přes SSH musí být soubor jádra pro přenos serializován. Tím se vytvoří soubor vmcore.flat v adresáři /var/crash/ na cílovém systému, který je nečitelný obslužným programem pro zhroucení. Chcete-li převést vmcore.flat na soubor výpisu, který je čitelný při selhání, spusťte v cílovém systému jako root následující příkaz:
# /usr/sbin/makedumpfile -R */tmp/vmcore-rearranged* < *vmcore.flat*
Konfigurace Core Collector
Chcete-li zmenšit velikost souboru výpisu vmcore, kdump vám umožňuje zadat externí aplikaci (tj. kolektor jádra) pro kompresi dat a volitelně vynechat všechny irelevantní informace. V současnosti je jediným plně podporovaným sběratelem jader makedumpfile.
Chcete-li povolit sběratel jader, jako root otevřete konfigurační soubor /etc/kdump.conf v textovém editoru, odstraňte znak hash (“#”) ze začátku #core_collector makedumpfile -c --message-level 1 - d 31 řádek a upravte možnosti příkazového řádku, jak je popsáno níže.
Chcete-li povolit kompresi souboru výpisu, přidejte parametr -c. Například:
core_collector makedumpfile -c
Chcete-li odstranit nulové i volné stránky, použijte následující:
core_collector makedumpfile -d 17 -c
Úplný seznam dostupných voleb naleznete v manuálové stránce makedumpfile.
Změna výchozí akce
Ve výchozím nastavení, když kdump selže při vytvoření výpisu jádra, je připojen kořenový souborový systém a je spuštěn /sbin/init. Chcete-li toto chování změnit, jako uživatel root otevřete konfigurační soubor /etc/kdump.conf v textovém editoru, odstraňte znak hash (“#”) ze začátku #default řádku shellu a nahraďte hodnotu požadovanou akcí. jak je popsáno níže:
Podporované akce
Možnost | Popis |
---|---|
restartovat | Restartujte systém a během procesu ztratíte jádro. |
zastavit | Zastavte systém. |
vypnutí | Vypněte systém. |
shell | Spusťte relaci msh z initramfs, což uživateli umožní zaznamenat jádro ručně. |
Například:
default halt
Povolení služby
Chcete-li spustit démona kdump při zavádění, zadejte do příkazového řádku jako root následující příkaz:
# chkconfig kdump on
Tím povolíte službu pro úrovně běhu 2, 3, 4 a 5. Podobně zadáním "chkconfig kdump off" ji vypnete pro všechny úrovně běhu. Chcete-li spustit službu v aktuální relaci, použijte jako root následující příkaz:
# service kdump start
Testování konfigurace
Níže uvedené příkazy způsobí pád jádra. Při provádění těchto kroků buďte opatrní a v žádném případě je nepoužívejte na produkčním stroji. Chcete-li otestovat konfiguraci, restartujte systém s povoleným kdump a ujistěte se, že služba běží:
# service kdump status Kdump is operational
Poté do příkazového řádku zadejte následující příkazy:
# echo 1 > /proc/sys/kernel/sysrq # echo c > /proc/sysrq-trigger
To způsobí zhroucení linuxového jádra a soubor adresa-RRRR-MM-DD-HH:MM:SS/vmcore bude zkopírován do umístění, které jste vybrali v konfiguraci (tj. do /var/crash/ výchozí).