Paravirtualizacija
Visoko učinkovita vrsta virtualizacije hardverskih komponenti računala.
U računalstvu, paravirtualizacija ili para-virtualizacija je virtualizacijska tehnika koja predstavlja softversko sučelje za virtualna računala (strojeve) koje je slično, ali ne i identično, osnovnom hardversko-softverskom sučelju.
Namjera modificiranog sučelja je smanjiti dio vremena izvršenja gosta (virtualnog računala) provedenog u izvođenju operacija koje je znatno teže izvoditi u virtualnom okruženju u usporedbi s nevirtualiziranim okruženjem. Paravirtualizacija pruža posebno definirane 'priključke' koji omogućuju gostu(ima) i domaćinu (hostu/hipervizoru) da zatraže i potvrde te zadatke, koji bi se inače izvršili u virtualnoj domeni (gdje je izvedba znatno lošija). Uspješna paravirtualizirana platforma može omogućiti da hipervizor bude jednostavniji (premještanjem izvršavanja kritičnih zadataka s virtualne domene na domenu domaćina odnosno hipervizora) i/ili smanjiti ukupnu degradaciju izvedbe strojnog izvršavanja unutar virtualnog računala.
Razvoj paravirtualizacije za Linux počeo je 2006. godine, a pokrenule su ga tvrtke: IBM, VMware, Xen i Red Hat. Tvrtka Red Hat je 2008. objavila VirtIO[1] paravirtualizaciju za KVM i Linux, a VirtIO upravljački programi za Microsoft Windows također su dostupni od tada.
VirtIO je standardizirano sučelje koje virtualnim računalima (strojevima) omogućuje pristup pojednostavljenim "virtualnim" uređajima, kao što su blok uređaji, mrežni adapteri i konzole. Pristup uređajima putem VirtIO-a na virtualnom računalu poboljšava performanse u odnosu na tradicionalnije emulirane uređaje, jer VirtIO uređaji zahtijevaju samo minimalno postavljanje i konfiguraciju potrebnu za slanje i primanje podataka, dok glavno računalo upravlja postavljanjem/konfiguracijom i dohvaćanjem/slanjem podataka te osigurava pristup fizičkom hardveru.[2][3]
Naime kod potpune virtualizacije hipervizor mora emulirati sav hardver virtualnog računala:
- Matičnu ploču sa svojim BIOSom i emuliranim sklopovljem, čipset i sve djelove matične ploče, kao i centralnog procesora (CPU).
- Diskovnog kontrolera sa svojim BIOSom i emuliranim sklopovljem te sâmih diskova.
- Mrežne kartice (sučelja) sa svojim BIOSom i emuliranim sklopovljem.
- Grafičke kartice (sučelja) sa svojim BIOSom i emuliranim sklopovljem.
- ... svih ostalih kompomenti virtualnog računala, kao da se radi o fizičkom računalu.
To znači, da se primjerice za mrežnu komunikaciju, od strane hipervizora mora emulirati mrežna kartica (primjerice e1000e [za recimo Intel PRO/1000 PCI-E (82563][4] mrežnu karticu), što znači da se za cijelu mrežnu kartica moraju emulirati sve njene značajke, kao i njen pripadajući BIOS. Pri tome se veći dio emulacije odrađuje u softveru. Takva emulirana mrežna kartica ubacuje se unutar virtualnog računala, koju on dalje koristi.
Jasno je da takav rad unosi određena kašnjenja i usporavanja u obradi mrežnih paketa, zbog emulacije hardvera. Ne zaboravimo da je primjerice kod mreža koje imaju propusnost od 1Gbps, ako se koriste najmanji mrežni paketi (64 bajta), potrebno primiti/poslati (obraditi) 1.488.000 paketa u sekundi (1.49 milijuna), što postaje problem i za najsnažnija računala.
Sada dolazimo do paravirtualizacije i konkretno do VirtIO kao jedne od metoda paravirtualizacije.[5] Naime ako se ona koristi, na primjer za mrežne kartice, tada više nema potrebe za emuliranjem hardvera mrežne kartice. To radi tako da hipervizor propušta pristup donjem dijelu VirtIO mrežne komponente (back-end dio) i prosljeđuje ga unutar virtualnog računala (taj dio se zove front-end dio). Upravo u front-end dijelu, u virtualnom računalu, se instalira upravljački program (konkretno virtio-net) i takva mrežna kartica se koristi kao normalna mrežna kartica sa svim svojim standardnim mogućnostima.[6]
Najčešći VirIO uređaji u primjeni danas su:
- VirtIO PCI - koji predstavlja PCI sabirnicu za VirtIO uređaje.
- VirtIO block - koji predstavlja virtualni disk uređaj.
- VirtIO net - koji predstavlja virtualno mrežno sučelje.
- VirtIO balloon - koji predstavlja sučelje prema RAM memoriji (to jest njenom korištenju unutar virtualnog računala).
- VirtIO QXL/VirGL GPU - koja predstavlja posebne grafičke kartice (VirtIO).
- VirtIO RNG - koji predstavlja sučelje prema hardverskom generatoru slučajnih brojeva
- ..
Podrška za VirtIO postoji za sljedeće operativne sustave:
- Linux - standardno dolazi uz većinu distribucija Linuxa (već u kernelu, ili kao kernel moduli).
- Windows - instalacijom iz javno dostupne ISO datoteke.
- FreeBSD - standardno dolazi već u kernelu, ili kao kernel modul.
- ...
- ↑ VirtIO 1.1. OASIS-open. OASIS-open. Pristupljeno 10. kolovoza 2022.
- ↑ VirtIO intro. OSdev.org. OSdev.org. Pristupljeno 10. kolovoza 2022.
- ↑ QEMU/Devices/Virtio - Wikibooks, open books for an open world. en.wikibooks.org (engleski). Pristupljeno 24. studenoga 2022.
- ↑ Intel 82563. intel.com. Intel. Pristupljeno 10. kolovoza 2022.
- ↑ Horvat, Hrvoje. 6. srpnja 2023. Operativni sustavi i računalne mreže - Linux u primjeni. Hrvoje Horvat. Osijek. str. 1081–1082. doi:10.5281/zenodo.8119310. ISBN 978-953-59438-9-1CS1 održavanje: datum i godina (link)
- ↑ VirtIO intro. IBM.org. IBM.org. Pristupljeno 10. kolovoza 2022.