GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer la fonctionnalité de prise en charge de Early-kdump dans CentOS/RHEL 8

Qu'est-ce que la prise en charge anticipée de kdump ?

Dans les versions précédentes de CentOS/RHEL (5/6/7), le service kdump démarrait très tard dans la séquence de démarrage. Ainsi, les premières informations sur les plantages sont perdues lors du démarrage. À partir de CentOS/RHEL 8, un nouveau mécanisme de kdump appelé "prise en charge précoce de kdump" a été introduit pour résoudre ce problème. Early Kdump stocke les vmlinuz et initramfs du noyau de plantage dans les initramfs du noyau de démarrage et les charge directement dans la mémoire réservée (crashkernel) au début de la phase de démarrage.

Le package "kexec-tools" dispose désormais de 2 modules supplémentaires pour charger le noyau du crash et initramfs le plus tôt possible pendant la séquence de démarrage pour capturer le vidage du noyau du noyau de démarrage.

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

Par défaut, la prise en charge précoce de kdump est désactivée et nous devons l'activer manuellement. Il prend également en charge toutes les cibles de vidage et les paramètres de configuration pris en charge par les configurations kdump antérieures dans CentOS/RHEL 5,6,7.

Configurer le service kdump

1. Reportez-vous à la publication de configuration de kdump ci-dessous pour configurer kdump et vous assurer que le service kdump est en cours d'exécution.

CentOS / RHEL 7 :Comment configurer 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. Listez les modules de vidage anticipé disponibles dans le système

# dracut --list-modules | grep earlykdump
earlykdump 

3. Ajoutez le paramètre rd.earlykdump aux kernelopts ligne dans /boot/grub2/grubenv fichier :

# 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
###################################################################################################
###################################################################################################
###################################################################################################

Recréer iniramfs

1. L'étape suivante consiste maintenant à recréer initramfs pour ajouter les premiers modules kdump :

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

Par exemple :

# 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. Redémarrez la box pour charger les modifications

# reboot

3. Une fois le serveur remis en ligne, vérifiez le statut de 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

Tester le premier kdump

Testons maintenant le early-kdump en utilisant des fichiers unitaires systemd personnalisés et faisons planter SysRq dans la panique.

1. Créez un nom de fichier d'unité /etc/systemd/system/test_early_kdump.service .

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

2. Fournissez les autorisations appropriées :

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

Le fichier d'unité devrait ressembler à ceci :

# 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. Créez ensuite un autre script /usr/local/test_early_kdump.sh fichier pour passer la commande sysrq crash :

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

4. Fournissez une autorisation exécutable pour le script :

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

5. Rechargez le démon systemd :

# systemctl daemon-reload
IMPORTANT :Ne démarrez pas le service test_early_kdump.service (test crash) sinon le système plantera immédiatement.

6. Activez ce service test_early_kdump au niveau du démarrage :

# systemctl enable test_early_kdump.service

7. Redémarrez le système :

# reboot
Remarque :Lors du démarrage du système selon le script de test personnalisé, il déclenchera un plantage et continuera à redémarrer.

8. Désactivez les fichiers d'unité et de script personnalisés et supprimez-les après avoir testé. Démarrez le système en mode de secours en utilisant 'systemd.unit=rescue.target ' et désactiver le service 'test_early_kdump' au démarrage.

# systemctl disable test_early_kdump.service

La commande ci-dessus désactive le fichier d'unité personnalisé. La prochaine fois, le système démarrera normalement.

Comment démarrer en mode de secours ou en mode d'urgence via Systemd dans CentOS/RHEL 7 et 8

9. Supprimez les fichiers d'unité personnalisés et le fichier de script de plantage lorsque le plantage TEST est terminé :

# 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. Vérifiez le /var/crash/ dossier selon le kdump.conf (chemin /var/crash) mentionné pour le 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. Comment redémarrer le service réseau sur CentOS 8 ou RHEL 8

  2. CentOS / RHEL 7 :Comment configurer le getty série avec systemd

  3. CentOS / RHEL 7 :Comment configurer le serveur de noms en cache uniquement

  4. CentOS / RHEL 6,7 :Comment configurer les pages énormes

  5. Comment configurer le proxy dans CentOS/RHEL/Fedora

Comment configurer l'association de cartes réseau sur CentOS 8 / RHEL 8

Comment configurer l'adresse IP dans CentOS 7 / RHEL 7 et CentOS 6 / RHEL 6

Comment configurer une adresse IP statique dans CentOS 7 / RHEL 7

Comment configurer une adresse IP statique dans CentOS 8 / RHEL 8

Comment installer et configurer Ansible sur CentOS 8 / RHEL 8

Comment configurer le serveur VNC sur CentOS/RHEL 6