Virtuálna pamäť je jednou z tých vecí, ktoré sú základom moderných operačných systémov, ale zvyčajne o tom skutočne nepremýšľate, pokiaľ nemáte problém. Linuxové distribúcie vás počas inštalácie žiadajú, aby ste si nastavili virtuálny pamäťový priestor (swapové oddiely), ale väčšina začiatočníkov si neuvedomuje, aké užitočné to je.
Tu je všetko, čo potrebujete vedieť o virtuálnej pamäti v systéme Linux.
Čo je virtuálna pamäť?
Virtuálna pamäť je spôsob reprezentácie vašej pamäte, ktorá je abstrahovaná od fyzickej pamäte vo vašom počítači. Využíva vašu RAM aj úložný priestor, či už na tradičnom pevnom disku alebo SSD.
V Linuxe sa to robí na úrovni jadra a hardvéru. CPU má hardvér nazývaný Memory Management Unit (MMU), ktorý prekladá adresy fyzickej pamäte na virtuálne. Tieto adresy sú nezávislé od toho, kde sa na stroji fyzicky nachádzajú. Tieto adresné priestory sú známe ako „stránky“ a môžu byť v pamäti RAM alebo na vašom pevnom disku alebo SSD. Operačný systém vidí tieto adresy ako jeden veľký fond pamäte, známy ako „priestor adries“.
Virtuálna pamäť využíva skutočnosť, že nie celá pamäť, ktorá sa teoreticky používa, sa využíva stále. Programy v pamäti sú rozdelené na stránky a časti, ktoré jadro považuje za nepotrebné, sú „vymenené“ alebo presunuté na pevný disk. Keď sú potrebné, možno ich „zameniť“ alebo vrátiť späť do pamäte RAM.
Priestor používaný pre virtuálnu pamäť na jednotke je známy ako „záložný ukladací priestor“ alebo „swap space“. Vo svete Windows je to tak zvyčajne implementovaný ako súbor, známy ako „swap súbor“. Je to možné aj v Linuxe, ale je to oveľa bežnejšie do použite vyhradený oddiel disku.
Swap súbory v Linuxe sú zvyčajne vyhradené pre minimálne alebo vstavané systémy a je bežné, že tieto systémy bežia úplne bez virtuálnej pamäte, pretože vstavané operačné systémy musia byť malé.
Výsledkom virtuálnej pamäte je, že je možné spúšťať veľké programy s použitím väčšej pamäte, ako je fyzická RAM v váš stroj, podobne ako vám kreditná karta umožňuje robiť veľké nákupy za viac peňazí, ako máte vo svojej banke účtu. Podobne ako kreditná karta, aj virtuálna pamäť je užitočná, keď ju potrebujete, ale nechcete ju preháňať.
Virtuálna pamäť tiež umožňuje vývojárom vytvárať aplikácie bez toho, aby museli vedieť, ako je usporiadaná pamäť počítača.
Historicky hlavnou nevýhodou virtuálnej pamäte bolo, že pevné disky boli pomalšie ako RAM. Ak počítač nemá dostatok pamäte RAM, systém môže donekonečna vymieňať stránky dovnútra a von, čo je proces známy ako „thrashing“. Toto je menší problém na moderných počítačoch s väčšou pamäťou RAM a rýchlejšími SSD, ktoré vytláčajú mechanické pevné disky, ale stále je potrebné si to uvedomiť z
Výmenné oddiely Linuxu
Ako už bolo spomenuté, zvyčajným spôsobom nastavenia virtuálnej pamäte v systéme Linux je použitie vyhradenej diskovej oblasti. Inštalačný program skontroluje váš hardvér a navrhne schému rozdelenia, ktorá obsahuje odkladací oddiel.
Po inštalácii môžete tiež pridať odkladacie oddiely. Ak chcete pridať nový oddiel na existujúci disk, budete musieť použite nedeštruktívny nástroj na rozdelenie ako GParted. Uistite sa, že ste vybrali "Linux swap" ako súborový systém pre váš oddiel.
Pred prerozdelením disku si zálohujte dôležité údaje.
Po vytvorení oddielu použite príkaz mkswap na formátovanie oddielu.
sudo mkswap /dev/sdX
Teraz budete musieť upraviť svoj /etc/fstab ako root, aby ste pridali svoj odkladací oddiel. Tento riadok, pridaný do súboru, nastaví odkladací oddiel, ktorý sa pripojí pri zavádzaní:
/dev/sdX žiadny swap predvolene 0 0
Teraz použite swapon príkaz na aktiváciu vášho nového odkladacieho priestoru, kde sdX je názov vášho odkladacieho oddielu:
sudo swapon /dev/sdX
Používanie výmenných súborov v systéme Linux
Je to jednoduché nastaviť odkladací súbor v systéme Linux pomocou príkazového riadku. Možno to budete chcieť urobiť, ak sa nechcete obťažovať prerozdeľovaním disku alebo úpravami /etc/fstab. Jednou z metód je použitie fallokate:
Ak chcete napríklad vytvoriť 2 GB odkladací súbor:
sudo fallocate -l 2G /cesta/k/swapfile
Alternatívne môžete na vytvorenie odkladacieho súboru použiť príkaz dd.
sudo dd ak=/dev/nula z=/path/do/swapfile bs=1024 počet =2048
Uistite sa, že príkaz dd používate správne, pretože nesprávny vstupný a výstupný súbor môže spôsobiť stratu údajov. Z tohto dôvodu je preferovanou metódou fallocate.
The /dev/zero zariadenie je špeciálne zariadenie, ktoré vydáva "0." Tento príkaz dd vytvorí prázdny dvojgigabajtový blokový súbor pomocou 1024-kilobajtových blokov vhodných na použitie ako odkladací priestor.
Potom môžete použiť mkswap a swapon príkazy s odkladacím súborom, ako by ste to robili s odkladacím oddielom:
sudo mkswap /cesta/k/swapfile
sudo swapon /cesta/k/swapfile
Možno sa čudujete, kedy by ste mali použiť odkladací súbor alebo vyhradený oddiel pre odkladací priestor. Voľba je jednoduchá: vo väčšine prípadov by ste mali použiť oddiel. Toto je najlepšia voľba pre Linuxový desktop alebo server. Schéma oddielov navrhnutá inštalačným programom je zvyčajne adekvátna na desktope Linux pre jedného používateľa.
Možno budete chcieť použiť odkladací súbor, ak používate Linux na virtuálnom stroji, na malom vstavanom systéme alebo jednoducho nechcete prerozdeľovať svoj existujúci systém Linux.
Koľko miesta na výmenu?
Po mnoho rokov je štandardnou radou, koľko swapového priestoru je potrebné, dvojnásobok fyzickej pamäte RAM. Pri veľkých diskoch a množstve pamäte, s ktorými sa dodávajú aj tie najlacnejšie počítače, môže toto pravidlo prichádzať do úvahy.
Ak na mnohých systémoch začiarknete top alebo htop, môžete si dokonca všimnúť, že váš odkladací priestor sa vôbec nepoužíva, ak svoj systém nastavíte týmto spôsobom.
Napriek tomu je dvojnásobná fyzická pamäť dobrým východiskovým bodom a poistkou, ak na pamäť kladiete väčšie nároky. V prípade potreby môžete vykonať zmeny vo vašom systéme. Ak váš systém využíva celú vašu RAM, počítač môže mať problémy s výkonom pri používaní virtuálnej pamäte.
Počítač sa môže neustále prepínať dovnútra a von, čo je proces známy ako mlátenie, takže sa zdá, že nereaguje. Ak stále máte mechanický pevný disk, často ho môžete počuť, ako neustále pristupuje.
V súčasnosti je to oveľa menší problém, pretože množstvo pamäte RAM aj na tých najlacnejších počítačoch je viac než dostatočné a rýchlosť SSD diskov je oveľa vyššia ako u starých pevných diskov. Stále je to niečo, čo by ste si mali uvedomiť.
Najjednoduchší spôsob, ako to vyriešiť, je pridať do počítača viac pamäte RAM. Ak to nie je možné, môžete skúsiť upraviť „swappiness“ jadra Linuxu.
Číslo swappiness určuje, koľko sa jadro ponorí do virtuálnej pamäte. Pohybuje sa od 0 do 100. Nastavenie na 0 znamená, že Linux nebude swapovať vôbec, zatiaľ čo pri 100 bude swapovať pri každej príležitosti. Predvolená hodnota na väčšine systémov je 60.
Ak chcete dočasne zmeniť swappiness, použite príkaz sysctl:
sudo sysctl vm.swappiness=20
"20" v tomto príkaze bude číslo výmeny, kým nereštartujete. Ak ho chcete zmeniť natrvalo, upravte súbor /etc/sysctl.conf súbor ako root a umiestnite riadok "vm.swappiness=[číslo výmeny]", kde "[číslo výmeny]" je požadované číslo výmeny. Toto bude prestávka, kým nebudete môcť nainštalovať viac pamäte RAM.
Virtuálna pamäť udržuje váš systém Linux v plynulom chode
Virtuálna pamäť je súčasťou moderných operačných systémov vrátane Linuxu, ktorá udržuje váš počítač v plynulom chode. Môžete použiť odkladací súbor, ale zvyčajnou metódou je vyhradený oddiel. Nemusíte na to toľko myslieť, ale Linuxové odkladacie partície a odkladacie súbory sa dajú ľahko nastaviť a riešiť problémy.
Veľa z týchto rád platí aj pre iné systémy vrátane Windowsu, aj keď metódy nastavenia virtuálnej pamäte sú odlišné.