EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Omogočanje Kdump v Linuxu: izpisi ob paniki jedra

Raven: Srednja / Senior
Predvideni čas: ~30 minut
Cilj: Konfiguriranje zajema zrušitvenih izpisov (crash dump) kdump v sistemu Linux ob paniki jedra, kar omogoča zanesljivo analizo po zrušitvi (post-mortem) napak v produkcijskem okolju. Ta vodnik pojasnjuje, kako omogočiti kdump v sistemu Linux, in pokriva celotno konfiguracijo zrušitvenega izpisa v sistemu Linux, od rezervacije pomnilnika do analize vmcore.

Uvod

Panika jedra (kernel panic) ustavi sistem in brez zrušitvenega izpisa nimate podatkov za delo. Kdump, standardni okvir za zrušitvene izpise jedra v sistemu Linux, to reši: vnaprej naloži zajemalno jedro v rezervirani pomnilnik in ko glavno jedro doživi paniko, kexec zažene to zajemalno jedro, da zapiše popolno sliko pomnilnika (vmcore) na disk. V tem vadnici se boste naučili, kako omogočiti kdump v sistemu Linux za zajem zrušitvenih izpisov ob paniki jedra Linux na sistemih Ubuntu, Debian in tistih, ki temeljijo na RHEL. Pokazali vam bomo točno, kako omogočiti sisteme kdump, ki jih zahteva Linux, vključno s koraki za analizo post-mortem vmcore v sistemu Linux.

Kaj je Kdump?

Kdump je mehanizem za zrušitvene izpise jedra, ki uporablja kexec za zagon sekundarnega zajemalnega jedra iz rezerviranega pomnilniškega območja vsakič, ko glavno jedro doživi paniko. Zajemalno jedro se izvaja z omejenim pomnilnikom (nastavljenim z zagonskim parametrom crashkernel) in zapiše sliko pomnilnika neuspešnega jedra na disk kot vmcore – popolno datoteko zrušitvenega izpisa pomnilnika, ki jo je mogoče analizirati z orodjem crash ali gdb. Storitev kdump (kdump.service v sistemih, ki temeljijo na RHEL, ali kdump-tools.service v sistemih, ki temeljijo na Debianu) upravlja nalaganje zajemalnega jedra v času zagona.

Ključne komponente:

  • Kexec: sistemski klic in orodje v uporabniškem prostoru (userspace), ki naloži zajemalno jedro v rezervirani pomnilnik.
  • Crashkernel: zagonski parameter, ki glavnemu jedru pove, koliko RAM-a naj rezervira za delovanje kdump v sistemu Linux (npr. crashkernel=256M).
  • Vmcore: izhodna datoteka, ki vsebuje popoln zrušitveni izpis pomnilnika, privzeto zapisana v /var/crash.
  • /var/crash: privzeti imenik, kjer kdump shrani datoteke vmcore po paniki jedra.

Predpogoji

Preden začnete, se prepričajte, da so izpolnjeni naslednji pogoji:

  • Operacijski sistem: Ubuntu 22.04/24.04 LTS, Debian 12/13 ali RHEL/CentOS/AlmaLinux 9/10 (Preizkušeno in preverjeno na Ubuntu 24.04, Debian 13 in AlmaLinux 10).
  • Dostop: Dostop sudo ali root do strežnika.
  • RAM: Najmanj 2 GB skupaj. Kdump rezervira del sistemskega pomnilnika (običajno 256 MB) za zajemalno jedro – sistemi z malo pomnilnika morda nimajo dovolj rezerve.
  • Prostor na disku: Vsaj toliko prostega prostora v /var/crash, kolikor ima vaš sistem RAM-a (vmcore je lahko velik kot fizični pomnilnik).
  • Zahtevano znanje: samozavestna uporaba ukazne vrstice Linux, osnovno urejanje datotek in seznanjenost z zagonskimi parametri GRUB.
  • Okno za ponovni zagon: Konfiguracija parametra crashkernel zahteva ponovni zagon, da začne veljati.

Korak 1: Namestite pakete kdump in kexec

Kdump temelji na kexec-tools (komponenta uporabniškega prostora kexec/kdump v sistemu Linux) in pomočnikih, specifičnih za distribucijo.

Ubuntu/Debian:

sudo apt update && sudo apt install kdump-tools kexec-tools crash -y

Med interaktivno namestitvijo v sistemu Ubuntu se lahko prikaže poziv debconf, ki vas vpraša, ali želite samodejno konfigurirati parameter crashkernel. Izberite Da, če ste vprašani. Če se poziv ne prikaže (npr. v neinteraktivnem načinu), se crashkernel samodejno konfigurira prek datoteke drop-in. Če boste morali vrednost kasneje prilagoditi, Korak 2 pokriva ročno konfiguracijo.

RHEL/CentOS/AlmaLinux:

sudo dnf install kexec-tools crash -y

V sistemih, ki temeljijo na RHEL, paket kexec-tools zagotavlja vse potrebno: binarno datoteko kexec, storitev kdump in privzete konfiguracijske datoteke.

Info

V sodobnih različicah, kot sta AlmaLinux 9 in 10, je kexec-tools običajno prednameščen in storitev kdump.service je že privzeto aktivna. To lahko preverite z zagonom cat /sys/kernel/kexec_crash_loaded – če vrne 1, lahko Koraka 2 in 4 varno preskočite.

Info

Paket crash je standardno orodje v sistemu Linux za analizo vmcore. Njegova namestitev zdaj vam bo prihranila čas, ko boste dejansko morali pregledati izpis.

Korak 2: Konfigurirajte zagonski parameter crashkernel

Parameter crashkernel jedru pove, koliko pomnilnika naj rezervira za kdump v sistemu Linux v času zagona. Brez te rezervacije zajemalno jedro nima kje teči. Razumevanje, kako pravilno konfigurirati vrednosti parametra crashkernel, je bistveno – premalo in zajemalno jedro se ne bo zagnalo; preveč in boste zapravili produkcijski RAM.

2.1 Preverite trenutno konfiguracijo

Najprej preverite, ali je crashkernel že nastavljen:

cat /proc/cmdline | grep crashkernel

Če izhod vsebuje vnos crashkernel=, je parameter že konfiguriran. Preverite lahko rezervirano količino in preskočite na Korak 3, če ustreza vašim potrebam.

2.2 Konfigurirajte parameter crashkernel v sistemih, ki temeljijo na GRUB

Ubuntu/Debian:

Preden spremenite glavno konfiguracijo GRUB, preverite, ali datoteka drop-in že obstaja:

cat /etc/default/grub.d/kdump-tools.cfg

Če je paket že konfiguriral crashkernel tukaj, spremenite to datoteko namesto tega, da preprečite podvojene vnose v grub.cfg. V nasprotnem primeru odprite glavno datoteko privzetih nastavitev GRUB:

sudo nano /etc/default/grub

Poiščite vrstico GRUB_CMDLINE_LINUX_DEFAULT in dodajte parameter crashkernel. Za večino produkcijskih strežnikov z 4 GB ali več RAM-a, 256 MB je dovolj za rezervacijo pomnilnika za kdump v sistemu Linux:

GRUB_CMDLINE_LINUX_DEFAULT="quiet crashkernel=256M"

Info

Če ima vrstica že druge parametre, dodajte crashkernel=256M po presledku – ne zamenjajte obstoječih vrednosti.

Za strežnike z manj kot 4 GB RAM-a uporabite crashkernel=128M. Za sisteme z 64 GB ali več razmislite o crashkernel=512M. Uporabite lahko tudi sintakso samodejnega prilagajanja crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M za dinamično konfiguracijo vrednosti parametra crashkernel glede na nameščen RAM.

Shranite in zaprite datoteko, nato ponovno ustvarite konfiguracijo GRUB:

sudo update-grub

RHEL/CentOS/AlmaLinux:

Za RHEL/AlmaLinux 8+ se parameter crashkernel nahaja v GRUB_CMDLINE_LINUX (brez _DEFAULT). Vendar pa je v sodobnih sistemih, ki uporabljajo BLS (Boot Loader Specification), najvarnejši in priporočeni način za posodobitev ukazne vrstice jedra uporaba grubby namesto neposrednega spreminjanja /etc/default/grub:

sudo grubby --update-kernel=ALL --args="crashkernel=256M"

Če ga morate ročno spremeniti prek konfiguracij GRUB, uredite /etc/default/grub in posodobite GRUB_CMDLINE_LINUX. Nato ponovno ustvarite konfiguracijo (poti se razlikujejo glede na način zagona):

# Za sisteme z legacy BIOS: sudo grub2-mkconfig -o /boot/grub2/grub.cfg # Za sisteme UEFI (npr. AlmaLinux): sudo grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg

Warning

Napačna konfiguracija GRUB lahko naredi sistem nezagnljiv. Dvakrat preverite svoje vnose. Če imate dostop do konzole (IPMI/KVM), ga imejte pripravljenega.

2.3 Ponovno zaženite, da uporabite rezervacijo crashkernel

Rezervacija pomnilnika crashkernel začne veljati šele po ponovnem zagonu:

sudo reboot

Ko se sistem ponovno zažene, preverite, ali je rezervacija aktivna:

cat /proc/cmdline | grep crashkernel

Pričakovani izhod vključuje:

crashkernel=256M

Potrdite tudi, da je bil pomnilnik dejansko rezerviran:

sudo dmesg | grep -i "crashkernel reserved"

Videti bi morali vrstico, kot je:

crashkernel reserved: 0x... - 0x... (NNN MB)

Če rezervacija ni uspela (sporočilo pravi "crashkernel reservation failed"), boste morda morali povečati ali zmanjšati vrednost. To je pogost korak pri odpravljanju težav s paniko jedra v sistemu Linux – jedro ni moglo najti zveznega bloka zahtevane velikosti.

Korak 3: Konfigurirajte nastavitve storitve kdump v sistemu Linux

Ko je pomnilnik rezerviran, konfigurirajte, kje in kako kdump shrani vmcore.

3.1 Konfiguracija v RHEL/CentOS/AlmaLinux

Glavna konfiguracijska datoteka je /etc/kdump.conf. Odprite jo:

sudo nano /etc/kdump.conf

Kritične direktive:

path /var/crash core_collector makedumpfile -l --message-level 7 -d 31

  • path /var/crash: nastavi ciljni imenik vmcore. Vsi zrušitveni izpisi pristanejo tukaj.
  • core_collector makedumpfile: stisne izpis in filtrira nepotrebne strani. Zastavica -d 31 izključi ničelne strani, predpomnilnik, uporabniške podatke in proste strani – običajno zmanjša vmcore na 10-20 % celotnega RAM-a.

Info

Privzeta pot /var/crash je relativna na korenski datotečni sistem. Če je vaša korenska particija majhna, razmislite o tem, da to usmerite na namensko particijo ali zunanjo priklopno točko z dovolj prostora.

3.2 Konfiguracija v Ubuntu/Debian

V sistemih, ki temeljijo na Debianu, se konfiguracija kdump-tools nahaja v /etc/default/kdump-tools. Odprite jo:

sudo nano /etc/default/kdump-tools

Zagotovite, da so te vrstice nastavljene:

USE_KDUMP=1 KDUMP_COREDIR="/var/crash" KDUMP_CORE_COLLECTOR="makedumpfile -l --message-level 7 -d 31"

USE_KDUMP=1 omogoči storitev kdump. Brez tega se zajemalno jedro ob zagonu ne bo naložilo.

Korak 4: Omogočite in zaženite storitev kdump

To je zadnji korak o tem, kako omogočiti kdump v sistemu Linux. Omogočite storitev kdump, da se zajemalno jedro samodejno naloži ob vsakem zagonu, kar zaključi nastavitev kexec/kdump v sistemu Linux.

Ubuntu/Debian:

sudo systemctl enable kdump-tools sudo systemctl start kdump-tools

RHEL/CentOS/AlmaLinux:

sudo systemctl enable kdump sudo systemctl start kdump

Preverite, ali storitev teče:

Ubuntu/Debian:

sudo systemctl status kdump-tools

RHEL/CentOS/AlmaLinux:

sudo systemctl status kdump

Pričakovani izhod vključuje:

Active: active (exited)

Stanje "exited" (izhod) je normalno – storitev kdump naloži zajemalno jedro v rezervirani pomnilnik in nato izstopi. Ne teče kot trajen demon.

Info

Če se storitev ne more zagnati, zaženite journalctl -xeu kdump (ali kdump-tools v sistemih, ki temeljijo na Debianu), da vidite zakaj. Najpogostejši vzrok je manjkajoča ali nezadostna rezervacija crashkernel – ponovno obiščite Korak 2.

Korak 5: Preverjanje in testiranje

5.1 Preverite, ali je kdump pripravljen

Potrdite, da je zajemalno jedro naloženo in pripravljeno na sprožitev ob paniki jedra:

cat /sys/kernel/kexec_crash_loaded

Pričakovani izhod:

1

Vrednost 1 pomeni, da je zajemalno jedro naloženo. Vrednost 0 pomeni, da kdump ne deluje – vrnite se nazaj in preverite status storitve ter rezervacijo crashkernel.

Preverite lahko tudi, koliko pomnilnika je bilo odloženo za rezervacijo pomnilnika za kdump v sistemu Linux:

cat /sys/kernel/kexec_crash_size

To vrne rezervacijo v bajtih.

5.2 Sprožite testno zrušitev

Warning

Naslednji ukaz povzroči takojšnjo paniko jedra. Sistem se bo zrušil, zajel vmcore in se ponovno zagnal. Tega nikoli ne zaženite na produkcijskem strežniku med delovnim časom brez okna za vzdrževanje. Prepričajte se, da so vse kritične storitve bodisi izpraznjene ali pa je strežnik izven rotacije uravnoteževalnika obremenitve.

Omogočite sprožilce SysRq in nato vsilite zrušitev:

echo 1 | sudo tee /proc/sys/kernel/sysrq echo c | sudo tee /proc/sysrq-trigger

Sistem bo doživel paniko. Če je kdump pravilno konfiguriran, se zajemalno jedro zažene, zapiše vmcore v /var/crash in sistem se samodejno ponovno zažene.

Info

Vaša seja SSH bo takoj prekinjena. Počakajte 3–5 minut, da se izpis zapiše in sistem v celoti ponovno zažene, preden poskusite znova vzpostaviti povezavo.

5.3 Potrdite, da je bil vmcore zajet

Po ponovnem zagonu preverite /var/crash za izpis:

ls -lh /var/crash/

Pričakovani izhod (format se razlikuje glede na distribucijo):

Družina RHEL (AlmaLinux/CentOS):

drwxr-xr-x 2 root root 4.0K May 23 14:00 127.0.0.1-2026-05-23-14:00:01/

Znotraj tega imenika s časovnim žigom boste našli vmcore (zrušitveni izpis pomnilnika) in vmcore-dmesg.txt (dnevnik jedra).

Družina Debian (Ubuntu/Debian):

drwxr-xr-x 2 root root 4.0K May 23 14:00 202605231400/

Znotraj tega imenika so datoteke običajno poimenovane dump.<časovni_žig> in dmesg.<časovni_žig>.

Preverite znotraj imenika:

ls -lh /var/crash/*/

Videti te datoteke potrjuje, da je vaš cevovod za zrušitvene izpise jedra Linux v celoti operativen.

Korak 6: Analiza datoteke vmcore

Zajem zrušitvenega izpisa je uporaben le, če ga lahko preberete. Orodje crash je standardno orodje, na katerega se skrbniki sistema Linux zanašajo za analizo vmcore in odpravljanje težav s paniko jedra v sistemu Linux.

6.1 Namestite jedro za odpravljanje napak (debug)

Orodje crash zahteva simbole za odpravljanje napak za točno različico jedra, ki je doživelo paniko.

Ubuntu:

echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ddebs.list sudo apt install ubuntu-dbgsym-keyring sudo apt update sudo apt install linux-image-unsigned-$(uname -r)-dbgsym

Info

Za podpisana jedra se simboli za odpravljanje napak nahajajo v paketu unsigned.

Debian:

echo "deb http://deb.debian.org/debian-debug/ $(lsb_release -cs)-debug main" | sudo tee /etc/apt/sources.list.d/debian-debug.list sudo apt update sudo apt install linux-image-$(uname -r)-dbg

Info

Namestiti morate točno gradnjo simbolov za odpravljanje napak. Če paket ni najden, posodobite jedro na najnovejšo razpoložljivo različico in ponovno zaženite.

RHEL/CentOS/AlmaLinux:

sudo dnf --enablerepo='*-debuginfo' install -y kernel-debuginfo-$(uname -r)

Info

Alternativno lahko uporabite sudo dnf debuginfo-install -y kernel-$(uname -r), če je vtičnik debuginfo-install na voljo.

6.2 Odprite vmcore s crash

Preden zaženete crash, preverite, ali so simboli za odpravljanje napak nameščeni in se ujemajo z vašo različico jedra, da ga ne boste zagnali na slepo:

# RHEL/Debian: ls -lh /usr/lib/debug/lib/modules/$(uname -r)/vmlinux # Ubuntu: ls -lh /usr/lib/debug/boot/vmlinux-$(uname -r)

Pomaknite se v imenik zrušitvenega izpisa in odprite vmcore (točen ukaz se razlikuje glede na OS):

RHEL/CentOS/AlmaLinux:

sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/*/vmcore

Debian:

sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/*/dump.*

Ubuntu:

sudo crash /usr/lib/debug/boot/vmlinux-$(uname -r) /var/crash/*/dump.*

Orodje crash se naloži in vas vrže v interaktivno lupino. Ključni ukazi za začetni triaž:

bt # povratno sledenje (backtrace) opravila, ki je sprožilo paniko log # medpomnilnik dnevnika jedra (enako kot dmesg v času panike) ps # seznam procesov v času zrušitve mod # naloženi moduli jedra sys # informacije o sistemu

Vpišite exit ali quit, da zapustite lupino crash.

Info

Začnite z bt, da vidite točen sklad klicev, ki je sprožil paniko. V večini primerov to takoj pokaže na kriv modul ali gonilnik jedra – najbolj neposredno tehniko za odpravljanje težav s paniko jedra v sistemu Linux, ki je na voljo.

Povratne spremembe (Rollback)

Za razveljavitev konfiguracije kdump in pridobitev nazaj rezerviranega pomnilnika:

1. Ustavite in onemogočite storitev kdump:

Ubuntu/Debian:

sudo systemctl disable --now kdump-tools

RHEL/CentOS/AlmaLinux:

sudo systemctl disable --now kdump

2. Odstranite parameter crashkernel:

Ubuntu/Debian:

Odpri konfiguracijsko datoteko drop-in:

sudo nano /etc/default/grub.d/kdump-tools.cfg

Odstranite parameter crashkernel (če ste ga ročno dodali v /etc/default/grub, namesto tega uredite to datoteko).

RHEL/CentOS/AlmaLinux:

Odpri datoteko privzetih nastavitev GRUB:

sudo nano /etc/default/grub

Odstranite crashkernel=256M iz vrstice GRUB_CMDLINE_LINUX ali GRUB_CMDLINE_LINUX_DEFAULT.

Ponovno ustvarite GRUB:

Ubuntu/Debian:

sudo update-grub

RHEL/CentOS/AlmaLinux:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

3. Ponovno zaženite, da sprostite rezervirani pomnilnik:

sudo reboot

4. Odstranite pakete (neobvezno):

Ubuntu/Debian:

sudo apt remove --purge kdump-tools kexec-tools crash -y

RHEL/CentOS/AlmaLinux:

sudo dnf remove kexec-tools crash -y

Warning

Odstranitev kdump pomeni, da sistem ne bo več zajemal zrušitvenih izpisov ob paniki jedra. Obstoječe datoteke vmcore v /var/crash niso izbrisane – arhivirajte jih ali ročno odstranite, če potrebujete prostor na disku.

Odpravljanje težav

Storitev kdump se ne zažene

Preverite dnevnik za razlog:

journalctl -xeu kdump

Pogosti vzroki:

  • Ni rezervacije crashkernel. Preverite z cat /proc/cmdline | grep crashkernel. Če manjka, ponovite Korak 2.
  • Nezadostno rezerviran pomnilnik. Zajemalno jedro potrebuje dovolj RAM-a za inicializacijo in zapis izpisa. Poskusite povečati vrednost (npr. crashkernel=512M).
  • Konflikt s Secure Boot. Nekatere konfiguracije Secure Boot preprečujejo kexec nalaganje nepodpisanih jeder. Podpišite zajemalno jedro ali onemogočite Secure Boot v BIOS-u.

Vmcore ni zapisan po paniki

  • Prostor na disku. Preverite, ali ima /var/crash dovolj prostega prostora. Vmcore se lahko približa velikosti fizičnega RAM-a (pred stiskanjem z makedumpfile).
  • Napačna pot. Potrdite, da path v /etc/kdump.conf (ali KDUMP_COREDIR v /etc/default/kdump-tools) kaže na priklopljen datotečni sistem z dovoljenjem za pisanje.
  • Zavrnitev SELinux. V sistemih, ki temeljijo na RHEL, preverite ausearch -m avc -ts recent za zavrnitve, povezane s kdump.

Sistem se zatakne namesto da bi zajel izpis

To običajno kaže na težavo s strojno opremo ali gonilnikom, ki preprečuje prehod kexec/kdump v sistemu Linux. Poskusite dodati irqpoll nr_cpus=1 reset_devices v ukazno vrstico jedra kdump v /etc/sysconfig/kdump (RHEL) ali /etc/default/kdump-tools (Debian) kot KDUMP_CMDLINE_APPEND.

Zaključek

To je vse. Crashkernel rezervira pomnilnik, storitev kdump naloži zajemalno jedro ob zagonu in ob zrušitvenem izpisu panike jedra Linux vmcore pristane v /var/crash – pripravljen za konfiguracijo zrušitvenega izpisa v sistemu Linux, ki ji lahko dejansko zaupate. Zdaj imate delujočo nastavitev za samodejno omogočanje zajema zrušitvenih izpisov kdump v sistemu Linux; za globlje odpravljanje težav s paniko jedra v sistemu Linux podajte vmcore v crash in začnite s povratnim sledenjem.

Različica dokumenta: 1.0
Zadnja posodobitev: Maj 2026
Lastnik: Ekipa za tehnično dokumentacijo

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA