Virtuali atmintis yra vienas iš tų dalykų, kuriais grindžiamos šiuolaikinės OS, tačiau paprastai apie tai negalvojate, nebent turite problemų. „Linux“ platintojai prašo nustatyti virtualiosios atminties erdvę (sukeitimo skaidinius), tačiau dauguma pradedančiųjų nežino, kaip tai naudinga.
Štai viskas, ką reikia žinoti apie virtualiąją atmintį sistemoje „Linux“.
Kas yra virtualioji atmintis?
Virtualioji atmintis yra būdas atvaizduoti jūsų atmintį, kuri yra abstrahuota iš fizinės jūsų įrenginio atminties. Jis naudoja tiek jūsų RAM, tiek saugyklą, nesvarbu, ar tai yra tradiciniame standžiajame diske, ar SSD.
„Linux“ sistemoje tai atliekama branduolio ir aparatinės įrangos lygiais. CPU turi aparatūros dalį, vadinamą atminties valdymo bloku (MMU), kuris fizinius atminties adresus paverčia virtualiais. Šie adresai nepriklauso nuo to, kur jie fiziškai yra įrenginyje. Šios adresų erdvės yra žinomos kaip „puslapiai“ ir gali būti RAM arba standžiajame diske arba SSD. OS šiuos adresus mato kaip vieną didelį atminties telkinį, vadinamą „adresų erdve“.
Virtualioji atmintis naudojasi tuo, kad ne visa teoriškai naudojama atmintis naudojama visą laiką. Atmintyje esančios programos suskaidomos į puslapius, o dalys, kurias branduolys laiko nereikalingomis, „pakeičiamos“ arba perkeliamos į standųjį diską. Kai jų reikia, juos galima „sukeisti“ arba grąžinti į RAM.
Vieta, naudojama virtualiajai atminčiai diske, yra žinoma kaip „pagalbinė saugykla“ arba „sukeitimo vieta“. „Windows“ pasaulyje tai yra paprastai įdiegiamas kaip failas, žinomas kaip "swap failas". Tai galima padaryti ir „Linux“, bet tai daug dažniau į naudokite tam skirtą disko skaidinį.
Keitimo failai Linux sistemoje paprastai yra rezervuoti minimalioms arba įterptoms sistemoms, o pastarosios paprastai veikia be virtualios atminties, nes įterptosios OS turi būti mažos.
Virtualios atminties rezultatas yra tas, kad galima paleisti dideles programas naudojant daugiau atminties nei fizinė RAM. savo mašiną, panašiai kaip kreditinė kortelė leidžia atlikti didelius pirkinius už daugiau pinigų, nei turite savo banke sąskaitą. Kaip ir kreditinė kortelė, virtualioji atmintis yra naudinga, kai jos reikia, bet nenorite ją naudoti per daug.
Virtuali atmintis taip pat leidžia kūrėjams kurti programas nežinant, kaip sutvarkyta kompiuterio atmintis.
Pagrindinis virtualios atminties trūkumas buvo tas, kad standieji diskai buvo lėtesni nei RAM. Jei įrenginyje nėra pakankamai RAM, sistema gali be galo keisti puslapius, o tai vadinama „daužymu“. Tai yra Šiuolaikiniuose kompiuteriuose su daugiau RAM ir greitesniais SSD diskais, kurie išstumia mechaninius standžiuosius diskus, problema yra mažesnė, tačiau tai vis tiek reikia žinoti apie.
Linux Swap skaidiniai
Kaip minėta anksčiau, įprastas virtualios atminties nustatymo „Linux“ metodas yra naudoti tam skirtą disko skaidinį. Diegimo programa ištirs jūsų aparatinę įrangą ir pasiūlys skaidymo schemą, apimančią apsikeitimo skaidinį.
Po įdiegimo taip pat galite pridėti apsikeitimo skaidinius. Jei norite pridėti naują skaidinį prie esamo disko, turėsite tai padaryti naudokite neardomąjį skaidymo įrankį kaip GParted. Įsitikinkite, kad kaip skaidinio failų sistemą pasirinkote „Linux swap“.
Prieš perskirstydami diską, sukurkite atsarginę svarbių duomenų kopiją.
Sukūrę skaidinį naudokite komandą mkswap, kad formatuotumėte skaidinį.
sudo mkswap /dev/sdX
Dabar turėsite redaguoti savo /etc/fstab kaip root, kad pridėtumėte apsikeitimo skaidinį. Ši eilutė, pridėta prie failo, nustatys apsikeitimo skaidinį, kuris bus prijungtas įkrovos metu:
/dev/sdX jokio apsikeitimo numatytieji nustatymai 0 0
Dabar naudokite apsikeitimas komandą, kad suaktyvintumėte naują apsikeitimo vietą, kur sdX yra jūsų apsikeitimo skaidinio pavadinimas:
sudo swapon /dev/sdX
„Swap Files“ naudojimas sistemoje „Linux“.
Tai lengva nustatykite apsikeitimo failą „Linux“. naudojant komandinę eilutę. Galbūt norėsite tai padaryti, jei nenorite vargintis perskirstydami diską ar redaguodami /etc/fstab. Vienas iš būdų yra naudoti pakliūti:
Pavyzdžiui, norėdami sukurti 2 GB apsikeitimo failą:
sudo fallocate -l 2G /kelias/į/swapfile
Kaip alternatyvą galite naudoti komandą dd, kad sukurtumėte apsikeitimo failą.
sudo dd jei=/dev/nulis apie=/path/į/swapfile bs=1024 skaičiuoti =2048
Įsitikinkite, kad teisingai naudojate komandą dd, nes neteisingai įvedus infile ir outfile gali būti prarasti duomenys. Fallocate yra tinkamiausias metodas dėl šios priežasties.
The /dev/zero įrenginys yra specialus įrenginys, kuris išveda „0“. Ši dd komanda sukuria tuščią dviejų gigabaitų bloko failą, naudojant 1024 kilobaitų blokus, tinkamus naudoti kaip apsikeitimo vietą.
Tada galite naudoti mkswap ir apsikeitimas komandos su apsikeitimo failu, kaip ir su apsikeitimo skaidiniu:
sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile
Jums gali kilti klausimas, kada turėtumėte naudoti apsikeitimo failą arba tam skirtą skaidinį savo apsikeitimo vietai. Pasirinkimas paprastas: daugeliu atvejų turėtumėte naudoti skaidinį. Tai geriausias pasirinkimas „Linux“ darbalaukiui arba serveriui. Diegimo programos pasiūlyta skaidinio schema paprastai yra tinkama vieno vartotojo Linux darbalaukyje.
Galbūt norėsite naudoti apsikeitimo failą, jei naudojate „Linux“ virtualioje mašinoje, mažoje įterptojoje sistemoje arba tiesiog nenorite perskirstyti esamos „Linux“ sistemos.
Kiek pakeisti vietos?
Daugelį metų standartinis patarimas, kiek reikia apsikeitimo vietos, yra dvigubai didesnė nei fizinė RAM. Dėl didelių diskų ir atminties kiekio, kurį sudaro net pigiausi kompiuteriai, ši taisyklė gali kilti abejonių.
Daugelyje sistemų, jei pažymėsite top arba htop, netgi galite pastebėti, kad jūsų apsikeitimo vieta net nenaudojama, jei taip nustatote sistemą.
Vis dėlto dviguba fizinė atmintis yra geras atspirties taškas ir draudimo polisas, jei keliate didesnius reikalavimus atminčiai. Jei reikia, galite keisti savo sistemą. Jei sistema naudoja visą RAM, naudojant virtualiąją atmintį gali kilti našumo problemų.
Kompiuteris gali nuolat keistis, o šis procesas vadinamas daužymu, todėl atrodo, kad jis nereaguoja. Jei vis dar turite mechaninį standųjį diską, dažnai galite girdėti, kaip jis nuolat pasiekia.
Šiomis dienomis tai yra daug mažesnė problema, nes RAM kiekis net pigiausiuose kompiuteriuose yra daugiau nei pakankamas, be to, SSD greitis yra daug didesnis nei senų standžiųjų diskų. Tai vis tiek turėtumėte žinoti.
Lengviausias būdas tai išspręsti yra tiesiog pridėti daugiau RAM į savo kompiuterį. Jei tai neįmanoma, galite pabandyti pakoreguoti „Linux“ branduolio „sukeitimą“.
Apsikeitimo skaičius nustato, kiek branduolys patenka į virtualią atmintį. Jis svyruoja nuo 0 iki 100. Nustačius jį į 0 reiškia, kad „Linux“ apskritai nesikeis, o esant 100 – keisis kiekviena proga. Daugumos sistemų numatytoji vertė yra 60.
Norėdami laikinai pakeisti apsikeitimą, naudokite komandą sysctl:
sudo sysctl vm.swappiness=20
„20“ toje komandoje bus apsikeitimo skaičius, kol paleisite iš naujo. Jei norite jį pakeisti visam laikui, redaguokite /etc/sysctl.conf failą kaip šaknį ir įdėkite eilutę „vm.swappiness=[sukeitimo numeris]“, kur „[sukeitimo numeris]“ yra norimas apsikeitimo numeris. Tai bus pertrauka, kol galėsite įdiegti daugiau RAM.
Virtuali atmintis užtikrina sklandų „Linux“ sistemos veikimą
Virtualioji atmintis yra šiuolaikinių OS, įskaitant Linux, komponentas, užtikrinantis sklandų kompiuterio veikimą. Galite naudoti apsikeitimo failą, tačiau įprastas metodas yra tam skirtas skaidinys. Jums nereikia tiek daug galvoti, tačiau Linux apsikeitimo skaidinius ir apsikeitimo failus lengva nustatyti ir pašalinti triktis.
Daugelis šių patarimų taip pat taikomi kitoms sistemoms, įskaitant „Windows“, net jei virtualios atminties nustatymo metodai skiriasi.