Wirtualizacja - Poznań University of...

Preview:

Citation preview

1

Wirtualizacja

Wirtualizacja

Piotr SikoraTomasz Ziółkowski

2

Plan wykładu

■ Pojęcie wirtualizacji■ Historia zagadnienia■ Kryterium realizowalności VM■ Dlaczego stosować wirtualizację?■ Rodzaje wirtualizacji■ Dostępne implementacje

3

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

4

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

5

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

6

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

7

Kryterium realizowalności VM

Własności maszyny wirtualnej:

- Odpowiedniość

- Kontrola zasobów

- Wydajność

8

Kryterium realizowalności VM

Zbiory instrukcji:

- Instrukcje uprzywilejowane

- Instrukcje wrażliwe ze względu na kontrolę

- Instrukcje wrażliwe ze względu na wykonanie

9

Kryteriur realizowalności VM

■ Kryterium Popka-Goldberga (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)

10

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)

11

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

12

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)

13

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 ... :)

14

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

15

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

16

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)

17

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

18

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

19

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

20

Dostępne rozwiązania

■ Emulacja procesora: Bochs, PearPC, QEMU.

21

Bochs

■ Host: Procesor:

➔ Intel x86,➔ Alpha,➔ AMD64,➔ ARM,➔ PowerPC,➔ SPARC.

System operacyjny:➔ AIX,➔ BeOS,➔ IRIX,➔ Linux,➔ Mac OS X,➔ Windows.

■ Gość: Procesor:

➔ Intel x86,➔ AMD64.

System operacyjny:➔ *BSD,➔ Linux,➔ MS-DOS,➔ Windows.

22

PearPC

■ Host: Procesor:

➔ Intel x86,➔ AMD64,➔ PowerPC.

System operacyjny:➔ Linux,➔ Mac OS X,➔ NetBSD,➔ Windows.

■ Gość: Procesor:

➔ PowerPC.

System operacyjny:➔ Darwin,➔ Linux,➔ Mac OS X.

23

PearPC

24

QEMU

■ Host: Procesor:

➔ Intel x86,➔ Intel IA-64,➔ Alpha,➔ AMD64,➔ ARM,➔ MIPS,➔ PowerPC,➔ SPARC,➔ SPARC64.

System operacyjny:➔ BeOS,➔ FreeBSD,➔ Linux,➔ Mac OS X,➔ Windows.

■ Gość: Procesor:

➔ Intel x86,➔ AMD64,➔ ARM,➔ MIPS,➔ SPARC,➔ SPARC64➔ PowerPC.

System operacyjny:➔ BeOS,➔ FreeBSD,➔ Linux,➔ Mac OS X,➔ NetBSD,➔ Solaris,➔ Windows.

25

Dostępne rozwiązania

■ Natywna wirtualizacja: Microsoft:

➔ Virtual PC,➔ Virtual Server,

Parallels:➔ Workstation,➔ Desktop for Mac,

VMware:➔ Player,➔ Server,➔ ESX Server.

26

Microsoft Virtual PC/Server

■ Host: Procesor:

➔ Intel x86,➔ AMD64.

System operacyjny:➔ Windows (XP/2003).

■ Gość: Procesor:

➔ Intel x86.

System operacyjny:➔ Linux (RedHat/SuSE),➔ Windows (XP/2003).

27

Parallels Desktop/Workstation

■ Host: Procesor:

➔ Intel x86.

System operacyjny:➔ Linux,➔ Mac OS X,➔ Windows.

■ Gość: Procesor:

➔ Intel x86.

System operacyjny:➔ Darwin,➔ FreeBSD,➔ Linux,➔ Mac OS X,➔ MS-DOS,➔ Solaris,➔ Windows.

28

Parallels Desktop for Mac

29

Parallels Desktop for Mac

30

VMware Player/Server

■ Host: Procesor:

➔ Intel x86,➔ AMD64.

System operacyjny:➔ Linux,➔ Windows.

■ Gość: Procesor:

➔ Intel x86,➔ AMD64.

System operacyjny:➔ FreeBSD,➔ Linux,➔ Mac OS X,➔ MS-DOS,➔ NetWare,➔ Solaris,➔ Windows.

31

VMware Server

32

VMware Server

33

VMware ESX Server

■ Host: Procesor:

➔ Intel x86,➔ AMD64.

System operacyjny:➔ brak.

■ Gość: Procesor:

➔ Intel x86.

System operacyjny:➔ FreeBSD,➔ Linux,➔ Mac OS X,➔ MS-DOS,➔ NetWare,➔ Solaris,➔ Windows.

34

VMware ESX Server

35

VMware ESX Server (High Availability)

36

Dostępne rozwiązania

■ Parawirtualizacja: Xen.

37

Xen 2.0

■ Host: Procesor:

➔ Intel x86,➔ AMD64.

System operacyjny:➔ Linux (port),➔ NetBSD (port).

■ Gość: Procesor:

➔ Intel x86,➔ AMD64.

System operacyjny:➔ FreeBSD (port),➔ Linux (port),➔ Minix (port),➔ NetBSD (port),➔ NetWare (port),➔ OpenBSD (port),➔ OpenSolaris (port),➔ Plan 9 (port).

38

Xen 3.0 + Intel VT

■ Host: Procesor:

➔ Intel x86 (VT).

System operacyjny:➔ Linux.

■ Gość: Procesor:

➔ Intel x86 (VT).

System operacyjny:➔ Linux,➔ Solaris 10,➔ Windows (XP/2003).

39

Xen

40

Dostępne rozwiązania

■ Zwielokrotnianie instancji systemy operacyjnego: FreeBSD jail(8), Solaris Containers, SWSoft:

➔ Virtuozzo,➔ openVZ.

41

FreeBSD jail(8)

■ Host: Procesor:

➔ Intel x86,➔ Intel IA-64,➔ Alpha,➔ AMD64,➔ PowerPC,➔ SPARC64.

System operacyjny:➔ DragonFlyBSD,➔ FreeBSD,➔ HomeBSD.

■ Gość: Procesor:

➔ ten sam.

System operacyjny:➔ ten sam.

42

Solaris Containers

■ Host: Procesor:

➔ Intel x86,➔ SPARC,➔ SPARC64.

System operacyjny:➔ Solaris 10.

■ Gość: Procesor:

➔ ten sam.

System operacyjny:➔ ten sam.

43

Virtuozzo

■ Host: Procesor:

➔ Intel x86,➔ Intel IA-64,➔ Alpha,➔ AMD64,➔ ARM,➔ MIPS,➔ PowerPC,➔ SPARC,➔ VAX.

System operacyjny:➔ Linux,➔ Windows.

■ Gość: Procesor:

➔ ten sam.

System operacyjny:➔ ten sam.

44

Virtuozzo

45

openVZ

■ Host: Procesor:

➔ Intel x86,➔ Intel IA-64,➔ Alpha,➔ AMD64,➔ ARM,➔ MIPS,➔ PowerPC,➔ SPARC,➔ VAX.

System operacyjny:➔ Linux.

■ Gość: Procesor:

➔ ten sam.

System operacyjny:➔ ten sam.

46

Wirtualizacja

Pytania?