SWAP atmintis - tai virtuali RAM atmintis kietajame diske. Čia operacinė sistema gali laikinai laikyti tuos duomenis, kurie nebetelpa RAM atmintyje. SWAP atmintis leidžia laikinai padidinti serverio RAM atmintį. Taigi SWAP atmintis leidžia likti sistemai veikti net tada, kai serveryje veikiančios programos išnaudoja visą RAM atmintį.
0. Preliminarūs reikalavimai
Pamoka parengta naudojant naudojant Linux KVM serverį su Ubuntu 16.04 operacine sistema.
1. Failo, skirto SWAP atminčiai sukūrimas
* Pirmiausia įsitikinkime, kad serveryje iš tiesų SWAP atmintis nėra naudojama:
free -h
Gausime rezultatą panašų į šį:
total used free shared buff/cache available
Mem: 992M 60M 332M 10M 599M 767M
Swap: 0B 0B 0B
Taigi, kaip matome vietos SWAP atminčiai iš tiesų išskirta nėra.
* Yra daug įvairių nuomonių kiek SWAP atminties reikėtų išskirti serveriui - pusę, lygią ar dvigubai didesnę nei serverio RAM atmintis. Mūsų pavyzdyje serveris turi 2GB RAM atminties, taigi šiuo atveju išskirkime SWAP atmintį lygią, dvigubai RAM atminčiai - 4GB:
fallocate -l 4G /swapfile
Įsitikinti, kad 4GB atminties buvo rezervuoti SWAP failui (swapfile) galima su komanda:
ls -lh /swapfile
Gausite rezultatą panašų į šį:
-rw-r--r-- 1 root root 4.0G Oct 28 18:52 /swapfile
Tai reiškia, kad SWAP atminties failas buvo sukurtas sėkmingai.
2. Swap failo aktyvavimas
* Padarome SWAP failą prieinamą tik root naudotojui:
chmod 600 /swapfile
Kad failo teisės buvo pakeistos sėkmingai, įsitikinti vėl galime su komanda:
ls -lh /swapfile
* Pažymime sukurtą failą "swapfile" kaip išskirtą SWAP atminčiai:
mkswap /swapfile
* Aktyvuokite SWAP atmintį:
swapon /swapfile
* Dabar galime matyti, kad SWAP atmintis serveryje jau yra išskirta:
free -h
Gaunamas rezultatas bus panašus į:
total used free shared buff/cache available
Mem: 992M 63M 328M 10M 600M 764M
Swap: 4.0G 0B 4.0G
T.y. matome, kad SWAP atminčiai buvo rezervuoti 4GB kietojo disko.
3. SWAP failo veikimas po serverio perkrovimo
Po serverio perkrovimo SWAP nustatymai neišliks. Kad to išvengtumėte reikės redaguoti failą
/etc/fstab . Pirmiausia susikurkime šio failo atsarginę kopiją:
cp /etc/fstab /etc/fstab.atsarginis
Tuomet pridėkime reikiamą informaciją į šį failą:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
4. Papildomi parametrai
swappiness parametras nurodo kaip dažnai duomenys turėtų būti perkeliami iš RAM į SWAP atmintį. Šis parametras išreiškiamas procentais nuo 0 iki 100. Reikšmės artimesnės 0 reiškia, kad duomenys į SWAP atmintį bus perkeliami tik tada, kai tai bus būtina. Reikšmės artimesnės 100 nurodo, kad duomenys į SWAP atmintį bus perkeliami dažniau, taip paliekant daugiau laisvos vietos RAM atmintyje. Serveriui rekomenduojame naudoti reikšmę artimesnę 0, tarkim 10. Patikrinti dabartinę reikšmę galima su komanda:
cat /proc/sys/vm/swappiness
Pakeisti šį parametrą, tarkime į 10, galima su komanda:
sysctl vm.swappiness=10
Tam, kad šis parametras "nenusimuštų" po serverio perkrovimo, reikėtų failo
/etc/sysctl.conf pabaigoje įrašyti "
vm.swappiness=10" (be kabučių) bei išsaugoti pakeitimus.
vfs_cache_pressure - iš esmės, šis parametras nurodo kaip dažnai atnaujinami duomenys apie failų sistemą. Pagal nutylėjimą šis parametras turėtų būti 100:
cat /proc/sys/vm/vfs_cache_pressure
Jį rekomenduojama pakeisti į mažesnį, tarkime 50. Tai atliksite su komanda:
sysctl vm.vfs_cache_pressure=50
Kad parametras išliktų ir po serverio perkrovimo, vėl redaguokite failą
/etc/sysctl.conf po pabaigoje pridedant, eilutę:
vm.vfs_cache_pressure=50