Swap je miesto na disku, kam systém odloží dáta z RAM, keď pamäť dochádza. Pridáte ho za pár minút a VPS vďaka nemu nespadne pri krátkej špičke. Ukážeme tiež, kedy swap nepomôže a je potrebné viac RAM.
Čo budete potrebovať
- VPS u StormHostu s Ubuntu 24.04 alebo Debianom 13
- Pripojenie cez SSH ako root (návod)
- Voľné miesto na disku aspoň vo veľkosti swapu (overíte príkazom
df -h /) - Približne 10 minút
Čo je swap a kedy pomôže#
Keď dôjde RAM a swap nie je, jadro Linuxu spustí OOM killer („out of memory“) a ukončí proces, ktorý zaberá najviac pamäte. Zvyčajne je to práve vaša databáza, herný server alebo aplikácia. V logu potom nájdete Out of memory: Killed process.
So swapom systém najprv odloží málo používané dáta na disk a proces beží ďalej.
| Situácia | Pomôže swap? |
|---|---|
| Krátka špička (aktualizácia, kompilácia, záloha) | Áno, VPS ju prečká bez pádu. |
| Dáta, ktoré sa načítajú raz a potom ležia (časť pamäte databázy, nepoužité služby) | Áno, uvoľní RAM pre to dôležité. |
| Aplikácia trvalo potrebuje viac RAM, než má VPS | Nie. Disk je mnohonásobne pomalší než RAM, aplikácia sa spomalí. Riešením je upgrade RAM. |
| Herný server (Minecraft, Rust) s plnou pamäťou | Nie. Server začne sekať. Nastavte mu menšiu pamäť, alebo navýšte RAM. |
Zistenie stavu#
swapon --show
free -hswapon --show– vypíše aktívny swap. Keď nevypíše nič, VPS swap nemá (to je pri novom VPS bežné).free -h– ukáže využitie RAM a swapu v čitateľných jednotkách (-h= human readable).
Vo výstupe free -h sledujte stĺpec available na riadku Mem: koľko pamäte majú aplikácie skutočne k dispozícii. Riadok Swap ukazuje veľkosť a využitie swapu.
Aký veľký swap zvoliť#
| RAM VPS | Odporúčaný swap | Prečo |
|---|---|---|
| 2 GB | 2 GB | Malý VPS dôjde k limitu najľahšie, rezerva sa hodí. |
| 4–8 GB | 2–4 GB | Stačí na pokrytie špičiek. |
| 16 GB a viac | 2–4 GB | Väčší swap nemá zmysel. Keď ho VPS naozaj využíva, potrebuje viac RAM. |
Swap zaberá miesto na disku, preto ho nerobte zbytočne veľký.
Vytvorenie swapového súboru#
Platí pre Ubuntu 24.04 aj Debian 13. Ako príklad vytvoríme swap s veľkosťou 2 GB v súbore /swapfile.
Vytvorte súbor potrebnej veľkosti:
bash fallocate -l 2G /swapfilefallocate– rýchlo vyhradí miesto na disku pre súbor.-l 2G– veľkosť súboru (2G= 2 GB, pre 4 GB napíšte4G)./swapfile– cesta k súboru.
Nastavte práva, aby súbor mohol čítať iba root. Vo swape môžu byť kusy pamäte s heslami:
bash chmod 600 /swapfile600– čítanie a zápis iba pre vlastníka (root), ostatní nič.
Pripravte súbor ako swap:
bash mkswap /swapfilemkswap– zapíše do súboru hlavičku swapu. VypíšeSetting up swapspace version 1, size = 2 GiB.
Zapnite swap:
bash swapon /swapfileswapon– začne swap používať hneď, ale iba do reštartu.
Skontrolujte výsledok príkazom
swapon --show. Uvidíte riadok/swapfile file 2G.
Keď swapon hlási „holes“
Ak swapon vypíše skipping - it appears to have holes, súborový systém neprijal súbor vytvorený cez fallocate. Zmažte ho (rm /swapfile) a vytvorte ho pomalšie, ale spoľahlivo príkazom dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress (count=2048 = 2048 × 1 MB = 2 GB). Potom pokračujte krokom 2.
Trvalé zapnutie cez /etc/fstab#
Aby sa swap zapol aj po reštarte, pridajte ho do súboru /etc/fstab.
Zazálohujte súbor:
bash cp /etc/fstab /etc/fstab.bakPridajte na koniec súboru riadok so swapom:
bash echo '/swapfile none swap sw 0 0' >> /etc/fstabecho '…'– vypíše text v úvodzovkách.>>– pripojí text na koniec súboru. Pozor, jediné>by celý súbor prepísalo.
Význam jednotlivých stĺpcov riadka:
Stĺpec Hodnota Význam 1. zariadenie /swapfileSúbor so swapom. 2. prípojný bod noneSwap sa nikam nepripája. 3. typ swapIde o swap. 4. voľby swPredvolené voľby pre swap. 5. dump 0Nezálohovať starým nástrojom dump.6. kontrola 0Nekontrolovať pri štarte (pri swape sa nekontroluje nikdy). Overte, že je fstab v poriadku:
bash findmnt --verifyfindmnt --verify– skontroluje syntax/etc/fstab. Výsledok musí byťSuccess, no errors or warnings detected, alebo súhrn s0 parse errors, 0 errors. Samotné varovania (warnings) k iným riadkom štart VPS neohrozia.
Chybný /etc/fstab môže zastaviť štart VPS
Keby VPS po reštarte nenabehol, otvorte konzolu v prehliadači a vráťte zálohu príkazom cp /etc/fstab.bak /etc/fstab.
Swappiness: ako ochotne systém swapuje#
Hodnota vm.swappiness (0–200) hovorí, ako skoro začne jadro odkladať dáta do swapu. Predvolená hodnota je 60. Na serveri je lepšia nižšia hodnota, aby sa swap používal hlavne ako poistka.
| Nastavenie | Čo robí | Odporúčaná hodnota | Kedy zmeniť |
|---|---|---|---|
vm.swappiness | Pomer medzi uvoľňovaním medzipamäte súborov a odkladaním pamäte procesov do swapu. Nižšie číslo = menej swapovania. | 10 | Na 60 (predvolené) sa vráťte, ak je VPS pri plnej pamäti pomalší než predtým. Hodnota 0 neznamená „swap vypnutý“, iba ho systém použije až v núdzi. |
Zistite aktuálnu hodnotu:
bash cat /proc/sys/vm/swappinessUložte novú hodnotu do vlastného súboru (Debian 13 už súbor
/etc/sysctl.confnečíta, priečinok/etc/sysctl.d/funguje na oboch systémoch):bash echo 'vm.swappiness=10' > /etc/sysctl.d/99-swappiness.confNačítajte nastavenie bez reštartu:
bash sysctl --systemsysctl --system– načíta všetky nastavenia z priečinkovsysctl.d. Vo výpise uvidíte riadokvm.swappiness = 10.
Overenie#
swapon --showukazuje/swapfileso správnou veľkosťou.free -hmá na riadkuSwapnenulovú hodnotutotal.- Po reštarte VPS je swap aktívny aj bez ručného
swapon.
Odobratie swapu#
- Vypnite swap:
swapoff /swapfile. Ak je swap veľmi využitý, potrvá to dlhšie, pretože sa dáta vracajú do RAM. Keď na to RAM nestačí, príkaz skončí chybou a nič sa nestane. - Zmažte riadok
/swapfile none swap sw 0 0zo súboru/etc/fstab(nano /etc/fstab). - Zmažte súbor:
rm /swapfile.
Keď niečo nefunguje#
fallocate: fallocate failed: No space left on device#
Na disku nie je dosť miesta. Zistite voľné miesto príkazom df -h / a zvoľte menší swap, alebo rozšírte disk.
swapon: /swapfile: insecure permissions 0644, 0600 suggested.#
Súbor má príliš otvorené práva. Swap sa síce zapne, ale súbor môže čítať ktokoľvek na VPS. Spustite chmod 600 /swapfile.
swapon: /swapfile: swapon failed: Device or resource busy#
Swap je už zapnutý. Skontrolujte to príkazom swapon --show.
VPS je aj so swapom pomalý a swap je stále plný#
Aplikácie trvalo potrebujú viac pamäte, než VPS má. Zistite, čo pamäť zaberá (htop, triedenie podľa stĺpca MEM%), a buď aplikácii nastavte menšiu pamäť, alebo navýšte RAM v záložke Zmena balíka.
Zhrnutie
- Swap chráni pred pádom pri krátkom nedostatku RAM, náhradou RAM však nie je.
- Vytvorenie:
fallocate,chmod 600,mkswap,swapon. - Natrvalo: riadok
/swapfile none swap sw 0 0v/etc/fstaba kontrolafindmnt --verify. - Na serveri nastavte
vm.swappiness=10v/etc/.sysctl. d/ 99-swappiness. conf - Plný swap a pomalý VPS znamenajú, že potrebujete viac RAM.