Virtualizacija

Izvor: Wikipedija

U računarstvu, virtualizacija je način stvaranja virtualne, nehardverske verzije računalnih resursa.[1] To može uključivati virtualne računarske hardverske platforme, uređaje za pohranjivanje i mrežne resurse.[2] Za korisnika, čovjeka ili program, u principu nema razlike između stvarne i virtualne verzije stroja.[3] Općenito, postoje dvije vrste virtualizacije:

  • Potpuna virtualizacija, znana i kao hardverska virtualizacija.[4]
  • Virtualizacija na razini operacijskog sustava (kontejneri).

Potpuna virtualizacija[uredi | uredi kôd]

Potpuna virtualizacija naziva se i hardverska virtualizacija ili virtualizacija platforme, a odnosi se na stvaranje virtualnog računala (stroja) koji se ponaša kao pravo računalo s operativnim sustavom. Softver koji se izvodi na ovim virtualnim računalim odvojen je od temeljnih hardverskih resursa. Na primjer, računalo koje pokreće Debian Linux može ugostiti virtualno računalo koje izgleda kao stvarno (fizičko) računalo s operativnim sustavom Microsoft Windows. Nadalje, i softver temeljen na operativnom sustavu Windows može se također pokrenuti na tom virtualnom računalu. U hardverskoj virtualizaciji, glavno računalo se naziva host i ono je računalo koje se koristi u virtualizaciji, a gostujuće računalo (engl. guest) je virtualno računalo.

Hipervizor pokreće gostujuće operativne sustave s virtualnom operativnom platformom i upravlja izvođenjem gostujućih operativnih sustava. Za razliku od emulatora, gost (unutar virtualnog računala) izvršava većinu instrukcija na izvornom hardveru (ako to hardver podržava). Višestruke instance različitih operativnih sustava mogu dijeliti virtualizirane hardverske resurse: na primjer, instance Linuxa, Windowsa i macOS-a mogu se sve izvoditi na jednom fizičkom (primjerice x86) računalu.

Pojednostavljeno, hipervizor je komponenta operativnog sustava instalirana direktno na hardver (računalo/poslužitelj). Hipervizor pomoću svojih komponenti ima više zadataka, od rezerviranja hardverskih resursa fizičkog računala i dodjeljivanja tih resursa virtualnom računalu, do emuliranja hardvera koji se predstavlja virtualnom računalu, poput: matične ploče, čipseta i njihovog BIOS-a, disk kontrolera i njegovog BIOS-a, mrežne kartice i njenog BIOS-a, grafičke kartice i njenog BIOS-a itd. Potrebno je, dakle, emulirati sve komponente računala.

Prednost virtualizacije leži u činjenici da se gotovo svaki x86-kompatibilni operativni sustav može pokrenuti pod centralnom administracijom hipervizora bez dodatnih prilagodbi. Ovakav način rada naziva se potpuna virtualizacija ili hardverski virtualni stroj (HVM). Da bi to sve radilo, potrebna je i hardverska podrška za virtualizaciju unutar modernih procesora (CPU-a).

Na Linuxu je hipervizor KVM (Kernel-based Virtual Machine)[5], a njegova komponenta zadužena za emuliranje hardvera je QEMU.[6]


Ugniježđena virtualizacija (nested virtualization)[uredi | uredi kôd]

Mnogi sustavi za virtualizaciju kao što su primjerice Proxmox VE i OpenStack podržavaju i takozvanu ugniježđenu virtualizaciju (engl. nested virtualization). Ona se odnosi na način rada u kojem je moguće pokrenuti hipervizor, poput Linux KVM ili drugih (pr. VMware ESXi, Microsoft Hyper-V, VirtualBox i sl.), unutar virtualnog računala, ali koji radi unutar drugog hipervizora, umjesto na stvarnom hardveru. Drugim riječima, imate hipervizor instaliran na hardver, na kojemu se pokreće gostujući hipervizor i to kao virtualno računalo, a koji ponovno može pokretati vlastita virtualna računala. To je vrlo korisno za testiranje; primjerice ako na postojećem poslužitelju za virtualizaciju želite pokrenuti novu inačicu hipervizora i sustava za virtualizaciju (pr. Proxmox VE ili OpenStack i sl.) i unutar njega testirati nove značajke i pokretati virtualna računala pod njim. Isto je i s drugim hipervizorima (pr. VMware ESXi, Microsoft Hyper-V, VirtualBox i sl.) koje možda samo želite pokrenuti unutar postojećeg sustava za virtualizaciju (kao hipervizorom) i nešto testirati na njima.[7]

Osim testne primjene, moguće je unutar ovakve ugniježđene virtualizacije pokretati virtualna računala koja se samo prema potrebi mogu ponašati kao hipervizori.[8] To je konkretno slučaj s nekim emulatorima mrežnih uređaja i mreže, poput:

Virtualizacija na razini operacijskog sustava[uredi | uredi kôd]

Virtualizacija na razini operativnog sustava koristi određene metode izolacije resursa na razini operativnog sustava, poput Linux kontejnera (pr. LXC)[11], gdje sve instance (obično zvane kontejneri) moraju dijeliti kernel (jezgru) operativnog sustava instaliranog na fizičko računalo. Iako se operativni sustavi za goste mogu razlikovati u korisničkom prostoru, kao što su različite distribucije Linuxa, koje koriste isti kernel (od fizičkog računala), u njih (kontejnere) se ne mogu instalirati drugačiji operativni sustavi.

Ako na fizičkom računalu imamo instaliran Linux (pr. Debian distribucija), to znači da kao gostujući Linux kontejner možemo imati bilo koju drugu distribuciju Linuxa (pr. Ubuntu, Rocky Linux, ... ), ali ne i primjerice Windows ili macOS. To je tako jer Linux na fizičkom računalu, prema Linux kontejneru prosljeđuje sve svoje resurse, preko mehanizama izolacije i ograničavanja resursa (tzv. cgroups )[12] te dodatno preko imeničnih izolacijskih prostora Linuxa (Linux namespace). Dok aplikacije unutar Linux kontejnera s fizičkim računalom (Linuxom) komuniciraju preko izoliranih imeničnih prostora, pomoću sistemskih poziva Linuxa.

Primjeri ovakve virtualizacije su:

  • Kontejnerske tehnologije u Linuxu poput OpenVZ, LXC, Docker, Podman
  • Kontejneri u Solarisu (Unix)
  • FreeBSD jails.

Pogledajte i[uredi | uredi kôd]

Izvori[uredi | uredi kôd]

  1. Virtualization in education (PDF). IBM. Listopad 2007. Pristupljeno 6. srpnja 2010.. A virtual computer is a logical representation of a computer in software. By decoupling the physical hardware from the operating system, virtualization provides more operational flexibility and increases the utilization rate of the underlying physical hardware.
  2. Pariseau, Beth. 15. travnja 2011. KVM reignites Type 1 vs. Type 2 hypervisor debate. SearchServerVirtualization. TechTarget. Pristupljeno 29. siječnja 2013.
  3. Virtualizacija računala (PDF). CARNet. Pristupljeno 23. studenoga 2022.
  4. Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM. kernelnewbies.org. 5. veljače 2007. Pristupljeno 16. lipnja 2014.
  5. KVM FAQ: What do I need to use KVM?
  6. QEMU Internals. qemu.weilnetz.de[neaktivna poveznica]
  7. Nested Virtualization - Proxmox VE. pve.proxmox.com. Pristupljeno 9. prosinca 2022.
  8. KVM. KVM. KVM.org. Pristupljeno 10. kolovoza 2022.
  9. Getting Started with GNS3 | GNS3 Documentation. mother.github.io (engleski). Pristupljeno 9. prosinca 2022. |url-status=dead zahtijeva |archive-url= (pomoć)
  10. Features Key Features (engleski). Pristupljeno 9. prosinca 2022.
  11. Linux Containers - LXC - Introduction. linuxcontainers.org. Pristupljeno 9. prosinca 2022.
  12. What Are Namespaces and cgroups, and How Do They Work?. NGINX (engleski). 21. srpnja 2021. Pristupljeno 9. prosinca 2022.