Jak přidat odkládací prostor v Ubuntu 18.04

author
9 minutes, 38 seconds Read

Předchozí verzi tohoto návodu napsal Justin Ellingwood

Úvod

Jedním z nejjednodušších způsobů, jak se bránit chybám v aplikacích mimo paměť, je přidat na server odkládací prostor. V tomto návodu se budeme zabývat tím, jak přidat odkládací soubor na server Ubuntu 18.04.

Upozornění: Ačkoli se swap obecně doporučuje pro systémy využívající tradiční rotující pevné disky, použití swapu u SSD disků může časem způsobit problémy s degradací hardwaru. Z tohoto důvodu nedoporučujeme povolovat swap na serveru DigitalOcean ani u žádného jiného poskytovatele, který využívá úložiště SSD. Může to mít vliv na spolehlivost základního hardwaru pro vás a vaše sousedy. Tento návod slouží jako reference pro uživatele, kteří mohou mít systémy s rotujícími disky jinde.

Pokud potřebujete zvýšit výkon svého serveru na platformě DigitalOcean, doporučujeme provést upgrade svého Dropletu. To povede k lepším výsledkům obecně a sníží se pravděpodobnost, že přispějete k hardwarovým problémům, které mohou ovlivnit vaši službu.

Co je Swap?

Swap je oblast na pevném disku, která byla určena jako místo, kam může operační systém dočasně ukládat data, která již nemůže uchovávat v paměti RAM. V podstatě vám dává možnost zvýšit množství informací, které může server uchovávat ve své pracovní „paměti“, s určitými výhradami. Odkládací prostor na pevném disku se bude používat hlavně v případě, že v paměti RAM již není dostatek místa pro uložení používaných aplikačních dat.

Informace zapisované na disk budou výrazně pomalejší než informace uchovávané v paměti RAM, ale operační systém bude raději udržovat běžící aplikační data v paměti a pro starší data použije odkládací prostor. Celkově lze říci, že mít odkládací prostor jako záložní řešení pro případ vyčerpání operační paměti systému může být dobrou pojistkou proti výjimkám z nedostatku paměti v systémech, které nemají k dispozici úložiště SSD.

Krok 1 – Kontrola systému na informace o odkládacím prostoru

Předtím, než začneme, můžeme zkontrolovat, zda systém již má k dispozici odkládací prostor. Je možné mít více odkládacích souborů nebo odkládacích oddílů, ale obecně by měl stačit jeden.

Zda má systém nakonfigurovaný odkládací prostor, můžeme zjistit zadáním příkazu:

  • sudo swapon --show

Pokud se nám nevrátí žádný výstup, znamená to, že systém v současné době nemá odkládací prostor k dispozici.

Pomocí nástroje free můžete ověřit, zda není aktivní odkládací prostor:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 222M 680K 678M 721MSwap: 0B 0B 0B

Jak vidíte v řádku Swap ve výstupu, není v systému aktivní žádný odkládací prostor.

Krok 2 – Kontrola dostupného místa na oddílu pevného disku

Před vytvořením odkládacího souboru zkontrolujeme aktuální využití disku, zda máme dostatek místa. To provedeme zadáním:

  • df -h
Output
Filesystem Size Used Avail Use% Mounted onudev 481M 0 481M 0% /devtmpfs 99M 656K 98M 1% /run/dev/vda1 25G 1.4G 23G 6% /tmpfs 493M 0 493M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 493M 0 493M 0% /sys/fs/cgroup/dev/vda15 105M 3.4M 102M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/1000

Zařízení s / ve sloupci Mounted on je v tomto případě náš disk. V tomto příkladu máme k dispozici dostatek místa (využito je pouze 1,4G). Vaše využití bude pravděpodobně jiné.

Přestože existuje mnoho názorů na vhodnou velikost odkládacího prostoru, ve skutečnosti záleží na vašich osobních preferencích a požadavcích vaší aplikace. Obecně je dobrým výchozím bodem velikost rovnající se nebo dvojnásobná velikosti paměti RAM ve vašem systému. Dalším dobrým pravidlem je, že cokoli nad 4G odkládacího prostoru je pravděpodobně zbytečné, pokud jej používáte pouze jako záložní paměť RAM.

Krok 3 – Vytvoření odkládacího souboru

Teď, když známe dostupné místo na pevném disku, můžeme vytvořit odkládací soubor v našem souborovém systému. V našem kořenovém adresáři (/) přidělíme soubor o požadované velikosti swapu s názvem swapfile.

Nejlepší způsob vytvoření swapovacího souboru je pomocí programu fallocate. Tento příkaz okamžitě vytvoří soubor o zadané velikosti.

Protože server v našem příkladu má 1G paměti RAM, vytvoříme v tomto návodu soubor o velikosti 1G. Upravte jej tak, aby vyhovoval potřebám vašeho vlastního serveru:

  • sudo fallocate -l 1G /swapfile

Zda bylo vyhrazeno správné množství místa, můžeme ověřit zadáním:

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Náš soubor byl vytvořen se správným množstvím vyhrazeného místa.

Krok 4 – Povolení odkládacího souboru

Teď, když máme k dispozici soubor správné velikosti, musíme jej skutečně přeměnit na odkládací prostor.

Nejprve musíme uzamknout práva souboru, aby jeho obsah mohli číst pouze uživatelé s právy roota. Tím zabráníme tomu, aby k souboru měli přístup běžní uživatelé, což by mělo značné bezpečnostní důsledky.

Zpřístupníme soubor pouze uživateli root zadáním příkazu:

  • sudo chmod 600 /swapfile

Změnu oprávnění ověříme zadáním příkazu:

  • ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Jak vidíte, příznaky čtení a zápisu má povoleny pouze uživatel root.

Nyní můžeme soubor označit jako odkládací prostor zadáním:

  • sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Po označení souboru můžeme odkládací soubor povolit, čímž umožníme našemu systému začít jej využívat:

  • sudo swapon /swapfile

Ověřte, že je odkládací prostor k dispozici, zadáním:

  • sudo swapon --show
Output
NAME TYPE SIZE USED PRIO/swapfile file 1024M 0B -2

Můžeme znovu zkontrolovat výstup nástroje free, abychom potvrdili naše zjištění:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 220M 680K 680M 722MSwap: 1.0G 0B 1.0G

Náš swap byl úspěšně nastaven a náš operační systém jej začne podle potřeby používat.

Krok 5 – Vytvoření trvalého swapovacího souboru

Naše nedávné změny umožnily použití swapovacího souboru pro aktuální relaci. Pokud však restartujeme počítač, server automaticky nezachová nastavení swapu. To můžeme změnit přidáním odkládacího souboru do našeho souboru /etc/fstab.

Zálohujte soubor /etc/fstab pro případ, že by se něco pokazilo:

  • sudo cp /etc/fstab /etc/fstab.bak

Přidejte informace o odkládacím souboru na konec souboru /etc/fstab zadáním:

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Příště si projdeme některá nastavení, která můžeme aktualizovat a vyladit tak náš odkládací prostor.

Krok 6 – Vyladění nastavení odkládacího prostoru

Existuje několik možností, které můžete nakonfigurovat a které budou mít vliv na výkon vašeho systému při práci s odkládacím prostorem.

Úprava vlastnosti Swappiness

Parametr swappiness nastavuje, jak často váš systém vyměňuje data z paměti RAM do odkládacího prostoru. Jedná se o hodnotu mezi 0 a 100, která představuje procento.

Při hodnotách blízkých nule jádro nebude data na disk vyměňovat, pokud to nebude nezbytně nutné. Pamatujte, že interakce se souborem swap jsou „drahé“ v tom smyslu, že trvají mnohem déle než interakce s pamětí RAM a mohou způsobit výrazné snížení výkonu. Pokud systému řeknete, aby se na swap příliš nespoléhal, bude váš systém obecně rychlejší.

Hodnoty blížící se 100 se budou snažit umístit více dat do swapu ve snaze udržet více volného místa v paměti RAM. V závislosti na paměťovém profilu aplikací nebo na tom, k čemu server používáte, to může být v některých případech lepší.

Aktuální hodnotu swapování můžeme zjistit zadáním:

  • cat /proc/sys/vm/swappiness
Output
60

Pro desktop není nastavení swapování 60 špatná hodnota. U serveru ji možná budete chtít posunout blíže k 0.

Příkazem sysctl můžeme nastavit swappiness na jinou hodnotu.

Chceme-li například nastavit swappiness na 10, můžeme zadat:

  • sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Toto nastavení přetrvá až do příštího restartu. Tuto hodnotu můžeme nastavit automaticky při restartu přidáním řádku do našeho souboru /etc/sysctl.conf:

  • sudo nano /etc/sysctl.conf

Na konec můžete přidat:

/etc/sysctl.conf
vm.swappiness=10

Po dokončení soubor uložte a zavřete.

Nastavení tlaku mezipaměti

Další související hodnotou, kterou budete chtít upravit, je vfs_cache_pressure. Toto nastavení konfiguruje, nakolik se systém rozhodne upřednostnit informace o inodech a dentry před ostatními daty v mezipaměti.

V podstatě se jedná o přístupové údaje o souborovém systému. Jejich vyhledávání je obecně velmi nákladné a jsou velmi často vyžadovány, takže je pro systém výborné je ukládat do mezipaměti. Aktuální hodnotu zjistíte opětovným dotazem na souborový systém proc:

  • cat /proc/sys/vm/vfs_cache_pressure
Output
100

Při současném nastavení náš systém odstraňuje informace o inodech z mezipaměti příliš rychle. Můžeme ji nastavit na konzervativnější hodnotu, například 50, zadáním:

  • sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Opět platí pouze pro naši aktuální relaci. Můžeme to změnit přidáním do našeho konfiguračního souboru, stejně jako jsme to udělali s nastavením swappiness:

  • sudo nano /etc/sysctl.conf

Na konec přidejte řádek, který určuje vaši novou hodnotu:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Po dokončení soubor uložte a zavřete.

Závěr

Postupováním podle tohoto návodu získáte určitý prostor v případech, které by jinak vedly k výjimkám z nedostatku paměti. Prostor pro odkládání paměti může být neuvěřitelně užitečný při předcházení některým z těchto běžných problémů.

Pokud se setkáváte s chybami OOM (out of memory) nebo pokud zjistíte, že váš systém není schopen používat aplikace, které potřebujete, nejlepším řešením je optimalizace konfigurace aplikací nebo upgrade serveru.

Similar Posts

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.