GNU/Linux >> Znalost Linux >  >> Linux

Úvod do odkládacího prostoru na systémech Linux

V typickém počítači existují dva základní typy paměti. První typ, paměť s náhodným přístupem (RAM), se používá k ukládání dat a programů, zatímco jsou aktivně využívány počítačem. Programy a data nemůže počítač používat, pokud nejsou uloženy v paměti RAM. RAM je volatilní paměť; to znamená, že při vypnutí počítače dojde ke ztrátě dat uložených v paměti RAM.

Pevné disky jsou magnetická média používaná pro dlouhodobé ukládání dat a programů. Magnetické médium je energeticky nezávislé; data uložená na disku zůstanou zachována i po odpojení napájení počítače. CPU (centrální procesorová jednotka) nemůže přímo přistupovat k programům a datům na pevném disku; musí být nejprve zkopírován do paměti RAM, a to je místo, kde může CPU přistupovat ke svým programovacím instrukcím a datům, se kterými má tyto instrukce pracovat. Během procesu spouštění počítač zkopíruje konkrétní programy operačního systému, jako je jádro a init nebo systemd, a data z pevného disku do paměti RAM, kde k nim přímo přistupuje procesor počítače, CPU.

Druhým typem paměti v moderních systémech Linux je odkládací prostor.

Vyměnit prostor

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Primární funkcí odkládacího prostoru je nahradit místo na disku RAM pamětí, když se skutečná RAM zaplní a je potřeba více místa.

Předpokládejme například, že máte počítačový systém s 8 GB paměti RAM. Pokud spustíte programy, které nezaplňují tuto RAM, je vše v pořádku a není potřeba žádná výměna. Předpokládejme však, že se tabulka, na které pracujete, zvětší, když přidáte další řádky, a to, plus vše ostatní, co běží, nyní zaplňuje veškerou RAM. Bez dostupného odkládacího prostoru byste museli přestat pracovat na tabulkovém procesoru, dokud neuvolníte část své omezené paměti RAM ukončením některých jiných programů.

Jádro používá program pro správu paměti, který detekuje bloky, neboli stránky, paměti, ve kterých obsah nebyl v poslední době použit. Program pro správu paměti odloží dostatek těchto relativně málo používaných stránek paměti do speciálního oddílu na pevném disku speciálně určeného pro „stránkování“ neboli odkládání. Tím se uvolní paměť RAM a uvolní se prostor pro vložení dalších dat do tabulky. Stránky paměti odložené na pevný disk jsou sledovány kódem správy paměti jádra a v případě potřeby je lze načíst zpět do paměti RAM.

Celkové množství paměti v počítači se systémem Linux je RAM plus odkládací prostor a označuje se jako virtuální paměť .

Typy Linux swap

Linux poskytuje dva typy odkládacího prostoru. Ve výchozím nastavení většina instalací Linuxu vytváří odkládací oddíl, ale je také možné použít jako odkládací soubor speciálně nakonfigurovaný soubor. Odkládací oddíl je přesně to, co napovídá jeho název – standardní diskový oddíl, který mkswap označuje jako odkládací prostor. příkaz.

Odkládací soubor lze použít, pokud na disku není volné místo pro vytvoření nového odkládacího oddílu nebo prostoru ve skupině svazků, kde lze vytvořit logický svazek pro odkládací prostor. Toto je pouze běžný soubor, který je vytvořen a předem přidělený na určitou velikost. Poté mkswap je spuštěn příkaz pro konfiguraci jako odkládací prostor. Nedoporučuji používat soubor pro odkládací prostor, pokud to není nezbytně nutné.

Mlácení

Thrashing může nastat, když se celková virtuální paměť, RAM i odkládací prostor, téměř zaplní. Systém tráví tolik času stránkováním bloků paměti mezi odkládacím prostorem a RAM a zpět, že na skutečnou práci zbývá jen málo času. Typické příznaky tohoto jsou zřejmé:Systém se zpomalí nebo zcela přestane reagovat a kontrolka aktivity pevného disku svítí téměř neustále.

Pokud se vám podaří vydat příkaz jako free který ukazuje zatížení CPU a využití paměti, uvidíte, že zatížení CPU je velmi vysoké, možná až 30 až 40krát větší než počet jader CPU v systému. Dalším příznakem je, že RAM i odkládací prostor jsou téměř úplně přiděleny.

Tyto příznaky může také ukázat pohled na data SAR (zpráva o aktivitě systému). Instaluji SAR na každý systém, na kterém pracuji, a používám ho pro forenzní analýzu po opravě.

Jaké je správné množství odkládacího prostoru?

Před mnoha lety bylo základním pravidlem pro množství odkládacího prostoru, který by měl být přidělen na pevném disku, dvojnásobek množství paměti RAM nainstalované v počítači (samozřejmě tehdy se RAM většiny počítačů měřila v KB nebo MB) . Pokud by tedy měl počítač 64 KB RAM, optimální velikost by byla odkládací oddíl o velikosti 128 KB. Toto pravidlo vzalo v úvahu fakta, že velikosti RAM byly v té době obvykle poměrně malé a že přidělení více než 2X RAM pro odkládací prostor nezlepšilo výkon. S více než dvojnásobnou pamětí RAM pro swap strávila většina systémů více času přehazováním než skutečným prováděním užitečné práce.

RAM se stala levnou komoditou a většina dnešních počítačů má množství paměti RAM, která se rozkládá na desítky gigabajtů. Většina mých novějších počítačů má alespoň 8 GB RAM, jeden má 32 GB a moje hlavní pracovní stanice má 64 GB. Moje starší počítače mají 4 až 8 GB RAM.

Při práci s počítači s velkým množstvím paměti RAM je omezující faktor výkonu pro odkládací prostor mnohem nižší než násobitel 2X. Online instalační příručka Fedory 28, kterou lze nalézt online na Instalační příručce Fedory, definuje současné myšlení o alokaci swapového prostoru. Níže jsem zahrnul diskuzi a tabulku doporučení z tohoto dokumentu.

Následující tabulka uvádí doporučenou velikost odkládacího oddílu v závislosti na množství paměti RAM ve vašem systému a na tom, zda chcete dostatek paměti pro přechod systému do režimu spánku. Doporučená velikost odkládacího oddílu se nastaví automaticky během instalace. Chcete-li však režim hibernace povolit, budete muset upravit odkládací prostor ve fázi vlastního rozdělení na oddíly.

Tabulka 1:Doporučený systémový odkládací prostor v dokumentaci Fedory

Velikost systémové paměti RAM

Doporučený odkládací prostor

Doporučená výměna za režim hibernace

méně než 2 GB

2krát větší množství paměti RAM

3krát větší množství paměti RAM

2 GB – 8 GB

Odpovídá velikosti paměti RAM

2krát větší množství paměti RAM

8 GB – 64 GB

0,5násobek množství paměti RAM

1,5násobek množství paměti RAM

více než 64 GB

závisí na pracovní zátěži

Hibernace se nedoporučuje

Na hranici mezi jednotlivými výše uvedenými rozsahy (například systém s 2 GB, 8 GB nebo 64 GB systémové paměti RAM) použijte uvážení s ohledem na zvolený odkládací prostor a podporu hibernace. Pokud to vaše systémové prostředky umožňují, zvýšení odkládacího prostoru může vést k lepšímu výkonu.

Většina správců Linuxu má samozřejmě své vlastní představy o vhodném množství odkládacího prostoru – stejně jako o všem ostatním. Tabulka 2 níže obsahuje moje doporučení založená na mých osobních zkušenostech v různých prostředích. Nemusí vám to vyhovovat, ale stejně jako v tabulce 1 vám mohou pomoci začít.

Tabulka 2:Doporučený systémový odkládací prostor podle autora

Množství paměti RAM

Doporučený odkládací prostor

≤ 2 GB

2X RAM

2 GB – 8 GB

=RAM

>8 GB

8 GB

Jednou z úvah v obou tabulkách je, že jak se zvětšuje množství paměti RAM, přidávání více odkládacího prostoru za určitým bodem jednoduše vede k rozbití ještě předtím, než se odkládací prostor vůbec zaplní. Pokud máte při dodržování těchto doporučení příliš málo virtuální paměti, měli byste přidat více RAM, pokud je to možné, spíše než více odkládacího prostoru. Stejně jako u všech doporučení, která ovlivňují výkon systému, použijte to, co nejlépe vyhovuje vašemu konkrétnímu prostředí. Experimentování a provádění změn na základě podmínek ve vašem prostředí Linuxu bude vyžadovat čas a úsilí.

Přidání více odkládacího prostoru do prostředí disku bez LVM

Kvůli měnícím se požadavkům na odkládací prostor na hostitelích s již nainstalovaným Linuxem může být nutné upravit velikost odkládacího prostoru definovaného pro systém. Tento postup lze použít pro jakýkoli obecný případ, kdy je třeba zvětšit množství odkládacího prostoru. Předpokládá, že je k dispozici dostatek volného místa na disku. Tento postup také předpokládá, že disky jsou rozděleny na „raw“ EXT4 a odkládací oddíly a nepoužívají správu logických svazků (LVM).

Základní kroky jsou jednoduché:

  1. Vypněte stávající odkládací prostor.

  2. Vytvořte nový odkládací oddíl požadované velikosti.

  3. Znovu si přečtěte tabulku oddílů.

  4. Nakonfigurujte oddíl jako odkládací prostor.

  5. Přidejte nový oddíl/etc/fstab.

  6. Zapněte swap.

Restart by neměl být nutný.

Z bezpečnostních důvodů byste se před vypnutím swapu měli alespoň ujistit, že nejsou spuštěny žádné aplikace a že se nepoužívá žádný odkládací prostor. free nebo top příkazy vám mohou sdělit, zda se používá odkládací prostor. Chcete-li být ještě bezpečnější, můžete se vrátit ke spuštění úrovně 1 nebo režimu pro jednoho uživatele.

Vypněte odkládací oddíl pomocí příkazu, který vypne veškerý odkládací prostor:

$ swapoff -a

Nyní zobrazte existující oddíly na pevném disku.

$ fdisk -l

Zobrazí se aktuální tabulky oddílů na každém disku. Identifikujte aktuální odkládací oddíl podle čísla.

Spusťte fdisk v interaktivním režimu pomocí příkazu:

$ fdisk /dev/<device name>

Například:

$ fdisk /dev/sda

V tomto okamžiku fdisk je interaktivní a funguje pouze na určeném disku.

Použijte fdisk p dílčí příkaz pro ověření, že je na disku dostatek volného místa pro vytvoření nového odkládacího oddílu. Místo na pevném disku je zobrazeno jako 512bajtové bloky a počáteční a koncová čísla cylindrů, takže možná budete muset provést nějaké výpočty, abyste určili dostupné místo mezi a na konci přidělených oddílů.

Použijte n dílčí příkaz k vytvoření nového odkládacího oddílu. fdisk se vás zeptá na startovací válec. Ve výchozím nastavení vybere nejnižší dostupný válec. Pokud to chcete změnit, zadejte číslo počátečního válce.

fdisk příkaz nyní umožňuje zadat velikost oddílů v několika formátech, včetně posledního čísla cylindru nebo velikosti v bajtech, kB nebo MB. Zadejte 4000M, což poskytne přibližně 4 GB místa na novém oddílu (například), a stiskněte Enter.

Použijte p dílčí příkaz pro ověření, že oddíl byl vytvořen tak, jak jste jej zadali. Všimněte si, že oddíl pravděpodobně nebude přesně takový, jaký jste zadali, pokud jste nepoužili koncové číslo cylindru. fdisk příkaz může alokovat místo na disku pouze v přírůstcích na celých válcích, takže váš oddíl může být o něco menší nebo větší, než jste zadali. Pokud oddíl není takový, jaký chcete, můžete jej smazat a vytvořit znovu.

Nyní je nutné určit, že nový oddíl má být odkládací oddíl. Dílčí příkaz t umožňuje určit typ oddílu. Zadejte tedy t , zadejte číslo oddílu, a když se zeptá na typ oddílu s hexadecimálním kódem, zadejte 82, což je typ odkládacího oddílu Linuxu, a stiskněte Enter.

Když jste spokojeni s oddílem, který jste vytvořili, použijte w dílčí příkaz pro zapsání nové tabulky oddílů na disk. fdisk program se ukončí a vrátí vás do příkazového řádku poté, co dokončí zápis revidované tabulky oddílů. Pravděpodobně obdržíte následující zprávu jako fdisk dokončí zápis nové tabulky oddílů:

The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

V tomto okamžiku použijete partprobe příkaz, který přinutí jádro znovu přečíst tabulku oddílů, takže není nutné provádět restart.

$ partprobe

Nyní použijte příkaz fdisk -l vypsat oddíly a nový odkládací oddíl by měl být mezi těmi, které jsou uvedeny. Ujistěte se, že nový typ oddílu je „Linux swap“.

Bude nutné upravit soubor /etc/fstab tak, aby ukazoval na nový odkládací oddíl. Stávající řádek může vypadat takto:

LABEL=SWAP-sdaX   swap        swap    defaults        0 0

kde X je číslo oddílu. Přidejte nový řádek, který vypadá podobně, v závislosti na umístění vašeho nového odkládacího oddílu:

/dev/sdaY         swap        swap    defaults        0 0

Ujistěte se, že používáte správné číslo oddílu. Nyní můžete provést poslední krok při vytváření odkládacího oddílu. Použijte mkswap příkaz k definování oddílu jako odkládacího oddílu.

$ mkswap /dev/sdaY

Posledním krokem je zapnout swap pomocí příkazu:

$ swapon -a

Váš nový odkládací oddíl je nyní online spolu s dříve existujícím odkládacím oddílem. Můžete použít free nebo top příkazy k ověření.

Přidání swapu do prostředí disku LVM

Pokud vaše nastavení disku používá LVM, bude změna odkládacího prostoru poměrně snadná. Opět to předpokládá, že je k dispozici místo ve skupině svazků, ve které se nachází aktuální odkládací svazek. Ve výchozím nastavení instalační procedury pro Fedora Linux v prostředí LVM vytvářejí odkládací oddíl jako logický svazek. Díky tomu je to snadné, protože můžete jednoduše zvětšit velikost swapového objemu.

Zde jsou kroky potřebné ke zvýšení množství odkládacího prostoru v prostředí LVM:

  1. Vypněte všechny swapy.

  2. Zvětšete velikost logického svazku určeného pro swap.

  3. Nakonfigurujte svazek se změněnou velikostí jako odkládací prostor.

  4. Zapněte swap.

Nejprve ověřte, že swap existuje a jedná se o logický svazek pomocí lvs (vypsat logický svazek).

# lvs
  LV     VG                Attr       LSize  Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home   fedora_studentvm1 -wi-ao----  2.00g                                                      
  pool00 fedora_studentvm1 twi-aotz--  2.00g               8.17   2.93                            
  root   fedora_studentvm1 Vwi-aotz--  2.00g pool00        8.17                                  
  swap   fedora_studentvm1 -wi-ao----  8.00g                                                      
  tmp    fedora_studentvm1 -wi-ao----  5.00g                                                      
  usr    fedora_studentvm1 -wi-ao---- 15.00g                                                      
  var    fedora_studentvm1 -wi-ao---- 10.00g

Můžete vidět, že aktuální velikost swapu je 8 GB. V tomto případě chceme k tomuto odkládacímu objemu přidat 2 GB. Nejprve zastavte stávající swap. Možná budete muset ukončit spuštěné programy, pokud se používá odkládací prostor.

$ swapoff -a

Nyní zvětšete velikost logického svazku.

# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap
  Size of logical volume fedora_studentvm1/swap changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents).
  Logical volume fedora_studentvm1/swap successfully resized.

Spusťte mkswap příkaz, aby se celý tento 10GB oddíl stal odkládacím prostorem.

# mkswap /dev/mapper/fedora_studentvm1-swap
mkswap: /dev/mapper/fedora_studentvm1-swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 10 GiB (10737414144 bytes)
no label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a

Znovu zapněte swap.

# swapon -a

Nyní ověřte přítomnost nového odkládacího prostoru pomocí příkazu list block devices. Opět není vyžadován restart.

# lsblk 
NAME                                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                    8:0    0   60G  0 disk
|-sda1                                 8:1    0    1G  0 part /boot
`-sda2                                 8:2    0   59G  0 part
  |-fedora_studentvm1-pool00_tmeta   253:0    0    4M  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-pool00_tdata   253:1    0    2G  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-swap           253:4    0   10G  0 lvm  [SWAP]
  |-fedora_studentvm1-usr            253:5    0   15G  0 lvm  /usr
  |-fedora_studentvm1-home           253:7    0    2G  0 lvm  /home
  |-fedora_studentvm1-var            253:8    0   10G  0 lvm  /var
  `-fedora_studentvm1-tmp            253:9    0    5G  0 lvm  /tmp
sr0

Můžete také použít swapon -s příkaz nebo top , free , nebo některý z několika dalších příkazů k ověření.

# free
              total        used        free      shared  buff/cache   available
Mem:        4038808      382404     2754072        4152      902332     3404184
Swap:      10485756           0    10485756

Všimněte si, že různé příkazy zobrazují nebo vyžadují jako vstup speciální soubor zařízení v různých formách. V adresáři /dev existuje několik způsobů, jak přistupovat ke konkrétním zařízením. Můj článek Správa zařízení v Linuxu obsahuje další informace o adresáři /dev a jeho obsahu.

Tento článek byl původně publikován v září 2018 a editor ho aktualizoval o další informace.


Linux
  1. Linux – Jak používat swapovací prostor pouze v případě nouze?

  2. Vytvořte odkládací soubor Linuxu

  3. Průvodce pro začátečníky ke správě swapového prostoru v Linuxu

  1. Jaká je správná velikost odkládacího prostoru pro moderní systém Linux?

  2. Jak zvětšit odkládací prostor v Linuxu

  3. 3 způsoby, jak zvýšit swapovací prostor v Linuxu

  1. Jak vytvořit nebo zvětšit swapový prostor v Linuxu

  2. 13 kurzů zabezpečení Linuxu

  3. Potřebuji swapovací prostor, když mám více než dostatečné množství RAM?