1 Z. SroczyńskiInżynieria programowania Wirtualizacja Zdzisław Sroczyński Politechnika Śląska Instytut Matematyki Inżynieria programowania Wirtualizacja Wirtualizacja to technologia umożliwiająca na uruchomienie dowolnego, standardowego systemu operacyjnego (systemu gościa - guest) pod kontrolą innego systemu operacyjnego (systemu gospodarza – host) w specjalnym środowisku. To środowisko stanowi oprogramowanie nazywane maszyną wirtualną, zapewniające przechwytywanie bezpośrednich odwołań do sprzętu generowanych przez system gościa.
2 Z. SroczyńskiInżynieria programowania Wirtualizacja Zastosowania wirtualizacji uruchamianie aplikacji przeznaczonych na różne systemy operacyjne bez konieczności restartu komputera optymalizacja wykorzystania zasobów sprzętowych poprzez uruchamianie wielu serwerów na jednej maszynie testowanie różnych rozwiązań bez konieczności posiadania/blokowania rzeczywistego sprzętu łatwość odtwarzania stanu maszyny w przypadku awarii – kopie maszyn wirtualnych/ migawki testowanie i uruchamianie oprogramowania
3 Z. SroczyńskiInżynieria programowania Wirtualizacja Wirtualizacja a emulacja Emulator całkowicie separuje system gościa od gospodarza Emulacja pozwala na symulowanie dowolnej architektury sprzętowej Wada emulacji: mniejsza wydajność Wirtualizacja przekazuje jak największą liczbę wywołań bezpośrednio do sprzętu – system gościa musi wspierać arch. sprzętową
4 Z. SroczyńskiInżynieria programowania Wirtualizacja Przykład emulatora :) Host > 2000MHz Gość
5 Z. SroczyńskiInżynieria programowania Wirtualizacja Przykład emulatora
6 Z. SroczyńskiInżynieria programowania Wirtualizacja Wirtualizacja - przykład
7 Z. SroczyńskiInżynieria programowania Wirtualizacja Poziomy emulacji - Emulacja
8 Z. SroczyńskiInżynieria programowania Wirtualizacja Emulacja -c.d. Na konkretnym sprzęcie (z działającym na nim systemem operacyjnym) tworzona jest całkowita iluzja innego sprzętu System operacyjny i aplikacje działające w ramach emulacji nie mają możliwości wykrycia „oszustwa” Każda instrukcja jest wirtualizowana, przez co emulowany system działa dużo wolniej niż na rzeczywistej maszynie Przykład: QEMU (IA-32, AMD64, MIPS, R4000, Sun's SPARC, ARM, PowerPC i inne)
9 Z. SroczyńskiInżynieria programowania Wirtualizacja Przykład - QEMU
10 Z. SroczyńskiInżynieria programowania Wirtualizacja Poziomy emulacji – Emulacja API
11 Z. SroczyńskiInżynieria programowania Wirtualizacja Emulacja API – c.d. Na ogół aplikacje napisane na konkretny system operacyjny korzystają tylko z określonego zestawu funkcji (API), odpowiedniego dla danego systemu operacyjnego Aby taka aplikacja mogła działać na innym systemie operacyjnym, wystarczy zaimplementować w nim odpowiednie funkcje Wada: rozwiązanie nieprzenośne Przykład: wine, WOW64
12 Z. SroczyńskiInżynieria programowania Wirtualizacja Poziomy emulacji – (pełna) wirtualizacja
13 Z. SroczyńskiInżynieria programowania Wirtualizacja Pełna wirtualizacja Polega na uruchomieniu kilku systemów na jednym sprzęcie (kompatybilnym z tymi systemami) w taki sposób, aby jak najwięcej instrukcji wykonywało się bezpośrednio Maksymalizuje korzystanie z rzeczywistego sprzętu i oprogramowania - maszyna wirtualizuje tylko „niebezpieczne” instrukcje Najwydajniejszy sposób wirtualizacji Brak możliwości instalowania innych systemów, innej architektury niż architektura hosta
14 Z. SroczyńskiInżynieria programowania Wirtualizacja Kryteria wirtualizacji (1974) Odpowiedniość – takie same zachowanie programu Kontrola zasobów – maszyna wirtualna w pełni kontroluje wszystkie wirtualizowane zasoby Wydajność – większa część instrukcji musi być wykonywana bez udziału maszyny wirtualnej Instrukcje wrażliwe – zmieniające/czytające konfigurację zasobów systemu operacyjnego Instrukcje uprzywilejowane – przerwanie lub wywołanie systemowe jeśli system jest w trybie użytkownika – system jest w trybie jądra - nie powodują przerwania ani wywołania systemowego Instrukcje wrażliwe –> podzbiór uprzywilejowanych !
15 Z. SroczyńskiInżynieria programowania Wirtualizacja Architektura x86 a wirtualizacja 4 poziomy ochrony (RINGs): – 0 – przeznaczony dla jądra – 3 – przeznaczony dla aplikacji 17 instrukcji, które są wrażliwe, a nie są chronione! Przykład: CALL, JMP, RET (czyszczenie rejestrów) Nowe rozwiązania (od 2006r.) – Intel VT-x (VM entry, VM exit, dodatkowe instrukcje, VT- d - Virtualization for directed I/O) – AMD-V (64b)
16 Z. SroczyńskiInżynieria programowania Wirtualizacja Implementacja maszyn wirtualnych dla PC VMware Server/Workstation – licencjonowanie Microsoft Virtual PC (XP Mode) – Wymagania – Ograniczenia systemu gościa Oracle VirtualBOX – Opensource – Nie wymaga wsparcia sprzętowego dla wirtualizacji (Intel VT-x, AMD-V) – Dobra wydajność – Problemy: 64b gość na 32b hoście – Wieloplatformowy (win,linux,mac)
17 Z. SroczyńskiInżynieria programowania Wirtualizacja Wirtualizacja przez VirtualBOX Wsparcie sprzętowe nie wymagane (wyjątki: OS/2, 64b) Emulacja programowa (bazująca na kodzie QEMU) Parawirtualizacja (tylko wybrane syst.op.) Rekonfiguracja gościa – RING 0 -> RING 1 Wady: spowolnienie, niekompatybilne instukcje, konieczność rezerwacji pamięci hosta Code Scanning and Analysis Manager (CSAM) - disassembler Patch Manager (PATM)
18 Z. SroczyńskiInżynieria programowania Wirtualizacja Dyski maszyny wirtualnej (VirtualBox) Dyski twarde w maszynach wirtualnych najczęściej emulowane są poprzez zwykłe pliki, a nie fizyczne partycje dyskowe (chociaż taka opcja występuje np. w VMware) VirtualBox oferuje dwa sposoby alokacji miejsca na dysku dla wirtualnych dysków twardych: – dynamicznie rozszerzany obraz – plik zajmuje +-tyle, ile dane w systemie gościu – obraz o stałym rozmiarze – cała przestrzeń dyskowa jest od razu alokowana Obraz o stałym rozmiarze jest wydajniejszy, a dynamiczny (być może) mniejszy – zastosowania?
19 Z. SroczyńskiInżynieria programowania Wirtualizacja VirtualBox – tworzenie maszyny wirtualnej
20 Z. SroczyńskiInżynieria programowania Wirtualizacja VirtualBOX - cechy Dodatki (guest additions) – Sprzętowe przyspieszanie grafiki – Tryb seamless/pełny ekran – Katalogi współdzielone z hostem ● Maszyny ● Tymczasowe Migawki systemu Usługi sieciowe (zdalny pulpit/serwery) Zamykanie maszyny – Zapisanie stanu – Wysłanie sygnału wyłączenia – Wyłączenie maszyny
21 Z. SroczyńskiInżynieria programowania Wirtualizacja Wydajność maszyn wirtualnych Testy* - wydajność maszyn wirtualnych jest różnie powiązana z możliwościami maszyn fizycznych, na których te systemy działają, a różnice mogą sięgać blisko 90% wydajności maszyny fizycznej dla pojedynczego systemu wirtualnego *SKRZEWSKI, MOROZ „Badanie wydajności maszyn wirtualnych” SK2010
22 Z. SroczyńskiInżynieria programowania Wirtualizacja Wydajność maszyn wirtualnych
23 Z. SroczyńskiInżynieria programowania Wirtualizacja Dziękuję za uwagę Następny temat: testowanie i uruchamianie oprogramowania