Freigabe des reservierten Speichers auf VPS
Categories:
Linux-Systeme reservieren standardmäßig Speicher für kdump. Die Größe dieses Speichers kann über den Parameter crashkernel eingestellt werden. Da viele Anwendungsentwickler normalerweise keinen Kernelabsturz auslösen, kann dieser Speicher durch Anpassung der Datei /etc/default/grub freigegeben werden.
Wenn kdump nicht benötigt wird, kann der Parameter crashkernel auf 0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M gesetzt werden, um Speicher freizugeben.
Anzeige: cat /etc/default/grub
Standardwert:
GRUB_CMDLINE_LINUX=" vga=792 console=tty0 console=ttyS0,115200n8 net.ifnames=0 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 iommu=pt crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M crash_kexec_post_notifiers=1"
Erklärung des crashkernel-Feldes: Hosts mit 0-1G RAM reservieren 0M Speicher, Hosts mit 1-4G RAM reservieren 192M Speicher, Hosts mit 4-128G RAM reservieren 384M Speicher, Hosts mit mehr als 128G RAM reservieren 512M Speicher.
Ein Host mit 1G RAM wird der Kategorie 1-4G zugeordnet und reserviert 192MB für kdump. Ein Host mit 4G RAM wird der Kategorie 4-128G zugeordnet und reserviert 384MB für kdump.
Änderung: sudo sed -i 's/crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M/crashkernel=0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M/' /etc/default/grub
Neustart erforderlich: sudo update-grub && sudo reboot
Beispiel für typische 2C1G-VPS für Anfänger: Vor und nach der Änderung zeigt sich ein deutlicher Unterschied zwischen 366MB und 562MB freiem Speicher.
# Vor der Änderung
root@iZj6c0otki9ho421eewyczZ:~# free
total used free shared buff/cache available
Mem: 707180 340772 123400 2624 358872 366408
Swap: 0 0 0
# Nach der Änderung
root@iZj6c0otki9ho421eewyczZ:~# free
total used free shared buff/cache available
Mem: 903788 341656 451380 2616 251032 562132
Swap: 0 0 0
Für 2C4G-VPS zeigt sich ein Unterschied zwischen 3.1GB und 3.5GB freiem Speicher.
# Vor der Änderung
root@iZj6c1prxn78ilvd2inku1Z:~# free
total used free shared buff/cache available
Mem: 3512696 377672 2870944 1260 415116 3135024
Swap: 0 0 0
# Nach der Änderung
root@iZj6c1prxn78ilvd2inku1Z:~# free
total used free shared buff/cache available
Mem: 3905912 374468 3408304 1252 270508 3531444
Swap: 0 0 0
Weitere Informationen zu kdump
Kdump ist ein Kernel-Crash-Dump-Mechanismus, der den Speicherzustand des Systems bei einem Linux-Kernel-Crash erfasst. Er basiert auf der kexec-Technologie, die es einem Linux-Kernel ermöglicht, einen anderen Linux-Kernel zu starten, ohne den BIOS-Initialisierungsprozess durchlaufen zu müssen. Dadurch kann das System nach einem Absturz schnell zu einem neuen Kernel (auch als Capture-Kernel oder crashkernel bezeichnet) gebootet werden.
Wenn das System auf einen schwerwiegenden Fehler stößt und einen Kernel-Panic auslöst, lädt der aktuell laufende Kernel (auch als Hauptkernel bezeichnet) mit kexec den vorbereiteten Capture-Kernel und speichert den Speicherinhalt an einem festgelegten Ort, wie z.B. einer bestimmten Partition auf der Festplatte oder über das Netzwerk auf einem anderen Rechner. Diese gespeicherte Speicherabbilddatei (vmcore oder kdump-Datei) kann für die spätere Analyse verwendet werden, um die Ursache des Absturzes zu ermitteln.
Um kdump zu aktivieren, muss normalerweise beim Systemstart ein Teil des Speichers für den Capture-Kernel reserviert werden, damit dieser auch bei einem Absturz des Hauptkernels unbeeinträchtigt arbeiten und die Speicherauszugsaufgabe abschließen kann. Die Konfiguration und Nutzung von kdump umfasst normalerweise die Anpassung der Bootloader-Einstellungen, die Justierung der Kernel-Parameter sowie die Festlegung eines geeigneten Speicherorts für die vmcore-Datei.