FreeBSD – adaugare swap

Memoria fizică instală pe un calculator este o resursă limitată. Un număr limitat de procese încap în această memorie la un moment dat, cu toate că este posibil să existe și alte procese care trebuie să ruleze. Prin swaping se pot transfera procese sau bucăți din procese din memoria fizică pe un dispozitiv de stocare, cel mai frecvent hard-disc-ul, eliberând astfel memoria fizică. Atunci când se eliberează destulă memorie fizică, procesele sunt transferate de pe dispozitivul de stocare înapoi în memoria fizică.

Atunci când folosim freeBSD (și nu numai), putem defini în momentul instalării sistemului de operare o partiție pentru swap. Este recomandat ca dimensiunea acestei partiții să fie de două ori capacitatea memoriei fizice. De exemplu, dacă avem 2GB memorie RAM, vom face această partiție de 4GB. Bineînțeles că se poate alege orice altă valoare, în funcție rolul pe care îl va avea mașina respectivă, spațiul de stocare, etc.

In producție se întâmplă ca procesele care rulează sa ocupe toată memoria fizică și să înceapă să consume și din partiția de swap. Dacă însă se ajunge să se folosească și tot spațiul de pe această partiție, atunci avem o problemă.

În această situație soluția ideală este să adăugăm memorie RAM pe sistem. Cum acest lucru nu se poate face întotdeauna în cel mai scurt timp, trebuie găsită o soluție pentru a menține sistemul funcțional și cu toate serviciile necesare pornite.

Câteva dintre soluții ar fi:  adăugarea unui nou disc pe care să definim partiție/volum pentru swap (dezavantaje: durează, necesită acces fizic la mașină, implică costuri), repartiționarea hard-disc-ului existent pentru a mări partiția de swap (periculos, putem pierde date) sau crearea unui fișier de swap pe una dintre partițiile de sistem existente.

Ultima soluție este cea mai indicată, fiind rapid de implementat șî nu prezintă riscuri. Dezavantajul ar fi timpul mai mare de citire/scriere față de o partiție dedicată de swap și evident fața de memoria fizică.

Cum implementăm acest lucru în freeBSD? Folosind doar câteva comenzi. Dar înainte de acestea avem nevoie să fie compilat în kernel driverul pentru disc de memorie (care există implicit în kernelul GENERIC):

device md # Memory "disks"

Vom creea apoi fișier de swap /usr/swap0, cu o dimensiune, să spunem de 1GB, folosind comanda:

dd if=/dev/zero of=/usr/swap0 bs=1024k count=1024

Este necesar să setăm permisiunile adecvate pentru acest fișier:

chmod 0600 /usr/swap0

Aceste fișier de swap poate fi folosit imediat după ce dăm comanda:

mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0

Dacă avem nevoie să îl folosim și după restartul sistemului trebuie să adăugăm în fișierul /etc/rc.conf:

swapfile="/usr/swap0"

La nevoie, putem să mai facem încă un fișier /usr/swap1 (de 512kB) pe care să îl folosim imediat ca fișier de swap:

dd if=/dev/zero of=/usr/swap1 bs=1024k count=512

chmod 0600 /usr/swap1

mdconfig -a -t vnode -f /usr/swap1 -u 1 && swapon /dev/md1

Putem vizualiza informațiile despre swap folosind comanda swapinfo. Mai jos este output-ul acestei comenzi rulată cu parametrul -h după ce am creat un fișier swap de 32M:

Articole asemanatoare:

Etichetat cu: , ,

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*