GNU/Linux >> Znalost Linux >  >> Linux

Jak nakonfigurovat funkci podpory Early-kdump v CentOS/RHEL 8

Co je časná podpora kdump?

V předchozích verzích CentOS/RHEL (5/6/7) se služba kdump spouštěla ​​velmi pozdě v zaváděcí sekvenci. Během spouštění se tak ztratí informace o raných haváriích. Po spuštění CentOS/RHEL 8 byl zaveden nový mechanismus kdump nazvaný „časná podpora kdump“, který tento problém řeší. Raný Kdump ukládá vmlinuz a initramfs havarijního jádra do initramfs zaváděcího jádra a načítá je přímo do vyhrazené paměti (crashkernel) během počáteční fáze zavádění.

Balíček „kexec-tools“ má nyní 2 extra moduly pro načtení havarijního jádra a initramfs co nejdříve během zaváděcí sekvence, aby se zachytil výpis z havárie zaváděcího jádra.

/usr/lib/dracut/modules.d/99earlykdump/early-kdump.sh
/usr/lib/dracut/modules.d/99earlykdump/module-setup.sh
# dracut --list-modules | grep earlykdump
earlykdump

Ve výchozím nastavení je podpora raného kdump zakázána a musíme ji povolit ručně. Podporuje také všechny cíle výpisu a konfigurační parametry podporované dřívějšími konfiguracemi kdump v CentOS/RHEL 5,6,7.

Konfigurace služby kdump

1. V níže uvedeném příspěvku o konfiguraci kdump nakonfigurujte kdump a ujistěte se, že je služba kdump ve stavu spuštěného.

CentOS / RHEL 7 :Jak nakonfigurovat kdump
# systemctl enable --now kdump.service
# systemctl status kdump.service
● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2019-08-19 23:42:11 IST; 16h ago
Main PID: 1255 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 26213)
Memory: 0B
CGroup: /system.slice/kdump.service

Aug 19 23:42:09  systemd[1]: Starting Crash recovery kernel arming...
Aug 19 23:42:11  kdumpctl[1255]: Kdump already running: [WARNING]
Aug 19 23:42:11  systemd[1]: Started Crash recovery kernel arming.

2. Uveďte seznam modulů s předčasným výpisem, které jsou k dispozici v system

# dracut --list-modules | grep earlykdump
earlykdump 

3. Připojte parametr rd.earlykdump na kernelopty řádek v /boot/grub2/grubenv soubor:

# cat /boot/grub2/grubenv
# GRUB Environment Block
saved_entry=4eb68bf18e86437d9c957ff4863a3288-4.18.0-80.el8.x86_64
kernelopts=root=/dev/mapper/ol-root ro crashkernel=auto resume=/dev/mapper/ol-swap rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rd.earlykdump
boot_success=0
###################################################################################################
###################################################################################################
###################################################################################################

Znovu vytvořit iniramfs

1. Nyní je dalším krokem opětovné vytvoření initramfs pro přidání modulů early-kdump:

# lsinitrd | grep -i early
# dracut -f --add earlykdump

Například:

# lsinitrd |grep -i early
Arguments: -f --add 'earlykdump'
earlykdump
-rwxr-xr-x 1 root root 1940 Jun 17 10:29 usr/lib/dracut/hooks/cmdline/00-early-kdump.sh 

2. Restartujte box pro načtení změn

# reboot

3. Jakmile je server opět online, zkontrolujte stav early-kdump:

# journalctl -x |grep -i early-kdump
Aug 20 16:08:09 [HOSTNAME] dracut-cmdline[196]: early-kdump is enabled.
Aug 20 16:08:10 [HOSTNAME] dracut-cmdline[196]: kexec: loaded early-kdump kernel

Včasné testování-kdump

Nyní otestujeme raný kdump pomocí vlastních souborů systemd unit a vyděsíme se pomocí selhání SysRq.

1. Vytvořte název souboru jednotky /etc/systemd/system/test_early_kdump.service .

# touch /etc/systemd/system/test_early_kdump.service

2. Poskytněte příslušná oprávnění:

# chmod 664 /etc/systemd/system/test_early_kdump.service

Soubor jednotky by měl vypadat takto:

# cat /etc/systemd/system/test_early_kdump.service
[Unit]
Description=test_early_kdump Service
Before=kdump.service

[Service]
ExecStart=/usr/local/test_early_kdump.sh
Type=simple

[Install]
WantedBy=default.target

3. Poté vytvořte další skript /usr/local/test_early_kdump.sh soubor pro předání příkazu sysrq crash:

# cat /usr/local/test_early_kdump.sh
#!/bin/bash
/usr/bin/echo c > /proc/sysrq-trigger

4. Poskytněte spustitelné oprávnění pro skript:

# chmod +x /usr/local/test_early_kdump.sh

5. Znovu načtěte démona systemd:

# systemctl daemon-reload
DŮLEŽITÉ :Nespouštějte službu test_early_kdump.service (zhroucení testu), jinak systém okamžitě spadne.

6. Povolte tuto službu test_early_kdump na úrovni spouštění:

# systemctl enable test_early_kdump.service

7. Restartujte systém:

# reboot
Poznámka :Při spouštění systému podle vlastního testovacího skriptu spustí selhání a bude se restartovat.

8. Zakažte soubory uživatelských jednotek a skriptů a po testování je odstraňte. Spusťte systém v záchranném režimu pomocí ‘systemd.unit=rescue.target ‘ a zakázat službu ‘test_early_kdump’ při spouštění.

# systemctl disable test_early_kdump.service

Výše uvedený příkaz zakáže soubor uživatelských jednotek. Příště se systém spustí normálně.

Jak nabootovat do záchranného režimu nebo nouzového režimu prostřednictvím Systemd v CentOS/RHEL 7 a 8

9. Po dokončení zhroucení TEST odeberte soubory uživatelských jednotek a soubor skriptu selhání:

# rm /etc/systemd/system/test_edump.service
rm: remove regular file '/etc/systemd/system/test_edump.service'? y 
# rm /usr/local/test_early_kdump.sh

10. Zkontrolujte /var/crash/ složku podle kdump.conf (cesta /var/crash) uvedené pro vmcore:

# ls -l /var/crash/127.0.0.1-2019-08-20-17:09:23
total 56648
-rw-------. 1 root root 57959829 Aug 20 17:09 vmcore
-rw-r--r--. 1 root root 41452 Aug 20 17:09 vmcore-dmesg.txt


Linux
  1. Jak restartovat síťovou službu na CentOS 8 nebo RHEL 8

  2. CentOS / RHEL 7 :Jak nakonfigurovat sériové getty pomocí systemd

  3. CentOS / RHEL 7 :Jak nakonfigurovat jmenný server pouze v mezipaměti

  1. CentOS / RHEL 6,7 :Jak nakonfigurovat obrovské stránky

  2. CentOS / RHEL 6 :Jak zakázat službu telnet

  3. Jak zakázat NetworkManager v CentOS/RHEL 8

  1. Jak nakonfigurovat proxy v CentOS/RHEL/Fedora

  2. CentOS / RHEL 6 :Jak nakonfigurovat kdump

  3. CentOS / RHEL 7 :Jak nakonfigurovat kdump