Zwolnienie zarezerwowanej pamięci VPS

Domyślnie system Linux rezerwuje blok pamięci dla kdump. Wielkość tego bloku pamięci można ustawić za pomocą parametru crashkernel. Deweloperzy aplikacji zazwyczaj nie wywołują崩溃 jądra, więc można zwolnić tę pamięć, modyfikując plik /etc/default/grub.

Jeśli nie potrzebujesz kdump, możesz ustawić parametr crashkernel na 0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M, co zwolni blok pamięci.

Sposób sprawdzenia: cat /etc/default/grub

Domyślna wartość:

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"

Wyjaśnienie pola crashkernel: oznacza to, że hosty z pamięcią 0-1G rezerwują 0M pamięci, hosty z pamięcią 1-4G rezerwują 192M pamięci, hosty z pamięcią 4-128G rezerwują 384M pamięci, a hosty z pamięcią 128G i więcej rezerwują 512M pamięci.

Hosty z 1G pamięci zostaną podzielone do przedziału 1-4G, rezerwując 192MB pamięci dla kdump. Hosty z 4G pamięci zostaną podzielone do przedziału 4-128G, rezerwując 384MB pamięci dla kdump.

Sposób modyfikacji: 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

Restart, aby aktywować: sudo update-grub && sudo reboot

Na przykład, dla popularnych VPS 2C1G używanych przez początkujących, poniżej znajduje się przestrzeń pamięci przed i po zmianie na czystym systemie. Można zauważyć znaczącą różnicę między 366MB a 562MB.

# Przed zmianą
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          707180      340772      123400        2624      358872      366408
Swap:              0           0           0

# Po zmianie
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          903788      341656      451380        2616      251032      562132
Swap:              0           0           0

Przestrzeń pamięci VPS 2C4G przed i po zmianie, różnica między 3.1GB a 3.5GB.

# Przed zmianą
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3512696      377672     2870944        1260      415116     3135024
Swap:              0           0           0

# Po zmianie
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3905912      374468     3408304        1252      270508     3531444
Swap:              0           0           0

Więcej informacji o kdump

Kdump to mechanizm zrzutu崩溃 jądra, używany do przechwytywania stanu pamięci systemu, gdy jądro systemu Linux ulegnie崩溃. Opiera się na technologii kexec, która pozwala jednemu jądrze Linux uruchomić inne jądro Linux bez inicjalizacji przez BIOS, co pozwala systemowi szybko uruchomić nowe jądro (nazywane również jądrem przechwytującym lub crashkernel) po崩溃.

Gdy system napotka błąd krytyczny i wywoła błąd jądra (kernel panic), aktualnie działające jądro (nazywane również głównym jądrem) wykorzystuje kexec, aby załadować wcześniej przygotowane jądro przechwytujące i zapisać zawartość pamięci systemu w określonym miejscu, takim jak partycja na dysku lub przez sieć na inną maszynę. Ten zapisany obraz pamięci (vmcore lub plik kdump) może być wykorzystany do analizy po fakcie, pomagając deweloperom lub administratorom systemu w znalezieniu przyczyny崩溃.

Aby włączyć funkcję kdump, zazwyczaj trzeba zarezerwować część pamięci dla jądra przechwytującego w konfiguracji uruchamiania systemu, aby nawet w przypadku崩溃 głównego jądra ta część pamięci pozostała nienaruszona, co gwarantuje, że jądro przechwytujące może正常 pracować i wykonać zadanie转储 pamięci. Konfiguracja i użycie kdump zwykle obejmuje modyfikację ustawień programu rozruchowego, dostosowanie parametrów jądra oraz ustawienie odpowiedniego miejsca przechowywania plików vmcore.