Přidání velikosti SWAP - Ubuntu/Debian
Jeden z nejjednoduších způsobů, jak zvýšit ochranu proti nedostatku paměti vaší aplikace je přidání Swap paměti. Swap je oblast na pevném disku určena pro dočasné ukládání dat operačního systému, v momentě kdy se potřebná data nevejdou do paměti RAM.
Nastavením paměti Swap se zvýší počet informací které si váš server může uchovat. Místo na disku bude použito hlavně když dochází volné místo v RAM.
Informace zapsané na disk, budou pomalejší než informace uchované v RAM ale operační systém bude používat Swap pro starší data.
Není vhodné používat Swap při používání SSD, může způsobit problémy s degradací hardwaru.
Kontrola Swap
Můžeme mít více Swap souborů nebo Swap oddíl, obecně by měl stačit pouze jeden.
Podíváme se zda systém má nastavenou Swap pomocí:
sudo swapon -s
Další cesta jak se podivat zda systém má nastavenou Swap je pomocí nástroje free který nám ukáže využití systémové paměti.
free -m
Kontrola dostupného místa na oddílu pevného disku
Klasická cesta jak přidělovat místo pro swap je použít oddělený oddíl. Nicméně, upravování oddílové struktury není vždy možné.
Můžeme jednoduše vytvořit swapovací soubor už na existujícím oddílu.
Než se pustíme do vytvaření swapovacího souboru zkontrolujme si dostupné místo na disku.
df -h
Začáteční hodnota pro swap je stejná či dvojnásobná hodnotě paměti RAM vašeho systému.
Vytvoření swapovacího souboru
Když už víme dostupný prostory na disku, můžeme přejit na vytváření swapovacího souboru.
Vytvoříme soubor a pojmenujeme ho swapfile v našem kořenovém (/) adresáři. Soubor musí mít přiděleno množství prostoru které chceme pro náš swapovací soubor, v našem případě to bude 4GB.
Existují 2 způsoby jak na to:
Pomalá cesta
Klasicky, vytvoříme soubor s přideleným prostorem použitím přikazu dd.
Nastavíme velikost souboru pomocí kombinace parametrů bs pro velikost bloku a count pro počet bloků.
V našem případě pro 4GB soubor, můžeme nastavit velikost bloku na 1GB a počet na 4:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
Pořádně si zkontrolujte příkaz než potvrdíte klávesou Enter pokud nastavíte výstupný soubor na špatnou lokaci.
Zkontrolujeme si že 4GB byly přiděleny pomocí:
ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G /swapfile
Výstup příkazu chvíli bude trvat. Musí zapsat 4GB nul na disk.
Případně pokud chcete vědět jak soubor vytvořit rychleji, vytvořený soubor odstraňte
sudo rm /swapfile
Rychlejší cesta
Rychlejší cesta jak získat stejný soubor je pomocí programu fallocate.
Můžeme vytvořit 4GB soubor pomocí:
sudo fallocate -l 4G /swapfile
Můžeme si ověřit velikost pomocí
ls -lh /swapfile
Povolení swapovacího souboru
Než se dostaneme k povolení, prvně budeme muset upravit oprávnění. Byl by to velký risk, kdyby jsme nechali uživatele číst a psát do souboru swapfile. Proto oprávnění upravíme aby z něho mohl číst pouze root.
sudo chmod 600 /swapfile
Nastavíme swapovací prostor pomocí:
sudo mkswap /swapfile
Swapovací soubor povolíme pomocí:
sudo swapon /swapfile
Můžeme si ověřit že nám Swap běží
sudo swapon -s
Nově se nám ve výstupu zobrazil vytvořený soubor /swapfile
Trvalé povolení swapovací souboru
Nyní nám swapovací soubor běží, ale když server restartujeme, server swapovací soubor automaticky nepovolí.
Proto upravíme soubor fstab.
Upravíme soubor pomocí pravomocí uživatele root v textovém editoru
sudo nano /etc/fstab
Na konec souboru přidáme řádek, který řekne systému aby automaticky povolil soubor, který jsme vytvořili.
/etc/fstab
/swapfile none swap sw 0 0
Soubor uložíme a zavřeme.
Následně když restartujeme zařízení, swapovací soubor bude běžet.
Upravení nastavení swap
Je tu pár možností, které můžeme nastavit které budou mít dopad na váš výkon systému při swapování.
Parametr swappiness nastavuje kdy má systém převést data z RAM do swap.
Hodnota tohoto parametru je v procentech mezi 0 a 100.
S hodnotama bližší k 0, kernel nebude převádět data do swap dokud to nebude zapotřebí.
S hodnotama bližší k 100, kernel bude upředňostnovat data ukládat do swap než do RAM.
Aktuální hodnotu parametru swappiness můžeme zjistit pomocí:
cat /proc/sys/vm/swappiness
Pro VPS bude lepší mít hodnotu swappiness blíž k 0.
Pro rychlou změnu, můžeme použít:
sudo sysctl vm.swappiness=10
Tato změna se zahodí při restartu, pro zachování změny i po restartu můžeme použít:
sudo nano /etc/sysctl.conf
Na konec souboru přidáme řádek.
/etc/sysctl.conf
vm.swappiness=10
Soubor uložíme a zavřeme.
Hotovo.