Wirtualizacja Wirtualizacja Piotr Sikora Tomasz Ziółkowski 1
Plan wykładu Pojęcie wirtualizacji Historia zagadnienia Kryterium realizowalności VM Dlaczego stosować wirtualizację? Rodzaje wirtualizacji Dostępne implementacje 2
Definicja wirtualizacji technique for hiding the physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources. This includes making a single physical resource (such as a server, an operating system, an application, or storage device) appear to function as multiple logical resources; or it can include making multiple physical resources (such as storage devices or servers) appear as a single logical resource. - Virtualization: Exposing the Intangible Enterprise, 2006, Enterprise Management Associates 3
Definicja wirtualizacji Wirtualizacja ma na celu definiowanie dowolnych zasobów (dane jak również moc obliczeniowa), do których dostęp nie jest ograniczony poprzez: - położenie geograficzne - fizyczną konfigurację - implementacje 4
Historia - początki 1960 Atlas 1960s, Manchester University and Ferranti Ltd. program nadzorujący Supervisor 1964 M44/44X Project - wirtualna maszyna oparta o mainframe IBM 7044(M44), maszyny wirtualne korzystały z wirtualnej pamięci i wieloprogramowania. 1965 CP40 - wirtualna maszyna oparta na IBM 860/40 1965 IBM 360/67 - pierwszy 32-bitowy komputer wspierający pełna wirtualizację 1967 CP67 - (następca CP40) wirtualna maszyna oparta na IBM 360/67 5
Historia - kontynuacja 1970 VM/370 - seria popularnych VM bazujących na CP67 -------------------------------------------------------------- 1999 Pierwsza wirtualna platforma dla IA-32 VMware Virtual Platform 2001 x86 Server Virtualization product 2003 Microsoft Virtual PC - technologia wirtualizacji na poziomie maszynowym 6
Kryterium realizowalności VM Własności maszyny wirtualnej: - Odpowiedniość - Kontrola zasobów - Wydajność 7
Kryterium realizowalności VM Zbiory instrukcji: - Instrukcje uprzywilejowane - Instrukcje wrażliwe ze względu na kontrolę - Instrukcje wrażliwe ze względu na wykonanie 8
Kryteriur realizowalności VM Kryterium PopkaGoldberga (1974): Dla każdego standardowego komputera trzeciej generacji wirtualna maszyna może zostać skonstrukowana, jeśli zbiór instrukcji wrażliwych jest podzbiorem zbioru instrukcji uprzywilejowanych. Udowodniono, iż można zbudować maszynę wirtualną nie spełniająca ww. twierdzenia (parawirtualizacja) 9
Dlaczego stosować wirtualizację? Logiczna agregacja jeden logiczny serwer www, farma fizycznych serwerów Uruchamianie 'spadkowych' aplikacji emulacja Zapewnianie bezpieczeństwa nieznane aplikacje uruchamiane na izolowanych maszynach wirtualnych Tworzenie środowisk z konkretnymi gwarancjami, restrykcjami oraz regułami szeregowania zadań (testowanie technologii np. QoS) 10
Dlaczego stosować wirtualizację? Wirtualizacja fizycznych zasobów, które w rzeczywistości nie istnieją Uruchamianie kilku systemów operacyjnych na jednym hoście. Potencjalnie największe możliwości debugowania. Ochrona i kontrolowanie błędów Testowanie oprogramowania typu klient-serwer 11
Dlaczego stosować wirtualizację? Traktowanie aplikacji jako osobnych 'urządzeń' poprzez uruchamianie ich na osobnych wirtualnych maszynach Eksperymenty izolacja zapewnie duże bezpieczeństwo pracy Uruchamianie systemów operacyjnych w środowisku multiprocesorowym Ułatwienie zarządzania popularnymi zadaniami (backup, migracja systemów, odzyskiwanie danych) 12
Dlaczego stosować wirtualizację? Uniezależnienie oprogramowania od platformy sprzętowej (JVM) zapewnianie kompatybilności Implementacja OS emulacja procesorów, które jeszcze nie są dostępne Wirtualizacja jest fajna... :) 13
Rodzaje wirtualizacji - Emulacja Emulacja pełna wirtualizacja z dynamiczną rekompilacją kodu. Pozwala na uruchamianie systemu operacyjnego 'gościa' bez żadnej ingerencji w jego kod. Maszyna wirtualna symuluje całe środowisko sprzętowe. Przykładowe realizacje: Bochs, PearPC 14
Rodzaje wirtualizacji Native Pełna (natywna) wirtualizacja Wirtualna maszyna symuluje wystarczającą część fizycznego środowiska, by umożliwić niemodyfikowanemu OS 'gościa' (zaimplementowanego dla odpowiedniej rzeczywistej architektury) izolowane uruchomienie. Przykładowe realizacje: CP-40, VMware Workstation 15
Rodzaje wirtualizacji - Partial Wirtualizacja częściowa (również wirtualiacja przestrzeni adresowej) wirtualna maszyna symuluje kilka instancji dużej części rzeczywistego środowiska fizycznego (nie całość!), pozwala na współdzielenie zasobów i izolację procesów, lecz nie zezwala na uruchomienie izolowanego OS. Istotna z historycznego punktu widzenia (IBM M44/44X) 16
Rodzaje wirtualizacji - Para. Parawirtualizacja - od maszyny wirtualnej nie wymaga się by symulowała sprzęt, lecz aby dostarczała odpowiedniego API, z którego korzysta zmodyfikowany OS 'gościa'. 'Gość' odwołuje się do hypervisora(odpowiednik supervisora w OS). Przykłady realizacji: Xen 17
Rodzaje wirtualizacji Poziom OS Wirtualizacja na poziomie OS (zwielokrotnianie OS) umożliwia uruchomienie kilku wirtualnych serwerów na jednym fizycznym serwerze. OS 'gościa' współdzieli OS hosta, przez co należy rozumieć, iż OS 'gościa' jest zaimplementowany przy użyciu tego samego jądra co OS hosta. Aplikacja uruchomiona na systemie wirtualnym stanowi samodzielny system (bezpieczeństwo). Przykładowe realizacje: Linux-VServer, Virtuozzo 18
Rodzaje wirtualizacji - Application Wirtualizacja aplikacji działa w lokalnym OS, z wykorzystaniem lokalnych zasobów, wewnątrz odpowiedniej wirtualnej maszyny. W odróżnieniu od aplikacji zainstalowanych w lokalnym OS, aplikacje wirtualne działają w wirtualnych mini-środowiskach zawierających zasoby umożliwiające prawidłowe wykonanie aplikacji (np. Rejestry I/O, pliki, zmienne środowiskowe). Wirtualna maszyna jest w tym przypadku warstwą pomiędzy OS-em hosta a uruchamianą aplikacją. Przykłady realizacji: JVM, Softricity 19
Dostępne rozwiązania Emulacja procesora: Bochs, PearPC, QEMU. 20
Bochs Host: Intel x86, Alpha, AMD64, ARM, PowerPC, SPARC. Gość: Intel x86, AMD64. AIX, BeOS, IRIX, Linux, Mac OS X, Windows. *BSD, Linux, MS-DOS, Windows. 21
PearPC Host: Intel x86, AMD64, PowerPC. Gość: PowerPC. Darwin, Linux, Mac OS X. Linux, Mac OS X, NetBSD, Windows. 22
PearPC 23
QEMU Host: Intel x86, Intel IA-64, Alpha, AMD64, ARM, MIPS, PowerPC, SPARC, SPARC64. Gość: Intel x86, AMD64, ARM, MIPS, SPARC, SPARC64 PowerPC. BeOS, FreeBSD, Linux, Mac OS X, NetBSD, Solaris, Windows. BeOS, FreeBSD, Linux, Mac OS X, Windows. 24
Dostępne rozwiązania Natywna wirtualizacja: Microsoft: Virtual PC, Virtual Server, Parallels: Workstation, Desktop for Mac, VMware: Player, Server, ESX Server. 25
Microsoft Virtual PC/Server Host: Gość: Intel x86, AMD64. Windows (XP/2003). Intel x86. Linux (RedHat/SuSE), Windows (XP/2003). 26
Parallels Desktop/Workstation Host: Gość: Intel x86. Linux, Mac OS X, Windows. Intel x86. Darwin, FreeBSD, Linux, Mac OS X, MS-DOS, Solaris, Windows. 27
Parallels Desktop for Mac 28
Parallels Desktop for Mac 29
VMware Player/Server Host: Gość: Intel x86, AMD64. Intel x86, AMD64. Linux, Windows. FreeBSD, Linux, Mac OS X, MS-DOS, NetWare, Solaris, Windows. 30
VMware Server 31
VMware Server 32
VMware ESX Server Host: Gość: Intel x86, AMD64. brak. Intel x86. FreeBSD, Linux, Mac OS X, MS-DOS, NetWare, Solaris, Windows. 33
VMware ESX Server 34
VMware ESX Server (High Availability) 35
Dostępne rozwiązania Parawirtualizacja: Xen. 36
Xen 2.0 Host: Gość: Intel x86, AMD64. Intel x86, AMD64. Linux (port), NetBSD (port). FreeBSD (port), Linux (port), Minix (port), NetBSD (port), NetWare (port), OpenBSD (port), OpenSolaris (port), Plan 9 (port). 37
Xen 3.0 + Intel VT Host: Gość: Intel x86 (VT). Linux. Intel x86 (VT). Linux, Solaris 10, Windows (XP/2003). 38
Xen 39
Dostępne rozwiązania Zwielokrotnianie instancji systemy operacyjnego: FreeBSD jail(8), Solaris Containers, SWSoft: Virtuozzo, openvz. 40
FreeBSD jail(8) Host: Intel x86, Intel IA-64, Alpha, AMD64, PowerPC, SPARC64. Gość: ten sam. ten sam. DragonFlyBSD, FreeBSD, HomeBSD. 41
Solaris Containers Host: Intel x86, SPARC, SPARC64. Gość: ten sam. ten sam. Solaris 10. 42
Virtuozzo Host: Intel x86, Intel IA-64, Alpha, AMD64, ARM, MIPS, PowerPC, SPARC, VAX. Gość: ten sam. ten sam. Linux, Windows. 43
Virtuozzo 44
openvz Host: Intel x86, Intel IA-64, Alpha, AMD64, ARM, MIPS, PowerPC, SPARC, VAX. Gość: ten sam. ten sam. Linux. 45
Wirtualizacja Pytania? 46