Kromě RAM existuje tzv. Swap, což je virtuální paměť, kam lze zaměnit obsah RAM (stránky) v případě, že již není k dispozici dostatek RAM. Tato swap je umístěna na disku a protože čtení a zápis disku je pomalejší než čtení z RAM, přístup na stránky paměti tam bude mít za následek zpoždění. Kromě vytváření souborového systému musí správci Linuxu věnovat velkou pozornost využití a potřebám swapu. Příspěvek popisuje 3 způsoby, jak přidat odkládací prostor do systémů Linux:
1. přidání odkládacího oddílu
2. přidání swapového objemu
3. přidání odkládacího souboru
1. Přidání odkládacího oddílu
1. Spusťte fdisk nebo rozdělené nástroj pro identifikaci disků s dostatečným nevyužitým (nerozděleným) diskovým prostorem. Vytvořte nový oddíl typu swap (82) . Například:
# fdisk /dev/sdb ..... Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): +1G
Ujistěte se, že jste upravili typ oddílu na 82 (Linux swap / Solaris) a na konec uložte tabulku oddílů.
Command (m for help): t Selected partition 1 Hex code (type L to list codes): 82 Changed system type of partition 1 to 82 (Linux swap / Solaris) Command (m for help): w The partition table has been altered!
2. Spusťte příkaz mkswap proti zařízení/oddílu vytvořenému dříve pomocí fdisk/parted. Volitelně -L lze použít k nastavení LABEL na odkládacím oddílu.
# mkswap -L swap1 /dev/sdb1 Setting up swapspace version 1, size = 1060252 KiB LABEL=swap1, UUID=f0a884c9-59b3-47d2-9f06-5884f6a33806
3. Upravte soubor /etc/fstab pro připojení nového odkládacího zařízení při spouštění.
vi /etc/fstab /dev/sdb1 swap swap defaults 0 0
4. Spusťte příkaz swapon pro povolení všech odkládacích zařízení uvedených v souboru /etc/fstab a ověřte přidaný swap pomocí „swap -s“.
# swapon -a # swapon -s Filename Type Size Used Priority /dev/sdb1 partition 1060248 0 -1
1. Přidání odkládacího objemu
1. Můžeme také přidat svazek LVM jako odkládací prostor. K tomu potřebujeme vytvořit svazek v jakékoli z existujících skupin svazků.
# vgs VG #PV #LV #SN Attr VSize VFree vg_geeklab 1 1 0 wz--n- 19.51g 1.94g
# lvcreate -L 1G -n lv_swap vg_geeklab Logical volume "lv_swap" created
# ll /dev/mapper/vg_geeklab-lv_swap lrwxrwxrwx. 1 root root 7 Oct 22 19:36 /dev/mapper/vg_geeklab-lv_swap -> ../dm-1
2. Spusťte příkaz mkswap proti svazku a volitelně jej označte pomocí volby -L.
mkswap -L swap /dev/mapper/vg_geeklab-lv_swap mkswap: /dev/mapper/vg_geeklab-lv_swap: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 1048572 KiB LABEL=swap, UUID=6d228d34-b67e-4e38-82d4-f068c7bc097e
4. Chcete-li, aby položka swap zůstala zachována i po restartu, zadejte ji do souboru /etc/fstab.
# vi /etc/fstab /dev/mapper/vg_geeklab-lv_swap swap swap defaults 0 0
5. Nakonec povolte swap pomocí příkazu swapon, který zase načte položky swapu v souboru /etc/fstab.
# swapon -a # swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1048568 0 -1
3. Přidávání odkládacího souboru
1. V případě, že na disku nezbývá volné místo pro vytvoření nového oddílu, můžeme soubor použít také jako swap. Chcete-li to provést, použijte příkaz dd k vytvoření souboru požadované velikosti.
# dd if=/dev/zero of=/root/swapfile01 bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 6.73334 s, 159 MB/s
2. Vytvořil jsem odkládací soubor v adresáři /root, aby byl bezpečnější, protože běžný uživatel do tohoto adresáře nemůže vstoupit. Chcete-li být bezpečnější, použijte pro soubor příslušná oprávnění.
# chmod 600 /root/swapfile01
3. Spusťte příkaz mkswap pro převod souboru na odkládací soubor.
# mkswap -L swap01 /root/swapfile01 Setting up swapspace version 1, size = 1048572 KiB LABEL=swap01, UUID=ba5f7163-43f6-4001-84c1-2fca3935301f
4. Upravte soubor /etc/fstab a přidejte nový odkládací soubor.
# vi /etc/fstab /root/swapfile01 swap swap defaults 0 0
5. Spuštěním příkazu swapon povolte všechna odkládací zařízení uvedená v souboru /etc/fstab.
# swapon -a # swapon -s Filename Type Size Used Priority /swap/swapfile01 file 1048568 0 -1
Odebírání swapu
V případě, že chcete odstranit přidaný swap, můžete to udělat příkazem swapoff. Ujistěte se, že jste po zakázání swapu odstranili příslušnou položku swapu ze souboru /etc/fstab.
# swapoff -a ### this will remove all swap(s) mentioned in .etc.fstab # swapoff /dev/sdb1 ### to remove individual swap
Jak zkontrolovat využití swapu
Chcete-li zkontrolovat využití swapu, můžete použít kterýkoli z níže uvedených nástrojů:
1. zdarma
# free total used free shared buffers cached Mem: 1004608 934036 70572 0 30124 769640 -/+ buffers/cache: 134272 870336 Swap: 1060248 0 1060248
2. /proc/meminfo
# grep Swap /proc/meminfo SwapCached: 0 kB SwapTotal: 1060248 kB SwapFree: 1060248 kB
3. nahoře
# top ....... Mem: 1004608k total, 934780k used, 69828k free, 30124k buffers Swap: 1060248k total, 0k used, 1060248k free, 770156k cached .......
4. vmstat
# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 69828 30124 770156 0 0 40 403 23 22 0 1 99 0 0