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é:
-
Vypněte stávající odkládací prostor.
-
Vytvořte nový odkládací oddíl požadované velikosti.
-
Znovu si přečtěte tabulku oddílů.
-
Nakonfigurujte oddíl jako odkládací prostor.
-
Přidejte nový oddíl/etc/fstab.
-
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:
-
Vypněte všechny swapy.
-
Zvětšete velikost logického svazku určeného pro swap.
-
Nakonfigurujte svazek se změněnou velikostí jako odkládací prostor.
-
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.