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

Adăugați spațiu de swap la un computer Linux sau măriți spațiul de swap care este deja prezent, fără a vă încurca cu partițiile. Vă arătăm modalitatea ușoară de a vă adapta spațiul de schimb.

Schimbați fișiere vs. Schimbați partiții

Există mai multe scenarii în care ați putea dori să creșteți spațiul de schimb existent sau să adăugați un spațiu de schimb nou pe computerul dvs. Linux.

Poate că spațiul dvs. de schimb rulează frecvent la maxim sau aproape de maxim.
Este ușor să faceți clic pe opțiunea greșită în timpul procesului de instalare și să refuzați adăugarea de swap în sistem din neatenție.
Poate ai decis anterior că ai atât de multe memorie cu acces aleator (RAM) nu ai nevoie de nicio schimbare și te-ai răzgândit.
Uneori moșteniți administrarea unui sistem care nu are schimb, din motive pe care nu le veți putea descoperi niciodată.

Soluția simplă la toate acestea este să adăugați un schimbați fișierul pe computer. Acesta este un fișier special, pre-alocat și rezervat pentru utilizare ca spațiu de schimb. Un fișier swap va funcționa în tandem cu orice schimb existent pe care îl aveți, indiferent dacă acesta este un fișier swap sau o partiție de swap.

La un moment dat, a existat o atingere de performanță pentru utilizarea unui fișier de schimb în comparație cu o partiție de schimb. Nu mai este cazul îmbunătățirilor în performanța hard disk-urilor mecanice (în rotație) și mai multă eficiență în funcțiile de swap din cadrul sistemului de operare Linux. De fapt, unele distribuții Linux creează acum implicit fișiere de schimb, mai degrabă decât partiții de schimb.

Schimbarea nu este folosită doar ca mijloc de a elibera memoria RAM atunci când rămâneți fără memorie. Este o parte importantă a unui sistem care funcționează bine. Fără vreun schimb, gestionarea corectă a memoriei devine foarte dificil de realizat pentru nucleu. Să ne uităm la modalitatea ușoară de a adăuga spațiu de schimb.

Înainte să ne scufundăm: Btrf-uri și SSD-uri

Sunt două puncte pe care am dori să le discutăm rapid.

The Sistem de fișiere Btrfs are anumite avertismente cu privire la fișierele de schimb. La un moment dat, a existat un conflict între Copie pe scriere natura Btrfs, care dorea să funcționeze într-un fel și să schimbe fișierele care trebuiau să funcționeze în altul. Unele funcții de care depind fișierele de schimb nu au fost implementate, iar unele ipoteze care au fost făcute cu privire la numerotarea blocurilor în fișierele de schimb nu au fost valabile pentru Btrfs. Deci fișierele de schimb nu au fost acceptate.

De la kernel-ul 5.0, tu poate avea fișiere de schimb în sistemele de fișiere Btrfs dacă sunt înființate cu următoarele cerințe:

Fără fișiere de copiere la scriere (NOCOW).
Nu sunt comprimate.
Nu se încadrează pe diferite hard disk-uri.

Majoritatea cititorilor vor folosi sistemul de fișiere ext4 implicit, așa că acest lucru nu va fi o problemă pentru ei.

  Cum să salvați DVD-uri și Blu-ray-uri pe computerul dvs. Linux

Când unitățile cu stare solidă (SSD) au fost disponibile pentru prima dată, a existat o îngrijorare cu privire la utilizarea lor în situații care aveau scrieri frecvente în sistemul de fișiere. Oamenii au fost avertizați să nu pună spațiu de schimb pe SSD-uri și chiar să evite conectarea sistemului pe SSD-uri.

Acest lucru este mult mai puțin îngrijorător în zilele noastre, iar multe SSD-uri care sunt la vânzare au o speranță de viață care va dura mai mult decât majoritatea PC-urilor. Un fișier de schimb pe un SSD va avea o performanță mult mai bună decât o partiție de schimb pe un hard disk mecanic.

Verificarea spațiului de swap existent

Nu te pripi. Să verificăm ce spațiu de schimb este disponibil pe computer. Puteți face acest lucru în două moduri, iar noi le vom folosi pe ambele. Comanda liberă va afișa memoria folosită și cea liberă. Opțiunea -h (lizibilă) va determina utilizarea liberă a unităților sensibile atunci când afișează valorile memoriei.

free -h

Ieșirea de la free arată că nu există spațiu de swap configurat pe această mașină.

Schimbarea nu este niciodată discutată fără RAM și RAM liberă. Deci, merită remarcat faptul că RAM-ul liber este dat ca 237 MB. Nu confundați asta cu totalul de memorie RAM disponibilă pentru utilizare. Această valoare este furnizată de cifra „disponibilă”, care este de 881 MB.

Linux folosește RAM liberă pentru propriile scopuri, cum ar fi stocarea în cache a fișierelor și bufferele kernelului. Cantitatea de RAM dedicată acesteia este cifra „buff/cache”, care este de 871 MB. Dar acea amintire este încă considerată și considerată ca fiind „disponibilă”. Conținutul memoriei RAM „buf/cache” poate fi aruncat imediat și utilizat de orice aplicație care are nevoie de puțină memorie.

O altă modalitate de a verifica dacă spațiul de schimb este disponibil este să utilizați comanda swapon. Opțiunea –show nu face niciuna modificări ale schimbului de pe computer. Oferă doar statistici.

swapon --show

Dacă nu există nicio ieșire de la această comandă, nu există nicio schimbare configurată.

Dacă aceste comenzi au dezvăluit că un spațiu de swap este deja configurat, dimensiunea spațiului de swap existent ar trebui să fie luată în considerare în deciziile privind dimensiunea fișierului de swap pe care urmează să-l creați.

De cât spațiu de schimb am nevoie?

Răspunsul tradițional a fost „de două ori cantitatea de memorie RAM pe care o aveți”. Dar acest lucru a fost inventat când computerele aveau o memorie RAM foarte limitată. Pe măsură ce memoria RAM a devenit mai ieftină, iar programele și jocurile mai solicitante de memorie, specificațiile PC-ului s-au ajustat în consecință. PC-urile de acasă cu 32 GB de RAM nu sunt neobișnuite în zilele noastre. Și nu veți aloca 64 GB de spațiu pe hard disk pentru a schimba spațiu dacă aveți 32 GB de RAM. Este clar excesiv.

Cantitatea de schimb de care aveți nevoie este un subiect incendiar, comparabil cu „care este cel mai bun editor”. Una dintre cele mai sensibile discuții pe care le-am văzut pe acest subiect este în Întrebări frecvente privind schimbul Ubuntu. Este o abordare scurtă și de bun simț (deși, la fel ca mulți oameni, ei înțeleg greșit cum funcționează schimbul pe Linux). Există un tabel la îndemână care arată o cantitate recomandată de spațiu de schimb pentru cantitatea de RAM pe care o are sistemul dvs. și dacă vă hibernați sau nu computerul.

  Cum se monitorizează lățimea de bandă a rețelei pe Linux

Și vestea bună este că nu contează cu adevărat ce valoare alegi. Putem oricând să eliminam un fișier de schimb și să-l înlocuim cu unul mai mare sau, de altfel, cu unul mai mic. Sau puteți adăuga un alt fișier de schimb.

Alege o dimensiune a fișierului de schimb din tabel, și rulați-l pentru o vreme. Monitorizați utilizarea spațiului de swap de către sistemul dvs. Dacă este necesară o reglare fină, modificările sunt ușor de făcut. Cu fișiere de schimb, este o treabă de două minute. Compară asta cu ajustarea partițiilor pe un computer Linux live.

Crearea fișierului de schimb

Nu ar trebui să utilizați comanda fallocate pentru a vă crea fișierul de schimb. Aceasta este de pe pagina de manual pentru swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Deci, deși fallocate este mai rapid, vom folosi dd to creați fișierul swap. Aparatul folosit pentru cercetarea acestui articol are doi GB de RAM. Vom crea un fișier de schimb de un GB.

Opțiunile sunt:

if: Fișierul de intrare. În acest exemplu, folosim /dev/zero care va furniza un flux de zero octeți.
din: 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 să citiți din fișierul de intrare și să scrieți în fișierul de ieșire, la un moment dat.
count: Câte 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

Unele statistici sunt furnizate atunci când fișierul este creat.

Putem vedea numărul de blocuri (înregistrări) care au fost scrise în fișier, dimensiunea fișierului, timpul necesar pentru a crea fișierul și rata efectivă de transfer de date.

Utilizați comanda ls pentru a vedea fișierul în directorul rădăcină:

ls /

Pregătirea fișierului de schimb

Avem nevoie să pregătiți fișierul de schimb cu comanda mkswap înainte de a putea fi utilizată. Nu trebuie să furnizăm niciun parametru pentru mkswap, în afară de calea și numele fișierului:

sudo mkswap /swapfile

Fișierul este pregătit pentru a fi utilizat ca fișier de schimb. Rețineți avertismentul despre permisiunile fișierelor. Va trebui să le schimbăm, astfel încât utilizatorul root să fie singurul care poate citi și scrie în fișierul swap.

Utilizarea fișierului Swap

Permisiunile implicite sunt prea liberale, trebuie să le restricționăm astfel încât numai root să poată folosi fișierul de schimb. Utilizați chmod pentru a modifica permisiunile fișierului:

sudo chmod 600 /swapfile

Acest lucru elimină toate permisiunile membrilor grupului de fișiere și altora, dar permite proprietarului fișierului, root, să citească și să scrie în fișier.

  Cum se instalează tema pictogramei uniforme pe Linux

Trebuie să folosim comanda swapon pentru a-i anunța pe Linux că există un nou fișier de swap disponibil pentru utilizare. Trebuie doar să furnizăm calea și numele fișierului:

sudo swapon /swapfile

Fișierul de schimb este acum activ.

Adăugarea fișierului Swap la fstab

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

sudo gedit /etc/fstab

Linia pe care trebuie să o adăugăm în partea de jos a fișierului este:

/swapfile    none    swap    sw    0    0

Câmpurile sunt:

Sistem de fișiere: calea și numele fișierului de schimb.
Punct de montare: fișierul nu este montat ca un sistem de fișiere, deci intrarea este „niciun”.
Tip: Acesta este „swap”.
Opțiuni: La momentul pornirii, swapon -a (porniți toate dispozitivele marcate ca swap) va fi apelat dintr-unul dintre scripturile de pornire. Această opțiune îi spune Linux să trateze această intrare ca pe o resursă de schimb care ar trebui să intre sub controlul acelei comenzi swapon -a. Este obișnuit să vedeți „valorile implicite” folosite aici, deoarece există o credință greșită printre unii utilizatori Linux că acest câmp este ignorat. După cum vom vedea, nu este cazul. Deci, este logic să folosiți opțiunea corectă.
Dump: Acesta poate fi setat la zero. Este irelevant în acest caz.
Pass: Aceasta poate fi setată la zero. Este irelevant în acest caz.

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

Verificarea utilizării swap

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

swapon --show

Coloanele sunt:

Nume: numele partiției de schimb sau al fișierului de schimb.
Tip: tipul dispozitivului de schimb.
Dimensiune: dimensiunea resursei de schimb.
Utilizat: cantitatea de spațiu de schimb utilizat.
Prio: Prioritatea acestui spațiu de schimb.

Prioritatea spațiului de schimb

Fiecărui spațiu de schimb îi este alocată o prioritate. Dacă nu furnizați unul, unul este alocat automat. Prioritățile alocate automat sunt întotdeauna negative. Intervalul de priorități care pot fi alocate manual este de la 0 la 32767. Se utilizează mai întâi resursele de schimb cu priorități mai mari.

Dacă mai multe spații de schimb au aceeași prioritate, acestea sunt utilizate alternativ până când sunt pline ambele, atunci sistemul caută spațiul de schimb cu următoarea prioritate cea mai mică. Dacă aveți doar un singur spațiu de schimb, atunci prioritatea este irelevantă, desigur. Dar vom schimba prioritatea fișierului de schimb pe care l-am creat pentru a demonstra cum să o facem.

Pentru a seta o prioritate, adăugați opțiunea pri= (prioritate) la intrarea /etc/fstab. Editați linia pe care ați adăugat-o în /etc/fstab pentru a arăta astfel:

/swapfile    none    swap    sw,pri=10    0    0

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

swapon -- show

Prioritatea acestui spațiu de schimb a fost ridicată la 10. Ceea ce este o dovadă pozitivă că câmpul de opțiuni din intrarea /etc/fstab nu este ignorat.

Schimbarea spațiului este ușor

Trecând prin expunere și explicație, putem crea un nou fișier de schimb la fel de ușor și rapid ca acesta:

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

Și să verificăm dacă a funcționat:

swapon --show

Dacă doriți să faceți acea picătură permanentă, introduceți-o în fișierul dvs. /etc/fstab.

Bum. Treaba făcuta.