22
Maszyny wirtualne Maszyna wirtualna wprowadza warstw e abstrakcji, kt´ ora znajduje si e nad poziomem sprz etu, ale poni ˙ zej systemu operacyjnego (lub oprogramowania bezpo ´ srednio obsluguj acego sprz et): prezentuje warstw e sprz etu wirtualnego wspieranego przez sprz et fizyczny, monitor maszyny wirtualnej (VMM — Virtual Machine Manager ), zwany r´ownie ˙ z hypervisorem implementuje interfejs wirtualizacji, tworzy iluzj e izolowanych maszyn wirtualnych. System zainstalowany i dzialaj acy w ramach maszyny wirtualnej nazywamy systemem go´ scia. System operacyjny pracuj acy bezpo ´ srednio na fizycznym sprz ecie nazywamy systemem gospodarza. Maszyny wirtualne 1

os vmach szpcir.ict.pwr.wroc.pl/~witold/opsys/os_vmach_s.pdf · Kiedy wirtualizacja jest przydatna? Bezpieczen´stwo: maszyny wirtualne w naturalny sposob tworza֒izolowane ´srodowisko

Embed Size (px)

Citation preview

Maszyny wirtualne

Maszyna wirtualna wprowadza warstwe abstrakcji, ktora znajduje sie nad poziomemsprzetu, ale ponizej systemu operacyjnego (lub oprogramowania bezposrednioobs lugujacego sprzet):

• prezentuje warstwe sprzetu wirtualnego wspieranego przez sprzet fizyczny,

• monitor maszyny wirtualnej (VMM — Virtual Machine Manager), zwanyrowniez hypervisorem implementuje interfejs wirtualizacji, tworzy iluzjeizolowanych maszyn wirtualnych.

System zainstalowany i dzia lajacyw ramach maszyny wirtualnejnazywamy systemem goscia.

System operacyjny pracujacybezposrednio na fizycznymsprzecie nazywamy systememgospodarza.

Maszyny wirtualne 1

Interfejs VMM a interfejs systemu operacyjnego

• System operacyjny zapewnia wysoki poziom abstrakcji:

– mechanizm szeregowania przydzielajacy procesory watkom”na wy lacznosc”,

– wirtualna przestrzen adresowa procesow wspierana przez pamiec wirtualna,– dostep do dysku przez abstrakcje systemu plikow,– dostep do urzadzen przez API wysokiego poziomu (np. funkcje open(), read(),

write() w systemach uniksowych).

• VMM zapewnia niski poziom abstrakcji:

– wydaje sie, ze oprogramowanie dzia la na”go lym” sprzecie, z bezposrednim

dostepem do pamieci fizycznej i urzadzen (kazda maszyna wirtualna zwykleposiada w lasny system operacyjny).

• Zarowno system operacyjny, jak i VMM staraja sie odizolowac roznych lokatorow(procesy/maszyny wirtualne) i wymuszaja sprawiedliwosc (fairness) ze wzgledu nawykorzystywany fizyczny sprzet.

Maszyny wirtualne 2

Kiedy wirtualizacja jest przydatna?

Multipleksowanie (naprzemienne uzycie) fizycznego sprzetu w centrach obliczeniowych:

• Klient chce, aby jego aplikacja dzia la la na dedykowanej maszynie ... ale jegoaplikacja moze miec niski poziom wykorzystania sprzetu!

• Z le rozwiazanie: przydzielenie oddzielnej fizycznej maszyny kazdemu klientowi.

• Dobre rozwiazanie: wiele maszyn wirtualnych na bazie pojedynczej maszynyfizycznej.

• Maszyna fizyczna bedzie mocno wykorzystana, nawet jesli poszczegolne maszynywirtualne nie sa.

• Operatorzy centrow obliczeniowych moga kupowac mniej fizycznych maszyn!

• Zarzadzanie farma maszyn wirtualnych jest duzo latwiejsze niz fizycznych, np.instalacje systemu mozna wykonac jeden raz na dysku wirtualnym, a potem powielicten dysk dowolna liczbe razy.

Maszyny wirtualne — zastosowania 3

Kiedy wirtualizacja jest przydatna?

Technologia wirtualizacji w po laczeniu ze zdalnym dostepem przez Internet umozliwiarozwoj pochodnych technologii, takich jak wirtualne serwisy obliczeniowe.

• Mozliwe jest tworzenie wirtualnych us lug obliczeniowych”w chmurze”,

pozwalajacych uruchamiac aplikacje wielu klientow.

Przyk lady: Amazon EC2 (Elastic Compute Cloud), Google Compute Engine,Microsoft Azure, OVH, Hostinger, Dreamhost, i wiele innych.

Maszyny wirtualne — zastosowania 4

Kiedy wirtualizacja jest przydatna?

Bezpieczenstwo: maszyny wirtualne w naturalny sposob tworza izolowane srodowiskopracy dla kazdego z systemow gosci. Gwarantuje to pe lne bezpieczenstwo systemugospodarza przed zagrozeniami ze strony gosci, i bezpieczenstwo gosci przez sobanawzajem, poniewaz ich dzia lania nie moga wyjsc poza ich w lasny system operacyjny.

• Jesli aplikacja dzia lajaca na maszynie wirtualnej potrzebuje komunikowac sie zeswiatem zewnetrznym to mozna to zapewnic przez: (i) wspo ldzielone pliki, (ii)po laczenia sieciowe przez wirtualne interfejsy sieciowe. Jednak taka komunikacje latwo jest monitorowac i zabezpieczyc.

• Wirtualizacja pozwala na zapewnienie bezpieczenstwa systemow i ich danych,poniewaz gdy dane nie sa przechowywane na indywidualnych komputerachuzytkownikow latwiej jest zapewnic bezpieczenstwo fizycznego dostepu, tworzeniekopii zapasowych, itp.

• Jednak, wirtualizacja i przetwarzanie w chmurze wprowadza pewne nowezagrozenia, poniewaz czesto wrazliwe dane uzytkownikow musza znalezc siew srodowisku, ktorego ich w lasciciel w pe lni nie kontroluje.

• Dzieki wirtualizacji mozna uruchomic podejrzana aplikacje na maszynie wirtualnej(np. za lacznik do wiadomosci e-mail, oprogramowanie z nieznanego zrod la, itp.),zamiast na w lasnym komputerze.

Maszyny wirtualne — zastosowania 5

Kiedy wirtualizacja jest przydatna?

Zwiekszona produktywnosc dla programistow:

• Scenariusz 1: mozna uruchomic Linuksa jako gospodarza, i na nim stabilnei bezpieczne oprogramowanie deweloperskie, a na maszynach wirtualnych uzywacWindowsa i/lub MacOSa do browsowania/komunikacji/rozrywki.

• Scenariusz 2: programista pracujacy nad kodem jadra moze testowac je na maszyniewirtualnej, tak, ze gdy jadro zawiesza sie lub

”pada”, maszyna developerska nadal

pracuje i jest stabilna!

• Scenariusz 3: uruchomiona aplikacje (np. w celu testowania) mozna zatrzymac,tzn. zawiesic w celu np. przeanalizowania stanu, i pozniejszego wznowienia. Tenmechanizm jest dostepny w zwyk lych systemach operacyjnych dla procesow, jednakmaszyny wirtualne pozwalaja znacznie rozszerzyc jego wykorzystanie.

Mozna wykonac kopie, albo migawke (snapshot), ca lego dzia lajacego systemugoscia. Te kopie mozna pozniej uruchomic, np. w celu zresetowania stanu systemu.Mozna ja rowniez powielic, przeniesc i uruchomic na innym systemie. Moznarowniez zaprogramowac automatyczne okresowe wykonywanie migawek.

Jest nawet mozliwe rownowazenie obciazenia maszyn fizycznych, przez przenoszeniepracujacych migawek (live migration) miedzy maszynami, z zachowaniem stanu, np.po laczen sieciowych.

Maszyny wirtualne — zastosowania 6

Wady/niedostatki wirtualizacji

Jakie sa problemy zwiazane z wirtualizacja?

• Czesciowo rozwiazuje problemy istniejace gdzie indziej:

– niedostateczna izolacja procesow w ramach systemu operacyjnego,– niedostateczne zabezpieczenia w ramach systemu operacyjnego,– aplikacje napisane w sposob utrudniajacy migracje, odpornosc na awarie, itp.

• Strata wydajnosci obliczeniowej wynikajaca z wirtualizacji: 5...10...20%

– jednak gdy komunikacje miedzyprocesowa trzeba zamienic na zdalnewywo lywanie procedur to strata wydajnosci staje sie powazna,

– pytanie czy dyski gospodarza sa na tyle wydajne by obs luzyc wielu gosci,podobnie interfejsy sieciowe,

• Systemy operacyjne w duzym stopniu sa dojrza le i stabilne, natomiast VMM sanowa, rozwijajaca sie technologia, i zrod lem dziur przez d luzszy czas.

Maszyny wirtualne — wady 7

Maszyny wirtualne — wady 8

Wirtualizacja: s lowo o historii

Wirtualizacja nie jest nowa koncepcja. Wczesna wersja maszyny wirtualnej pojawi la siew roku 1972 w systemie operacyjnym VM/370 firmy IBM. Dla wykonywania aplikacjitworzona by la maszyna wirtualna, z w lasnym wirtualnym dyskiem, w ramach ktorejmozna by lo wykonywac zadania, typowo za posrednictwem jednouzytkownikowegosystemu operacyjnego CMS.

System VM ewoluowa l przez lata i istnieje do dzis (z/VM). Jednak poza nim,wirtualizacja nie zyska la szerszego uznania w technologiach informacyjnych, az do lat1990-tych, kiedy pojawi ly sie coraz silniejsze i lepiej wyposazone procesory rodziny80x86, pobudzajac zainteresowanie wirtualizacja.

Fundamentalna praca:

G.J. Popek, R.P. Goldberg, “Formal Requirements for Virtualizable ThirdGeneration Architectures”, Communications of the ACM, Volume 17, Number 7(1974), pages 412-421.

definiuje charakterystyki monitora maszyny wirtualnej (VMM), oraz okresla cechyarchitektury sprzetowej zapewniajacej wsparcie dla wirtualizacji.

Maszyny wirtualne — historia 9

Maszyny wirtualne — historia 10

Technologie sk ladowe

Wirtualizacje mozna zaimplementowac ca lkowicie w domenie programowej, jednak jestona wtedy ca lkowicie nieefektywna, co wyklucza to podejscie z jakichkolwiekzastosowan rzeczywistych.

W praktyce niezbedna jest implementacja umozliwiajaca wykonywanie sprzetowesystemow gosci, z wyjatkiem ma lej liczby wybranych operacji. Implementacja takichmechanizmow jest trudna, i w duzym stopniu zalezna od w lasciwosci danego procesora.Maja one zwiazek z uprzywilejowaniem danych operacji. W oczywisty sposob, systemgospodarza (i pracujacy w nim VMM) musi kontrolowac dostep do operacjiuprzywilejowanych, umozliwiajacych zarzadzanie procesorem i systemem.

Do technik wirtualizacji naleza: (i) pu lapka i emulacja, oraz (ii) t lumaczenie binarne,omowione tu po kolei.

Maszyny wirtualne — technologie sk ladowe 11

Procesory wirtualne

Koncepcja implementowana w niektorych systemach jest procesor wirtualnyVCPU. Nie wykonuje on zadnego kodu, a jedynie reprezentuje stan procesora dlapotrzeb maszyny goscia. VMM przechowuje wirtualne procesory wszystkich gosci.W momencie prze laczenia kontekstu na danego goscia, VMM laduje jego VCPUw podobny sposob jak egzekutor laduje zawartosc bloku kontrolnego procesu (PCB)w chwili prze laczania kontekstu dla jego wykonania.

Maszyny wirtualne — technologie sk ladowe 12

Dwa tryby pracy procesora

Typowy procesor posiada (co najmniej) dwa tryby pracy: uprzywilejowany tryb jadra(kernel mode) i zwyk ly tryb uzytkownika (user mode). Pewne instrukcje okreslonejako uprzywilejowane moga byc wykonane tylko w trybie jadra. Kod zwyk lych aplikacjiwykonuje sie w trybie uzytkownika, a kod jadra systemu operacyjnego w trybie jadra.Gdy program uzytkownika wywo luje funkcje systemowa, w szczegolnosci aby wykonacinstrukcje uprzywilejowana, lub generuje przerwanie, wykonuje sie kod jadra i procesorprzechodzi chwilowo do trybu jadra.

Podobnie, maszyna wirtualna musi miec analogiczne dwa tryby pracy: wirtualny trybuzytkownika, i wirtualny tryb jadra. Podobnie jak w zwyk lej maszynie fizycznej, akcjeprogramu uzytkownika powodujace przejscie do trybu jadra powinny w maszyniewirtualnej spowodowac przejscie do wirtualnego trybu jadra. Jednak oba wirtualnetryby pracy dzia laja w fizycznym trybie uzytkownika.

Zatem w jaki sposob maszyna wirtualna moze wykonac operacje uprzywilejowane?

Maszyny wirtualne — technologie sk ladowe 13

Pu lapka i emulacja

Gdy jadro maszyny goscia wywo luje instrukcje uprzywilejowana, stanowi to b lad (bosystem jest w trybie uzytkownika) i wyzwala pu lapke w VMM (gospodarza). VMMprzejmuje kontrole, i wykonuje (a raczej emuluje) akcje w imieniu jadra goscia,a nastepnie powoduje powrot do kodu goscia. Ta metoda jest nazywana pu lapkai emulacja. W oczywisty sposob, emulacja akcji goscia powoduje spowolnienie jegopracy, zatem gdy aplikacja goscia wykonuje operacje uprzywilejowane, wykonuje sie(duzo) wolniej niz gdy wykonuje normalny kod uzytkownika.

Maszyny wirtualne — pu lapka i emulacja 14

Procesory niewirtualizowalne

Niektore procesory nie maja poprawnego podzia lu na instrukcje uprzywilejowane inieuprzywilejowane (w istocie naruszaja zasady Goldberga i Popka). Nalezy do nichrodzina Intel 80x86.

Przyk lad: instrukcja popf laduje rejestr flag z zawartosci stosu. Niektore z flagpowoduja akcje uprzywilejowane, ale instrukcja popf nie jest instrukcjauprzywilejowana. Zamiast tego, gdy wykonuje sie w trybie uzytkownika, ignorujeniektore z flag, i nadpisuje tylko te niezwiazane z przywilejami. W trybie jadra popf

nadpisuje wszystkie flagi.

Instrukcje tego typu, ktore maja dostep do niskopoziomowego stanu procesora,nazywamy instrukcjami wrazliwymi (sensitive). Jedna z zasad wirtualizowalnosciGoldberga i Popka mowi, ze wszystkie instrukcje wrazliwe procesora musza bycuprzywilejowane, tzn. wymagac trybu jadra.

Jednak poniewaz instrukcja popf nie jest uprzywilejowana, nie generuje ona pu lapki wVMM, i jej akcje nie moga byc poprawnie emulowane przez VMM. Jest to instrukcjawrazliwa ale nieuprzywilejowana, a zatem narusza zasade Goldberga i Popka. Ogolniew architekturze 80x86 istnieje 17 podobnych instrukcji, co powoduje, ze ta rodzinaprocesorow jest niewirtualizowalna.

Maszyny wirtualne — procesory niewirtualizowalne 15

T lumaczenie binarne

Problem obs lugi uprzywilejowanych instrukcji na niewirtualizowalnych procesorachmozna rozwiazac za pomoca metody t lumaczenia binarnego (binary translation):

1. jesli VCPU goscia jest w trybie uzytkownika, to kod goscia moze wykonywac siebezposrednio na fizycznym procesorze,

2. jesli VCPU goscia jest w trybie jadra, to VMM analizuje kazda instrukcje kodugoscia, i wykonuje je albo normalnie, gdy nie sa wrazliwe, albo przezprzet lumaczenie je na odpowiednie instrukcje wykonujace rownowazne operacje.

Maszyny wirtualne — t lumaczenie binarne 16

Wydajnosc

Metody opisane powyzej ogolnie powoduja spadek wydajnosci wykonywania aplikacji,w porownaniu z wykonywaniem na maszynie fizycznej. Wiele szczego lowych technikjest stosowanych, aby te wydajnosc poprawic.

Firma VMware przeprowadzi la test wydajnosci t lumaczenia binarnego na przyk ladzieuruchamiania i natychmiastowego wy laczania systemu Windows XP. Ta procedurawyzwoli la 950,000 t lumaczen binarnych, kazde trwajace oko lo 3 mikrosekund, cospowodowa lo wyd luzenie ca lego procesu o 3 sekundy (5 procent) w porownaniu z jegorealizacja na maszynie fizycznej.

Maszyny wirtualne — wydajnosc 17

Obs luga tablic stron

System operacyjny goscia obs luguje pamiec wirtualna dla potrzeb swojego systemu,i w jego ramach zestaw tablic stron procesow. W oczywisty sposob, maja sie one nijakdo tablic stron systemu gospodarza i tresci pamietanych w (oraz usuwanych z) pamiecifizycznej. Zatem system pamieci wirtualnej goscia dzia la w swoim wirtualnym swiecie

§ i nie jest w stanie zapewnic efektywnego korzystania z pamieci fizycznej swoichaplikacji.

Aby zapewnic poprawna prace systemu pamieci wirtualnej gosci, VMM moze stosowacmetode dublowanych tablic stron SPT (shadow page tables). Kazda SPTreprezentuje stan pewnej tablicy stron goscia, podobnie jak VCPU reprezentuje stanCPU z punktu widzenia goscia.

Gdy gosc modyfikuje tablice stron, VMM przechwytuje te operacje, i wykonujeodpowiednia zmiane w SPT. Gdy gosc wykonuje sie na CPU, VMM przekierowujebiezaca tablice stron na w lasciwa SPT.

Maszyny wirtualne — obs luga tablic stron 18

Wsparcie sprzetowe wirtualizacji

Bardziej efektywna implementacja wirtualizacji jest mozliwa, gdy w procesor zostanawbudowane specjalne mechanizmy ja wspierajace. Na przyk lad, Intel wprowadzi lw 2005 roku technologie VT-x, a AMD w 2006 ADM-V, ktore eliminuja potrzebet lumaczenia binarnego.

Wprowadzaja one dodatkowe tryby procesora odpowiednie dla gospodarza i goscia(host/guest w terminologii AMD, root/nonroot w terminologii Intel). W trybiegospodarza VMM definiuje charakterystyki poszczegolnych gosci, i gdy gosc wykonujesie w trybie goscia, widzi konfiguracje sprzetowa, ktora zosta la dla niego zdefiiowana.

Wymienione architektury wprowadzaja rowniez mechanizmy wsparcia pamieciwirtualnej dla systemow gosci, ktore powoduja, ze nie jest juz konieczne tworzeniedublowanych tablic stron przez VMM.

Ponadto wprowadzono wsparcie sprzetowe dla operacji I/O, pozwalajac na skuteczneprogramowanie transferow DMA przez gosci.

Te modyfikacje spowodowa ly, ze wirtualizacja sta la sie prosta. W systemie MacOSistnieje biblioteka HyperVisor Framework pozwalajaca tworzyc maszyny wirtualnew kilku wierszach kodu.

Maszyny wirtualne — wsparcie sprzetowe wirtualizacji 19

Parawirtualizacja

Parawirtualizacja dzia la inaczej niz pozosta le podejscia do wirtualizacji. Zamiastutrzymywac z ludzenie goscia, ze pracuje na maszynie fizycznej i zarzadza nia, system

goscia jest modyfikowany, aby wspo lpracowa l z VMM i ... zachowywa l sie jak gosc ©

Jest to mozliwe w przypadku systemow z dostepnym kodem zrod lowym (open source)i licencja pozwalajaca na jego modyfikacje. Typowymi przyk ladami jest Linux i rodzinaBSD systemu Uniksa.

Przyk ladem i liderem w technologii parawirtualizacji jest system Xen. Wprowadzi l onprosta i czysta warstwe abstrakcji dla urzaden I/O i odpowiednia komunikacjepomiedzy gosciem a VMM dotyczaca tych urzadzen. W odniesieniu do pamieciwirtualnej, zamiast dublowanych tablic stron, Xen wprowadzi l specjalny mechanizmhypercall od goscia do VMM kiedy gosc chce zmodyfikowac swoja tablice stron.Tablice stron gosci pracuja w trybie tylko do odczytu, co powoduje, ze z wyjatkiemb ledu braku strony, system pamieci wirtualnej goscia pracuje poprawnie. Obs luga b ledubraku strony pracuje ze wsparciem ze strony VMM.

Nalezy nadmienic, ze w przypadku nowych procesorow ze wsparciem dla wirtualizacji,modyfikacja systemow gosci, i w ogole ca la parawirtualizacja nie jest potrzebna, i natakich procesorach Xen pracuje jak zwyk ly VMM, obs lugujac rowniez systemynieparawirtualizowalne, jak Windows.

Maszyny wirtualne — parawirtualizacja 20

Wirtualizacja na poziomie systemu operacyjnego

Technologie kontenerowe jak Docker:

• kontener jest odizolowana grupa procesow

• kontener widzi pewien zdefiniowany podzbior procesow, systemu plikow, laczysieciowych, itp.

• dobra wydajnosc, bo wszystko dzia la w ramach jednego SO, nie potrzeba tworzyc,bootowac systemu, obs lugiwac trybu uprzywilejowanego, martwic sie o pracepamieci wirtualnej, itp.

• migawki rejestruja tylko stan grupy procesow, nie ca lego systemu

• ale aplikacje musza pracowac w ramach SO gospodarza, nie ma wyboru.

Maszyny wirtualne — wirtualizacja na poziomie systemu operacyjnego 21

Wirtualizacja na poziomie srodowiska oprogramowania

Maszyna wirtualna Javy JVM:

• program sk lada sie z pewnej liczby klas Javy; kompilator kompiluje klasy do pliku.class kodow bajtowych (bytecode) niezaleznych od sprzetu, zatem mozna gowykonac na dowolnej implementacji JVM

• JVM najpierw sprawdza poprawnosc kodu, a potem go wykonuje

• programy Javy nie operuja na adresach pamieci, tylko na obiektach, pamiec poskasowanych obiektach jest odzyskiwana przez specjalny proces odzyskiwanianieuzytkow (garbage collector)

• kod Javy moze byc wykonywany przez interpreter jezyka kodow bajtowych

• inna mozliwoscia jest kompilacja kodow bajtowych przy pierwszym uzyciu danejmetody do instrukcji maszynowych przez specjalny kompilator, tzw. just-in-timecompiler (JIT)

• istnieja rowniez sprzetowe implementacje JVM pozwalajace wykonywac programyJavy bezposrednio na procesorze

Maszyny wirtualne — wirtualizacja na poziomie srodowiska oprogramowania 22