Memoria virtuală este unul dintre acele lucruri care stau la baza sistemelor de operare moderne, dar, de obicei, nu te gândești cu adevărat la asta decât dacă ai o problemă. Distribuțiile Linux vă solicită să vă configurați spațiul de memorie virtuală (partiții de schimb) în timpul instalării, dar majoritatea începătorilor nu știu cât de util este acest lucru.
Iată tot ce trebuie să știți despre memoria virtuală pe Linux.
Ce este memoria virtuală?
Memoria virtuală este o modalitate de a vă reprezenta memoria care este extrasă din memoria fizică de pe computer. Folosește atât memoria RAM, cât și spațiul de stocare, fie că este pe un hard disk tradițional sau pe un SSD.
În Linux, acest lucru se face la nivel de kernel și hardware. CPU are o piesă hardware numită Memory Management Unit (MMU) care traduce adresele de memorie fizică în adrese virtuale. Aceste adrese sunt independente de locul unde se află fizic pe mașină. Aceste spații de adrese sunt cunoscute sub denumirea de „pagini” și pot fi în RAM sau pe hard disk sau SSD. Sistemul de operare vede aceste adrese ca un grup mare de memorie, cunoscut sub numele de „spațiu de adrese”.
Memoria virtuală profită de faptul că nu toată memoria care este folosită în teorie este folosită tot timpul. Programele din memorie sunt împărțite în pagini, iar părțile pe care nucleul le consideră inutile sunt „schimbate” sau mutate pe hard disk. Când sunt necesare, pot fi „schimbate” sau aduse înapoi în RAM.
Spațiul folosit pentru memoria virtuală pe o unitate este cunoscut sub numele de „magazin de rezervă” sau „spațiu de schimb”. În lumea Windows, este implementat de obicei ca fișier, cunoscut sub numele de „fișier de schimb”. Este posibil să faci asta și în Linux, dar este mult mai comun la utilizați o partiție de disc dedicată.
Fișierele de schimb pe Linux sunt de obicei rezervate pentru sistemele minime sau încorporate și este obișnuit ca acestea din urmă să ruleze complet fără memorie virtuală, deoarece sistemele de operare încorporate trebuie să fie mici.
Rezultatul memoriei virtuale este că este posibil să rulați programe mari folosind mai multă memorie decât memoria RAM fizică aparatul dvs., similar cu modul în care un card de credit vă permite să faceți achiziții mari pentru mai mulți bani decât aveți în banca dvs cont. La fel ca un card de credit, memoria virtuală este utilă atunci când aveți nevoie de ea, dar nu doriți să-i extindeți utilizarea.
Memoria virtuală permite, de asemenea, dezvoltatorilor să creeze aplicații fără a fi nevoie să știe cum este organizată memoria unui computer.
Principalul dezavantaj al memoriei virtuale a fost că hard disk-urile au fost mai lente decât RAM. Dacă o mașină nu are suficientă memorie RAM, sistemul poate continua să schimbe paginile la infinit, un proces cunoscut sub numele de „thrashing”. Aceasta este mai puțin o problemă pe computerele moderne cu mai multă RAM și SSD-uri mai rapide care înlocuiesc hard disk-urile mecanice, dar este încă ceva de reținut de.
Partiții de schimb Linux
După cum am menționat anterior, metoda obișnuită pentru configurarea memoriei virtuale pe Linux este utilizarea unei partiții de disc dedicate. Utilitarul de instalare vă va examina hardware-ul și va propune o schemă de partiționare care include o partiție de schimb.
De asemenea, puteți adăuga partiții swap după instalare. Dacă doriți să adăugați o nouă partiție pe o unitate existentă, va trebui utilizați un instrument de partiționare nedistructiv ca GParted. Asigurați-vă că ați selectat „Linux swap” ca sistem de fișiere pentru partiția dvs.
Faceți o copie de rezervă a datelor importante înainte de a vă repartiționa unitatea.
După ce ați creat partiția, utilizați comanda mkswap pentru a vă formata partiția.
sudo mkswap /dev/sdX
Acum va trebui să editați /etc/fstab ca root pentru a adăuga partiția de swap. Această linie, adăugată la fișier, va configura o partiție de swap care va fi montată la pornire:
/dev/sdX niciunul schimbă valorile implicite 0 0
Acum folosiți swapon comandă pentru a vă activa noul spațiu de swap, unde sdX este numele partiției dvs. de swap:
sudo swapon /dev/sdX
Utilizarea fișierelor de schimb pe Linux
Este ușor să configurați un fișier de schimb în Linux folosind linia de comandă. Este posibil să doriți să faceți acest lucru dacă nu doriți să vă deranjați să repartiționați unitatea sau să editați /etc/fstab. O metodă este utilizarea falloca:
De exemplu, pentru a crea un fișier swap de 2 GB:
sudo fallocate -l 2G /path/to/swapfile
Ca alternativă, puteți utiliza comanda dd pentru a crea fișierul swap.
sudo dd dacă=/dev/zero de=/path/to/swapfile bs=1024 numără=2048
Asigurați-vă că utilizați corect comanda dd, deoarece greșirea fișierelor de intrare și de ieșire poate provoca pierderi de date. fallocare este metoda preferată din acest motiv.
The /dev/zero dispozitivul este un dispozitiv special care scoate „0”. Ceea ce face această comandă dd este să creeze un fișier bloc necompletat de doi gigaocteți folosind blocuri de 1024 kiloocteți potrivite pentru utilizare ca spațiu de schimb.
Apoi puteți utiliza mkswap și swapon comenzi cu un fișier de swap așa cum ați face cu o partiție de swap:
sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile
S-ar putea să vă întrebați când ar trebui să utilizați un fișier de schimb sau o partiție dedicată pentru spațiul dvs. de schimb. Alegerea este ușoară: în majoritatea circumstanțelor, ar trebui să utilizați o partiție. Aceasta este cea mai bună alegere pentru un desktop Linux sau un server. Schema de partiții sugerată de instalator este de obicei adecvată pe un desktop Linux cu un singur utilizator.
Poate doriți să utilizați un fișier de schimb dacă rulați Linux într-o mașină virtuală, pe un sistem încorporat mic sau pur și simplu nu doriți să repartiționați sistemul Linux existent.
Cât spațiu de schimb?
Timp de mulți ani, sfatul standard pentru cât spațiu de schimb este necesar este de două ori memoria RAM fizică. Cu unitățile mari și cantitățile de memorie cu care vin chiar și cele mai ieftine PC-uri, această regulă poate intra în discuție.
Pe multe sisteme, dacă bifați top sau htop, s-ar putea chiar să observați că spațiul dvs. de swap nici măcar nu este folosit deloc dacă vă configurați sistemul în acest fel.
Cu toate acestea, de două ori memoria fizică este un bun punct de plecare și o poliță de asigurare dacă solicitați mai mult memoria. Puteți face modificări sistemului dvs. după cum este necesar. Dacă sistemul dvs. utilizează toată memoria RAM, computerul poate avea probleme de performanță atunci când utilizați memoria virtuală.
Computerul poate continua să schimbe și să iasă, un proces cunoscut sub numele de thrashing, făcându-l să pară că nu răspunde. Dacă mai aveți un hard disk mecanic, îl puteți auzi adesea accesând constant.
Aceasta este o problemă mult mai mică în zilele noastre, deoarece cantitatea de RAM chiar și pe cele mai ieftine PC-uri este mai mult decât adecvată, plus viteza SSD-urilor este mult mai rapidă decât vechile hard disk-uri. Este încă ceva de care ar trebui să fii conștient.
Cel mai simplu mod de a remedia acest lucru este să adăugați mai multă memorie RAM la mașina dvs. Dacă acest lucru nu este posibil, ați putea încerca să ajustați „swappiness” al nucleului Linux.
Numărul de schimb determină cât de mult pătrunde nucleul în memoria virtuală. Acesta variază de la 0 la 100. Setarea lui la 0 înseamnă că Linux nu va schimba deloc, în timp ce la 100, se va schimba cu fiecare ocazie. Valoarea implicită pe majoritatea sistemelor este 60.
Pentru a modifica temporar schimbarea, utilizați comanda sysctl:
sudo sysctl vm.swappiness=20
„20” din acea comandă va fi numărul de schimb până când reporniți. Pentru a-l schimba definitiv, editați /etc/sysctl.conf fișier ca rădăcină și plasați linia „vm.swappiness=[număr de schimb]”, unde „[număr de schimb]” este numărul de schimb pe care îl doriți. Acesta va fi o pauză până când veți putea instala mai multă RAM.
Memoria virtuală vă menține sistemul Linux să funcționeze fără probleme
Memoria virtuală este o componentă a sistemelor de operare moderne, inclusiv Linux, care vă menține computerul să funcționeze fără probleme. Puteți utiliza un fișier swap, dar metoda obișnuită este o partiție dedicată. Nu trebuie să vă gândiți atât de mult la asta, dar partițiile și fișierele swap Linux sunt ușor de configurat și de depanat.
Multe dintre aceste sfaturi sunt aplicabile și altor sisteme, inclusiv Windows, chiar dacă metodele de configurare a memoriei virtuale sunt diferite.