Kas tas virtualumas ir kodėl jis tapo tokiu svarbiu
Prisimenu, kaip prieš kokius penkiolika metų teko stebėti, kaip IT specialistas įmonėje kažką keisto darė su serveriais. Vietoj to, kad ant kiekvieno fizinio kompiuterio būtų įdiegta viena operacinė sistema ir viena programa, jis kūrė tarsi kompiuterius kompiuteryje. Tada tai atrodė kaip kažkokia magija – vienas serveris dirbo kaip penki ar dešimt atskirų mašinų. Tai ir buvo virtualizacija, technologija, kuri visiškai pakeitė IT pasaulį.
Virtualizacija paprasčiausiai reiškia galimybę sukurti virtualią – ne fizinę, bet programinę – kompiuterio, serverio, saugyklos ar tinklo versiją. Įsivaizduokite, kad turite vieną galingą kompiuterį, bet galite jame paleisti penkias skirtingas operacines sistemas vienu metu, ir kiekviena iš jų veiks nepriklausomai, tarsi būtų atskirame kompiuteryje. Štai kas yra virtualizacija.
Ši technologija atsirado ne iš tuščios vietos. Anksčiau kiekvienas serveris būdavo naudojamas tik 10-15% savo galimybių – likusią dalį laiko jis tiesiog tingėjo. Įsivaizduokite, kad perkate Ferrari, bet naudojate jį tik važinėti į parduotuvę už kampo. Virtualizacija leido išspausti iš techninės įrangos maksimalų efektyvumą.
Kaip visa tai prasidėjo ir kur mus atvedė
Virtualizacijos šaknys siekia dar 1960-uosius metus, kai IBM sukūrė pirmuosius mainframe kompiuterius su virtualizacijos galimybėmis. Tuomet tai buvo būtinybė – tie milžiniški kompiuteriai kainavo tiek, kiek nedidelis namas, todėl reikėjo išspausti iš jų viską, ką įmanoma. IBM sukūrė sistemą, kuri leido vienam mainframe dirbti kaip keliems atskiroms mašinoms.
Tačiau tikrasis virtualizacijos renesansas prasidėjo apie 1999-uosius, kai VMware išleido savo produktą x86 architektūros kompiuteriams. Staiga virtualizacija tapo prieinama ne tik didžiųjų korporacijų mainframe’ams, bet ir paprastiems serveriams, kuriuos naudojo visos įmonės. Tai buvo revoliucija – lyg staiga kiekvienas galėtų turėti savo asmeninį orkestro dirigentą, kuris koordinuotų visus resursus.
Šiandien virtualizacija yra visur. Kai naudojatės Google paslaugomis, žiūrite Netflix, ar net skaitote šį straipsnį – didžiulė tikimybė, kad už viso to slypi virtualizuota infrastruktūra. Debesų kompiuterija, apie kurią dabar visi kalba, iš esmės yra virtualizacija milžiniškame maste.
Kaip tai iš tikrųjų veikia po gaubtu
Virtualizacijos šerdyje yra specialus programinės įrangos sluoksnis, vadinamas hipervizoriumi arba virtualios mašinos monitoriumi. Tai tarsi dirigentas orkestre, kuris koordinuoja, kaip fiziniai resursai – procesorius, atmintis, diskai – dalijami tarp kelių virtualių mašinų.
Yra du pagrindiniai hipervizorių tipai. Pirmojo tipo hipervizoriai (bare-metal) įdiegiami tiesiogiai ant aparatinės įrangos, be jokios pagrindinės operacinės sistemos. Tai kaip turėti specialų valdiklį, kuris tiesiogiai bendrauja su kompiuterio komponentais. VMware ESXi, Microsoft Hyper-V Server, Citrix XenServer – tai visi pirmojo tipo hipervizoriai, kuriuos dažniausiai naudoja įmonės.
Antrojo tipo hipervizoriai veikia ant įprastos operacinės sistemos kaip programa. VirtualBox, VMware Workstation, Parallels Desktop – šie įrankiai leidžia paprastiems vartotojams paleisti Linux’ą Windows kompiuteryje arba atvirkščiai. Tai patogiau namų vartotojams, bet šiek tiek lėčiau, nes yra papildomas tarpinis sluoksnis.
Kai sukuriate virtualią mašiną, hipervizoriui nurodote, kiek procesoriaus branduolių, atminties ir disko vietos jai skirti. Hipervizoriaus programinė įranga tada sukuria virtualius komponentus – virtualų procesorių, virtualią atmintį, virtualų tinklo adapterį. Virtuali mašina “mato” šiuos komponentus kaip tikrus ir dirba su jais visiškai normaliai.
Konteineriai – virtualizacijos jaunesnis brolis
Pastaraisiais metais šalia tradicinės virtualizacijos išpopuliarėjo konteineriai. Docker, Kubernetes – šie žodžiai dabar skamba kiekviename IT susitikime. Bet kuo konteineriai skiriasi nuo virtualių mašinų?
Virtualios mašinos virtualizuoja visą kompiuterį – kiekviena turi savo operacinę sistemą, branduolį, visus reikalingus failus. Tai tarsi turėti kelis atskirus butus name, kiekvienas su savo vamzdynais, elektros instaliacija ir visu kitu. Konteineriai veikia kitaip – jie dalijasi ta pačia operacine sistema ir branduoliu, bet turi izoliuotas aplikacijų aplinkas. Tai labiau primena kambarius viename bute – visi naudoja tą patį šildymą ir elektrą, bet kiekvienas kambarys yra atskiras.
Konteineriai yra daug lengvesni ir greičiau paleidžiami. Virtuali mašina gali užimti kelis gigabaitus ir paleisti kelias minutes, o konteineris – tik keliasdešimt megabaitų ir paleisti per sekundes. Tačiau konteineriai nėra tokie izoliuoti kaip virtualios mašinos – jei kažkas nutinka pagrindinio branduolio lygmenyje, tai gali paveikti visus konteinerius.
Praktiniai panaudojimo atvejai realiame gyvenime
Virtualizacija nėra tik IT geekų žaislas – ji sprendžia realias problemas. Įmonės, turinčios dešimtis ar šimtus serverių, anksčiau turėjo milžiniškas serverių sales, kurios rijo elektrą kaip bepročiai. Dabar ta pati apimtis darbo gali būti atliekama ant kelių galingų fizinių serverių su virtualizacija.
Programuotojai naudoja virtualizaciją kasdien. Reikia išbandyti, kaip programa veiks skirtingose operacinėse sistemose? Vietoj to, kad turėtum penkis skirtingus kompiuterius, sukuri penkias virtualias mašinas. Reikia testuoti naują programinės įrangos versiją, bet nesinori gadinti pagrindinės sistemos? Sukuri virtualią mašiną, eksperimentuoji, o jei kas nors sugenda – tiesiog ją ištrini ir sukuri naują.
Saugumo specialistai virtualizaciją naudoja analizuodami virusus ir kenkėjiškas programas. Galima paleisti įtartiną programą izoliuotoje virtualioje mašinoje ir stebėti, ką ji daro, be rizikos užkrėsti tikrą kompiuterį. Tai kaip turėti saugią laboratoriją pavojingoms medžiagoms tirti.
Švietimo įstaigos virtualizaciją naudoja studentams mokyti. Vietoj to, kad kiekvienam studentui reikėtų atskirų kompiuterių su skirtingomis sistemomis, galima sukurti virtualias mašinas, kurias studentai gali naudoti mokydamiesi administravimo, programavimo ar kibernetinio saugumo.
Debesų kompiuterija – virtualizacija steroidiuose
Kai kalbame apie AWS, Microsoft Azure ar Google Cloud, iš esmės kalbame apie virtualizaciją milžiniškame maste. Šie debesų paslaugų teikėjai turi tūkstančius galingų serverių, ant kurių sukuria milijonus virtualių mašinų savo klientams.
Kai jūs “nuomojatės” serverį AWS, jūs negaunate fizinio serverio – gaunate virtualią mašiną, kuri veikia ant jų infrastruktūros. Tai leidžia debesų paslaugų teikėjams efektyviai valdyti resursus – jei jums reikia daugiau galios, jie gali greitai pridėti ją jūsų virtualiai mašinai. Jei naktį jūsų sistema naudojama mažiau, jie gali sumažinti resursus ir juos skirti kitiems klientams.
Elastingumas yra didžiulis virtualizacijos privalumas debesyje. Įsivaizduokite internetinę parduotuvę, kuri normaliai turi 1000 lankytojų per dieną, bet Juodojo penktadienio išpardavimo metu – 50000. Su fiziniais serveriais reikėtų turėti pakankamai galios tiems 50000, net jei ji naudojama tik vieną dieną per metus. Su virtualizacija debesyje galite automatiškai padidinti resursus išpardavimo metu ir sumažinti juos vėliau.
Problemos ir iššūkiai, apie kuriuos retai kas kalba
Virtualizacija nėra tobula. Viena didžiausių problemų – našumo nuostoliai. Nors šiuolaikinė virtualizacija yra labai efektyvi, vis tiek yra nedidelis našumo sumažėjimas, palyginti su tiesioginiu darbu ant fizinės aparatinės įrangos. Tai gali būti 5-10%, o kai kuriose specifinėse užduotyse – ir daugiau.
Saugumo klausimas taip pat svarbus. Jei užpuolikas įsilaužia į hipervizorių, jis potencialiai gali pasiekti visas virtualias mašinas. Tai kaip turėti pagrindinį raktą nuo visų butų name. Todėl hipervizorių saugumas yra kritiškai svarbus, ir gamintojų reguliariai išleidžiami saugumo atnaujinimai.
Licencijavimas gali būti sudėtingas. Kai kurios programos licencijuojamos pagal fizinių procesorių skaičių, kitos – pagal virtualių mašinų skaičių. Įmonės kartais susiduria su netikėtomis licencijavimo sąnaudomis, kai pradeda intensyviai naudoti virtualizaciją.
Resursų planavimas reikalauja patirties. Lengva sukurti per daug virtualių mašinų ant vieno fizinio serverio ir tada viskas pradeda lėtėti. Tai vadinama “over-provisioning” problema – kai teoriškai visko užtenka, bet praktiškai sistema stringa, nes visi nori resursų vienu metu.
Ateities vizija ir kur link judame
Virtualizacija nuolat evoliucionuoja. Dabar matome judėjimą link “serverless” architektūrų, kur net nereikia galvoti apie virtualias mašinas – tiesiog įkeliate kodą, ir jis vykdomas automatiškai. Tai dar vienas abstrakcijos lygmuo virš virtualizacijos.
Edge computing – dar viena tendencija. Vietoj to, kad viskas vyktų centriniuose debesų centruose, virtualizacija pereina arčiau vartotojų – į mažesnius duomenų centrus, net į 5G bazines stotis. Tai leidžia sumažinti vėlavimus ir pagreitinti paslaugas.
Dirbtinio intelekto ir mašininio mokymosi užduotys kelia naujus iššūkius virtualizacijai. Šios užduotys reikalauja daug grafikos procesorių (GPU) galios, ir virtualizuoti GPU yra sudėtingiau nei paprastus procesorius. Tačiau technologijos vystosi, ir dabar jau galima efektyviai virtualizuoti ir GPU.
Kvantinė kompiuterija gali būti kitas didelis žingsnis. Nors dar labai anksti, jau dabar galvojama, kaip virtualizuoti kvantinius kompiuterius, kad jų brangūs resursai būtų naudojami efektyviai.
Virtualizacija tapo tokia įprasta ir neatsiejama nuo šiuolaikinės IT infrastruktūros, kad dažnai net nesusimąstome apie ją. Kai naudojatės beveik bet kokia internetine paslauga, didžiulė tikimybė, kad kažkur fone dirba virtualizuota sistema. Tai technologija, kuri padarė IT pasaulį lankstesnį, efektyvesnį ir prieinamesnį, ir jos reikšmė tik augs ateityje.

