Wirtualizacja to nic innego, jak sposób na oddzielenie systemu operacyjnego, aplikacji, magazynu danych lub sieci od fizycznych zasobów sprzętowych poprzez dodanie między nimi dodatkowej, abstrakcyjnej warstwy. Sprawdźmy, jak działają i czym różnią się poszczególne techniki wirtualizacji – pełna wirtualizacja, parawirtualizacja i wirtualizacja na poziomie systemu operacyjnego.
Pełna wirtualizacja
W tej technice maszyna wirtualna symuluje wszystkie wymagane zasoby sprzętowe w ten sposób, by umożliwić uruchomienie niezmodyfikowanego systemu operacyjnego w odizolowanym środowisku. Zachodzi tu całkowite oddzielenie gościa (systemu operacyjnego działającego w maszynie wirtualnej) od fizycznego sprzętu poprzez dostarczenie mu symulowanego BIOS-u, urządzeń, pamięci, czy rdzeni procesora. Ten rodzaj wirtualizacji podzielić można na dwa typy różniące się sposobem akceleracji:
Pełna wirtualizacja z akceleracją programową (BT)
Ten rodzaj pełnej wirtualizacji polega w całości na translacji binarnej w celu wykonywania zestawów wrażliwych instrukcji (operacji I/O, przerwań, odwołań do pamięci) poprzez podmianę ich na niewrażliwe, możliwe do bezpośredniego wykonania. Konieczność wykonania translacji powoduje jednak powstanie narzutu spowalniającego wykonywanie instrukcji, co też przekłada się na niższą oferowaną wydajność.
Wirtualizację z akceleracją programową oferują m.in.:
- VirtualBox (dla 32-bitowych systemów operacyjnych gości)
- VMware Workstation (dla 32-bitowych systemów operacyjnych gości)
- VMware Server
Pełna wirtualizacja z akceleracją sprzętową (VT)
Akceleracja sprzętowa pozwala na eliminację znanej z poprzedniego rozwiązania translacji binarnej. Wszystkie instrukcje, także te wrażliwe, wykonywane są bezpośrednio z wykorzystaniem specjalnych mechanizmów dostarczanych przez procesory w architekturze x86 – Intel VT-x oraz AMD-V.
Oprogramowanie wykorzystywane do pełnej wirtualizacji z akceleracją sprzętową różni się typem nadzorcy (hypervisora) – rozróżniamy Typ 1 działający bezpośrednio na fizycznym sprzęcie niczym system operacyjny oraz Typ 2, w którym hypervisor uruchamiany jest na innym systemie operacyjnym.
Czytaj więcej: Hypervisor wirtualizacyjny typu 1 oraz typu 2 – co je różni? Jakie są zalety i wady poszczególnych rozwiązań?
Do Typu 1 zaliczyć można:
- VMware ESXi (wcześniej VMware ESX)
- KVM
- Microsoft Hyper-V
- Xen (w trybie pełnej wirtualizacji)
Natomiast do Typu 2:
- VMware Workstation (dla 64-bitowych systemów operacyjnych gości)
- VirtualBox (dla 64-bitowych systemów operacyjnych gości)
Parawirtualizacja
Parawirtualizacja działa inaczej od pełnej, klasycznej wirtualizacji. Nie jest tu wykorzystywana emulacja zasobów sprzętowych, a działanie maszyn wirtualnych zapewniane jest przez specjalne API hypervisora, które oferuje dostęp do sprzętu dla wykonywanych przez gościa wywołań nazywanych “hypercalls” dla instrukcji wrażliwych. Pozwala to na pełne wykorzystanie architektury procesora, co przekłada się na wydajność zbliżoną do pracy bezpośrednio na fizycznych zasobach. Systemy operacyjne (goście) wymagają obecności odpowiednich sterowników i są “świadome”, że działają w maszynach wirtualnych.
Z parawirtualizacji korzystają m.in.:
- Xen (w trybie parawirtualizacji)
- VirtualBox (w trybie parawirtualizacji)
- IBM LPAR
- Oracle VM (LDOM oraz OVM)
Wirtualizacja hybrydowa
Pełna wirtualizacja umożliwia uruchomienie niezmodyfikowanego systemu operacyjnego w maszynie wirtualnej, ale powoduje także znaczny narzut wydajnościowy. Zaradzić temu może parawirtualizacja, jednak w tej technice konieczna jest modyfikacja systemu operacyjnego gościa w ten sposób, by móc wywoływać API. Połączyć zalety i wyeliminować wady obu tych technik może wirtualizacja hybrydowa – w tej technice parawirtualizacja wykorzystywana jest do specyficznych operacji stanowiących wąskie gardło, takich jak I/O lub zadań wymagających ciągłego i częstego dostępu do pamięci. Pozostałe operacje są natomiast wykonywane przy użyciu pełnej wirtualizacji.
W trybie wirtualizacji hybrydowej działać mogą:
- Xen
- VMware ESXi
- Oracle VM (dla architektury x86)
Wirtualizacja na poziomie systemu operacyjnego
Znana także jako konteneryzacja, jedno z “modnych słów” ostatnich lat w branży IT. W tej technice to sam system operacyjny (host) umożliwia tworzenie odseparowanych środowisk z wykorzystaniem mechanizmów takich jak cgroups lub chroot. W ten sposób powstaje kontener, w którym uruchamiane jest oprogramowanie “nieświadome” istnienia innych kontenerów, co pozwala na ich izolację. Nie jest tu wykorzystywany żaden hypervisor, a wszelkie funkcje wywoływane przez działające w kontenerach oprogramowanie trafiają do systemu operacyjnego hosta wykonującego je bezpośrednio na fizycznym sprzęcie. Wirtualizacja na poziomie systemu operacyjnego oferuje w ten sposób najwyższą wydajność spośród wszystkich technik wirtualizacji z zachowaniem takich zalet jak izolacja, przenośność i możliwość przydzielania zasobów.
Oprogramowanie służące do konteneryzacji to m.in.:
- Docker
- Containerd
- LXC / LXD
- Podman
Dowiedz się więcej o konteneryzacji: Konteneryzacja – czym jest i dlaczego staje się tak popularna?