Swap je místo na disku, kam systém odloží data z RAM, když paměť dochází. Přidáte ho za pár minut a VPS díky němu nespadne při krátké špičce. Ukážeme také, kdy swap nepomůže a je potřeba víc RAM.
Co budete potřebovat
- VPS u StormHostu s Ubuntu 24.04 nebo Debianem 13
- Připojení přes SSH jako root (návod)
- Volné místo na disku aspoň o velikosti swapu (ověříte příkazem
df -h /) - Asi 10 minut
Co je swap a kdy pomůže#
Když dojde RAM a swap není, jádro Linuxu spustí OOM killer („out of memory“) a ukončí proces, který zabírá nejvíc paměti. Obvykle je to právě vaše databáze, herní server nebo aplikace. V logu pak najdete Out of memory: Killed process.
Se swapem systém nejdřív odloží málo používaná data na disk a proces běží dál.
| Situace | Pomůže swap? |
|---|---|
| Krátká špička (aktualizace, kompilace, záloha) | Ano, VPS ji přečká bez pádu. |
| Data, která se načtou jednou a pak leží (část paměti databáze, nepoužité služby) | Ano, uvolní RAM pro to důležité. |
| Aplikace trvale potřebuje víc RAM, než má VPS | Ne. Disk je mnohonásobně pomalejší než RAM, aplikace se zpomalí. Řešením je upgrade RAM. |
| Herní server (Minecraft, Rust) s plnou pamětí | Ne. Server začne sekat. Nastavte mu menší paměť, nebo navyšte RAM. |
Zjištění stavu#
swapon --show
free -hswapon --show– vypíše aktivní swap. Když nevypíše nic, VPS swap nemá (to je u nové VPS běžné).free -h– ukáže využití RAM a swapu v čitelných jednotkách (-h= human readable).
Ve výstupu free -h sledujte sloupec available na řádku Mem: kolik paměti mají aplikace skutečně k dispozici. Řádek Swap ukazuje velikost a využití swapu.
Jak velký swap zvolit#
| RAM VPS | Doporučený swap | Proč |
|---|---|---|
| 2 GB | 2 GB | Malá VPS dojde k limitu nejsnáz, rezerva se hodí. |
| 4–8 GB | 2–4 GB | Stačí na pokrytí špiček. |
| 16 GB a víc | 2–4 GB | Větší swap nemá smysl. Když ho VPS opravdu využívá, potřebuje víc RAM. |
Swap zabírá místo na disku, proto ho nedělejte zbytečně velký.
Vytvoření swapového souboru#
Platí pro Ubuntu 24.04 i Debian 13. Jako příklad vytvoříme swap o velikosti 2 GB v souboru /swapfile.
Vytvořte soubor potřebné velikosti:
bash fallocate -l 2G /swapfilefallocate– rychle vyhradí místo na disku pro soubor.-l 2G– velikost souboru (2G= 2 GB, pro 4 GB napište4G)./swapfile– cesta k souboru.
Nastavte práva, aby soubor mohl číst jen root. Ve swapu můžou být kusy paměti s hesly:
bash chmod 600 /swapfile600– čtení a zápis jen pro vlastníka (root), ostatní nic.
Připravte soubor jako swap:
bash mkswap /swapfilemkswap– zapíše do souboru hlavičku swapu. VypíšeSetting up swapspace version 1, size = 2 GiB.
Zapněte swap:
bash swapon /swapfileswapon– začne swap používat hned, ale jen do restartu.
Zkontrolujte výsledek příkazem
swapon --show. Uvidíte řádek/swapfile file 2G.
Když swapon hlásí „holes“
Pokud swapon vypíše skipping - it appears to have holes, souborový systém nepřijal soubor vytvořený přes fallocate. Smažte ho (rm /swapfile) a vytvořte ho pomaleji, ale spolehlivě příkazem dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress (count=2048 = 2048 × 1 MB = 2 GB). Pak pokračujte krokem 2.
Trvalé zapnutí přes /etc/fstab#
Aby se swap zapnul i po restartu, přidejte ho do souboru /etc/fstab.
Zazálohujte soubor:
bash cp /etc/fstab /etc/fstab.bakPřidejte na konec souboru řádek se swapem:
bash echo '/swapfile none swap sw 0 0' >> /etc/fstabecho '…'– vypíše text v uvozovkách.>>– připojí text na konec souboru. Pozor, jediné>by celý soubor přepsalo.
Význam jednotlivých sloupců řádku:
Sloupec Hodnota Význam 1. zařízení /swapfileSoubor se swapem. 2. přípojný bod noneSwap se nikam nepřipojuje. 3. typ swapJde o swap. 4. volby swVýchozí volby pro swap. 5. dump 0Nezálohovat starým nástrojem dump.6. kontrola 0Nekontrolovat při startu (u swapu se nekontroluje nikdy). Ověřte, že je fstab v pořádku:
bash findmnt --verifyfindmnt --verify– zkontroluje syntaxi/etc/fstab. Výsledek musí býtSuccess, no errors or warnings detected, nebo souhrn s0 parse errors, 0 errors. Samotná varování (warnings) k jiným řádkům start VPS neohrozí.
Chybný /etc/fstab může zastavit start VPS
Kdyby VPS po restartu nenaběhla, otevřete konzoli v prohlížeči a vraťte zálohu příkazem cp /etc/fstab.bak /etc/fstab.
Swappiness: jak ochotně systém swapuje#
Hodnota vm.swappiness (0–200) říká, jak brzy začne jádro odkládat data do swapu. Výchozí hodnota je 60. Na serveru je lepší nižší hodnota, aby se swap používal hlavně jako pojistka.
| Nastavení | Co dělá | Doporučená hodnota | Kdy změnit |
|---|---|---|---|
vm.swappiness | Poměr mezi uvolňováním mezipaměti souborů a odkládáním paměti procesů do swapu. Nižší číslo = méně swapování. | 10 | Na 60 (výchozí) se vraťte, pokud je VPS při plné paměti pomalejší než předtím. Hodnota 0 neznamená „swap vypnutý“, jen ho systém použije až v nouzi. |
Zjistěte aktuální hodnotu:
bash cat /proc/sys/vm/swappinessUložte novou hodnotu do vlastního souboru (Debian 13 už soubor
/etc/sysctl.confnečte, složka/etc/sysctl.d/funguje na obou systémech):bash echo 'vm.swappiness=10' > /etc/sysctl.d/99-swappiness.confNačtěte nastavení bez restartu:
bash sysctl --systemsysctl --system– načte všechna nastavení ze složeksysctl.d. Ve výpisu uvidíte řádekvm.swappiness = 10.
Ověření#
swapon --showukazuje/swapfilese správnou velikostí.free -hmá na řádkuSwapnenulovou hodnotutotal.- Po restartu VPS je swap aktivní i bez ručního
swapon.
Odebrání swapu#
- Vypněte swap:
swapoff /swapfile. Pokud je swap hodně využitý, potrvá to déle, protože se data vracejí do RAM. Když na to RAM nestačí, příkaz skončí chybou a nic se nestane. - Smažte řádek
/swapfile none swap sw 0 0ze souboru/etc/fstab(nano /etc/fstab). - Smažte soubor:
rm /swapfile.
Když něco nefunguje#
fallocate: fallocate failed: No space left on device#
Na disku není dost místa. Zjistěte volné místo příkazem df -h / a zvolte menší swap, nebo rozšiřte disk.
swapon: /swapfile: insecure permissions 0644, 0600 suggested.#
Soubor má příliš otevřená práva. Swap se sice zapne, ale soubor může číst kdokoli na VPS. Spusťte chmod 600 /swapfile.
swapon: /swapfile: swapon failed: Device or resource busy#
Swap je už zapnutý. Zkontrolujte to příkazem swapon --show.
VPS je i se swapem pomalá a swap je pořád plný#
Aplikace trvale potřebují víc paměti, než VPS má. Zjistěte, co paměť zabírá (htop, třídění podle sloupce MEM%), a buď aplikaci nastavte menší paměť, nebo navyšte RAM v záložce Změna balíčku.
Shrnutí
- Swap chrání před pádem při krátkém nedostatku RAM, náhradou RAM ale není.
- Vytvoření:
fallocate,chmod 600,mkswap,swapon. - Natrvalo: řádek
/swapfile none swap sw 0 0v/etc/fstaba kontrolafindmnt --verify. - Na serveru nastavte
vm.swappiness=10v/etc/.sysctl. d/ 99-swappiness. conf - Plný swap a pomalá VPS znamenají, že potřebujete víc RAM.