Przegląd technologii wirtualizacji
Technologie
Emulacja sprzętu
Podczas emulacji sprzętu emulowane są wszystkie komponenty (CPU, chipset, karty I/O, ...) komputera. Emulacja CPU tłumaczy informacje sprzętowe z emulowanego CPU dla natywnego procesora (np. emulacja PowerPC, ARM, SPARC, MIPS, ... na x86). Prowadzi to większego obciążenia, co wiąże się ze spadkiem wydajności. Systemy gościa mogą być eksploatowane bez konieczności dostosowania.
Przykłady emulacji sprzętu:
Wirtualizacja sprzętu
Podobnie jak w emulacji sprzętu są emulowane liczne komponenty (chipset, karty I/O, ...). Procesor nie jest jednak emulowany, niektóre rozkazy są przechwytywane i dostosowywane. W ten sposób w systemie gościa może być wykorzystywana jedynie architektura procesora, która jest zastosowana w systemie hosta. Przez co wydajność jest znacznie wyższa niż podczas emulacji sprzętu.
Systemy gościa mogą być eksploatowane bez konieczności dostosowania.
Przykłady wirtualizacji sprzętu:
- VMware vSphere, VMware Workstation, VMware Server
- Parallels Workstation
- MS Virtual PC for Windows, MS Virtual Server
- VirtualBox
- XEN od wersji 3 z Hardware Virtual Machine (HVM), wymaga procesorów z Intel-VT/AMD-V
Parawirtualizacja
W parawirtualizacji nie jest emulowany hardware systemu. Host oferuje natomiast specjalne API dla dostępu do sprzętu. W systemie gościa może być wykorzystywana architektura CPU, który jest fizycznie obecny w systemie hosta. System gościa (jądro) musi zostać dostosowany, ABI (Application Binary Interface) pozostaje niezmieniony.
Przykłady:
- XEN
- VMware vSphere (np. dla określonych systemów gościa z Linuksem przez interfejs Paravirt Ops - vide http://www.vmware.com/technical-resources/interfaces/paravirtualization.html)
Wirtualizacja systemu operacyjnego
Tutaj również nie jest przeprowadzana emulacja. Host i system gościa wykorzystują jedno jądro. Przez co w systemie gościa może być wykorzystywany tylko ten sam system operacyjny co w systemie hosta (np. Linux w Linuksie, różne dystrybucje są również możliwe). Ta technologia nie generuje dużego dodatkowego obciążenia, gdyż nie jest przeprowadzana emulacja i wywołania systemowe przebiegają przez jedno a nie dwa jądra. Systemy gościa mogą zostać uruchomione w ciągu kilku sekund.
Przykłady: