Cum se creează un fișier de schimb pe Linux

Îmbunătățiți performanța sistemului Linux prin adăugarea sau extinderea spațiului de swap, fără a complica gestionarea partițiilor. Vă prezentăm o metodă simplă de ajustare a spațiului de swap.

Fișiere swap versus partiții swap

Pot exista diverse motive pentru care ați dori să măriți spațiul de swap existent sau să implementați unul nou pe sistemul dvs. Linux:

  • Este posibil ca spațiul de swap să ajungă frecvent la capacitate maximă sau aproape de aceasta.
  • În timpul instalării, ați fi putut omite accidental opțiunea de adăugare a spațiului de swap.
  • Inițial, ați fi putut considera că nu este necesar datorită cantității mari de memorie RAM disponibilă, dar v-ați răzgândit ulterior.
  • Uneori, preluați administrarea unui sistem care nu are alocat spațiu de swap, fără a cunoaște motivul.

Soluția simplă este să adăugați un fișier swap. Acesta este un fișier special, prealocat și rezervat pentru utilizare ca spațiu de swap, funcționând în paralel cu orice swap existent, fie că este un fișier sau o partiție.

În trecut, se credea că utilizarea fișierelor swap reduce performanța în comparație cu partițiile swap. Acest lucru nu mai este valabil, datorită îmbunătățirilor aduse hard disk-urilor și funcțiilor de swap din Linux. De fapt, unele distribuții Linux preferă acum fișierele swap în locul partițiilor.

Spațiul de swap nu este utilizat doar pentru a elibera memoria RAM. Este o componentă importantă pentru funcționarea corectă a sistemului. Fără spațiu de swap, kernel-ul întâmpină dificultăți în gestionarea eficientă a memoriei. Să explorăm metoda simplă de adăugare a spațiului de swap.

Aspecte prealabile: Btrfs și SSD-uri

Există câteva detalii importante de discutat.

Sistemul de fișiere Btrfs are anumite particularități legate de fișierele swap. Inițial, exista un conflict între natura copy-on-write a Btrfs și modul în care fișierele swap trebuiau să funcționeze. Anumite funcții necesare pentru fișierele swap nu au fost implementate, iar presupunerile despre numerotarea blocurilor nu erau valabile pentru Btrfs. Prin urmare, fișierele swap nu erau compatibile.

Începând cu kernel-ul 5.0, fișierele swap pot fi folosite în sistemele de fișiere Btrfs, cu următoarele condiții:

  • Fără copy-on-write (NOCOW).
  • Fără compresie.
  • Nu sunt distribuite pe diferite hard disk-uri.

Majoritatea utilizatorilor folosesc implicit sistemul de fișiere ext4, așa că această problemă nu îi va afecta.

La începutul erei SSD-urilor, exista îngrijorarea cu privire la utilizarea lor în scenarii care implicau scrieri frecvente. Utilizatorilor li se recomanda să evite amplasarea spațiului de swap pe SSD-uri și chiar instalarea sistemului de operare pe acestea.

În prezent, aceste preocupări sunt mult mai puțin relevante, iar majoritatea SSD-urilor au o durată de viață mai lungă decât durata de utilizare a majorității PC-urilor. Un fișier swap pe un SSD va oferi o performanță mult mai bună decât o partiție swap pe un hard disk mecanic.

Verificarea spațiului de swap existent

Înainte de a începe, haideți să verificăm spațiul de swap disponibil pe sistemul dvs. Putem face acest lucru în două moduri, pe care le vom folosi pe ambele. Comanda `free` afișează utilizarea memoriei. Opțiunea `-h` (human-readable) formatează valorile memoriei în unități ușor de înțeles.

free -h

Rezultatul comenzii `free` indică faptul că nu există spațiu de swap configurat pe acest sistem.

Discuția despre spațiul de swap este legată de RAM. Cantitatea de RAM liberă este de 237 MB, dar aceasta nu este cantitatea totală disponibilă. Valoarea „available” este de 881 MB.

Linux folosește memoria RAM liberă pentru diverse funcții, cum ar fi stocarea în cache a fișierelor și bufferele kernel-ului. Această cantitate este reprezentată de valoarea „buff/cache”, care este de 871 MB. Conținutul memoriei „buf/cache” poate fi eliberat imediat și folosit de orice aplicație care necesită memorie.

O altă modalitate de a verifica spațiul de swap este comanda `swapon`. Opțiunea `–show` nu modifică configurarea swap-ului, ci doar afișează statistici.

swapon --show

Dacă această comandă nu returnează nimic, nu există spațiu de swap configurat.

Dacă aceste comenzi dezvăluie existența spațiului de swap, trebuie să țineți cont de dimensiunea lui atunci când decideți dimensiunea noului fișier de swap.

Cât spațiu de swap este necesar?

În trecut, regula generală era ca spațiul de swap să fie de două ori cantitatea de memorie RAM. Aceasta a fost o practică utilă în vremurile în care memoria RAM era limitată. Odată cu creșterea capacității RAM și a cerințelor de memorie ale programelor, specificațiile PC-urilor s-au modificat. În prezent, calculatoarele cu 32 GB de RAM sunt comune, iar alocarea a 64 GB de spațiu de swap ar fi excesivă.

Cantitatea necesară de spațiu de swap este un subiect discutabil. Una dintre cele mai pertinente discuții pe acest subiect poate fi găsită în secțiunea Întrebări frecvente privind swap-ul Ubuntu. Acesta oferă o abordare practică și tabelară, care recomandă o cantitate de swap în funcție de cantitatea de RAM și de necesitatea de hibernare.

Vestea bună este că dimensiunea fișierului de swap poate fi modificată ulterior. Puteți înlocui fișierul swap cu unul mai mare sau mai mic. Sau puteți adăuga un alt fișier swap.

Alegeți o dimensiune a fișierului swap din tabel și monitorizați utilizarea acestuia. Dacă este necesară o ajustare, aceasta se poate face ușor. Modificarea unui fișier swap este o operațiune rapidă, comparativ cu modificarea partițiilor pe un sistem Linux.

Crearea fișierului swap

Nu ar trebui să folosiți comanda `fallocate` pentru a crea fișierul swap. Pagina de manual a comenzii `swapon` oferă următoarele detalii:

Implementarea fișierului swap în kernel se așteaptă să poată scrie direct în fișier, fără ajutorul sistemului de fișiere.

Aceasta este o problemă cu fișierele care au goluri sau cu fișierele copy-on-write în sisteme de fișiere ca Btrfs. Comenzile ca cp(1) sau truncate(1) creează fișiere cu goluri. Aceste fișiere vor fi respinse de swapon.

Fișierele prealocate create de fallocate(1) pot fi interpretate și ca fișiere cu goluri, în funcție de sistemul de fișiere. Fișierele swap prealocate sunt acceptate pe XFS începând cu Linux 4.18.

Cea mai portabilă soluție pentru a crea un fișier swap este folosirea comenzii dd(1) și /dev/zero.

Deci, chiar dacă `fallocate` este mai rapidă, vom folosi `dd` pentru a crea fișierul swap. Sistemul folosit pentru acest articol are 2 GB de RAM. Vom crea un fișier swap de 1 GB.

Opțiunile comenzii `dd` sunt:

  • `if`: Fișierul de intrare. În acest caz, folosim `/dev/zero`, care va furniza un flux de octeți zero.
  • `of`: Fișierul de ieșire. Vom crea un fișier în directorul rădăcină, numit `swapfile`.
  • `bs`: Dimensiunea blocului în octeți. Aceasta specifică câți octeți sunt citiți din fișierul de intrare și scriși în fișierul de ieșire.
  • `count`: Numărul de blocuri de citit și scris. Înmulțiți acest număr cu valoarea `bs` pentru a obține dimensiunea fișierului.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Comanda afișează statisticile de creare a fișierului.

Putem vedea numărul de blocuri scrise în fișier, dimensiunea fișierului, timpul de creare și viteza de transfer de date.

Comanda `ls` ne permite să vizualizăm fișierul în directorul rădăcină:

ls /

Pregătirea fișierului swap

Trebuie să pregătim fișierul swap cu comanda `mkswap` înainte de utilizare. Nu este necesară adăugarea niciunui parametru suplimentar, în afara căii și numelui fișierului:

sudo mkswap /swapfile

Fișierul este pregătit pentru a fi folosit ca swap. Observați avertismentul despre permisiunile fișierului. Va trebui să le modificăm, astfel încât doar utilizatorul root să poată citi și scrie în fișierul swap.

Utilizarea fișierului swap

Permisiunile implicite sunt prea largi, trebuie să le restricționăm pentru ca numai root să poată folosi fișierul de swap. Folosiți comanda `chmod` pentru a modifica permisiunile:

sudo chmod 600 /swapfile

Aceasta elimină permisiunile grupului și altor utilizatori, permițând doar proprietarului fișierului, root, să citească și să scrie în el.

Comanda `swapon` este folosită pentru a notifica sistemul Linux că un nou fișier de swap este disponibil. Trebuie să specificăm doar calea și numele fișierului:

sudo swapon /swapfile

Fișierul swap este acum activ.

Adăugarea fișierului swap în fstab

Pentru a vă asigura că fișierul swap este disponibil după repornire, adăugați-l în fișierul `/etc/fstab`. Puteți folosi orice editor de text preferați, dar vom folosi editorul grafic Gedit.

sudo gedit /etc/fstab

Linia pe care trebuie să o adăugăm la sfârșitul fișierului este:

/swapfile    none    swap    sw    0    0

Câmpurile sunt:

  • Sistem de fișiere: calea și numele fișierului swap.
  • Punct de montare: fișierul nu este montat ca un sistem de fișiere, deci valoarea este „none”.
  • Tip: Acesta este „swap”.
  • Opțiuni: La pornire, comanda `swapon -a` (pornește toate dispozitivele marcate ca swap) este apelată de unul dintre scripturile de pornire. Această opțiune indică sistemului Linux să trateze această intrare ca o resursă de swap. De obicei, este folosit „defaults”, dar este mai corect să folosim opțiunea „sw”.
  • Dump: Aceasta poate fi setată la zero. Nu este relevantă în acest caz.
  • Pass: Aceasta poate fi setată la zero. Nu este relevantă în acest caz.

Salvați modificările și închideți editorul.

Verificarea utilizării swap

Pentru a verifica dacă spațiul de swap este utilizat, utilizați comanda `swapon` cu opțiunea `–show`:

swapon --show

Coloanele afișate sunt:

  • Name: numele partiției sau al fișierului swap.
  • Type: tipul dispozitivului swap.
  • Size: dimensiunea resursei swap.
  • Used: cantitatea de spațiu swap utilizat.
  • Prio: prioritatea acestui spațiu swap.

Prioritatea spațiului swap

Fiecărui spațiu swap îi este alocată o prioritate. Dacă nu specificați o prioritate, aceasta este alocată automat și va fi negativă. Prioritățile alocate manual variază de la 0 la 32767. Resursele swap cu priorități mai mari sunt folosite primele.

Dacă mai multe spații swap au aceeași prioritate, acestea sunt folosite alternativ până când ambele sunt pline. Sistemul va trece apoi la spațiul swap cu următoarea prioritate. Dacă aveți un singur spațiu swap, prioritatea nu are importanță. Dar vom modifica prioritatea fișierului swap creat pentru a demonstra cum se face acest lucru.

Pentru a seta o prioritate, adăugați opțiunea `pri=` (prioritate) la intrarea `/etc/fstab`. Modificați linia adăugată în `/etc/fstab` astfel:

/swapfile    none    swap    sw,pri=10    0    0

Adică, adăugați `pri=10` în câmpul de opțiuni, separat de „sw” printr-o virgulă. Nu lăsați spații între „sw”, virgulă și „pri=10”. Reporniți sistemul și utilizați comanda `swapon –show`:

swapon -- show

Prioritatea spațiului swap a fost ridicată la 10, demonstrând că opțiunile din `/etc/fstab` nu sunt ignorate.

Modificarea spațiului swap este ușoară

După prezentarea de mai sus, putem crea un nou fișier de swap ușor și rapid, folosind următoarele comenzi:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

Și putem verifica dacă a funcționat:

swapon --show

Dacă doriți ca modificarea să fie permanentă, adăugați intrarea corespunzătoare în fișierul `/etc/fstab`.

Gata! Operațiunea este finalizată.