Previous | Up |
XEN
Opis
XEN jest Monitorem Wirtualnej Maszyny zaprojektowanym do działania na architekturze
x86, wspierającym działanie wielu
systemów operacyjnych dzielących rzeczywistą maszynę.Wszystkie guest OS działają niezależnie, w pełni
odizolowane od siebie. Możliwe jest
równoczesne uruchomienie nawet do 100 systemów operacyjnych.
Jako że
Xen działa bezpośrednio na fizycznym sprzęcie, można o nim myśleć jako o
mikroskopijnym systemie operacyjnym. W celu zminimalizowania strat
wydajnościowych, używana jest technika wirtualizacji zwana parawirtualizacją.
Jednak by system
operacyjny mógł być uruchomiony na Xenie potrzebna jest jego modyfikacja,
dokonana specjalnie pod kątem współpracy z XENem.
Każda maszyna wirtualna w XENie działa w osobnej domenie. Jedna z domen jest
specjalna - tylko system operacyjny rezydujący w tej domenie jest startowany
podczas uruchamiania XENa. Inicjuje on oprogramowanie odpowiedzialne za
zarządzanie pozostałymi systemami operacyjnymi, w szczególności za:
Ponadto system operacyjny ze specjalnej domeny jest odpowiedzialny za obsługę
wirtualizacji urządzeń i dostępu do nich. W pozostałych domenach działają guest
OS.
Jeżeli chodzi o poziom uprzywilejowania, to sam Monitor Wirtualnej Maszyny,
czyli XEN, działa na poziomie 0, podczas gdy Guest OS muszą być zmodyfikowane by
działać na poziomie 1. Aplikacje użytkowe działają standardowo na 3 poziomie
uprzywilejowania.
Niektóre rozwiązania zastosowane w XEN:
Przełączanie sterowania.
Dwie główne możliwości jeżeli chodzi o przełączanie kontroli to oddawanie kontroli przez XENa do systemu operacyjnego i odwrotnie - przez SO do XENa. Do obsługi przełączania kontroli stosowane są:
synchroniczne wywołania systemowe (hypercalls) zawierające wszystkie rodzaje uprzywilejowanych instrukcji
mechanizm asynchronicznego dostarczania zawiadomień do systemów operacyjnych (używany do przesyłania przerwań sprzętowych do domen). Przechowywaniem zawiadomień nie przekazanych od razu do guest OS zajmuje się XEN.
Transfer danych.
W celu dostarczania danych i zawiadomień XEN używa asynchronicznych buforowych pierścieni. Rozwiązanie to dostarcza efektywnego mechanizmu transferu danych. Pierścień jest cykliczną kolejką, która sama w sobie nie zawiera danych. Dostęp do danych odbywa się przez deskryptory. Jest 4 aktorów w takich schemacie transferu:
Bardzo ważne jest, że Xen może zmienić kolejność obsługi żądań co umożliwia
zwiększenie efektywności całego mechanizmu (np. poprzez taką kolejność obsługi
żądań odczytu z dysku, aby sąsiadujące sektory były odczytywane zaraz po sobie).
Translacja adresów wirtualnych
W XENie fizyczne zasoby pamięci są widoczne dla guest OS. Zatem tablice stron
mogą być swobodnie odczytywane przez guest OS, ale tylko XEN może coś w nich
zmieniać.
Pamięć Fizyczna
Pamięć fizyczna jest statycznie podzielona. W trakcie tworzenia każda domena dostaje ustaloną ilość
zarezerwowanej dla niej pamięci. Takie rozwiązanie gwarantuje silną izolację. XEN może odbierać jak i przydzielać strony poszczególnym guest OS w zależności
od potrzeb. Jeżeli zajdzie taka potrzeba, guest OS jest zmuszony do używania
własnych algorytmów zarządzania pamięcią lub nawet do wyrzucania stron na
wirtualny dysk. Ponadto każdy guest OS jest odpowiedzialny za stwarzanie iluzji
ciągłej pamięci.
Wymagania i kompatybilność
By system operacyjny mógł być uruchomiony na Xenie potrzebna jest jego
modyfikacja. Obecnie Xen umożliwia uruchomienie Linuksa (zmodyfikowany system
nazywa się XenoLinux), NetBSD, FreeBSD (w trakcie tworzenia) oraz Windows (w
trakcie tworzenia).
Aplikacje użytkowe i biblioteki nie potrzebują modyfikacji.
Sam XEN jest przygotowany do działania na komputerach o architekturze x86.
Przeznaczenie
Xen pozwala wielu systemom operacyjnym dzielić rzeczywistą maszynę w bezpieczny
i dobrze zarządzany sposób, bez znacznej utraty wydajności i funkcjonalności.
Źródła:
http://www.cl.cam.ac.uk/Research/SRG/netos/xen (tutaj można pobrać XEN)
http://www.cs.utah.edu/~sgoyal/xen
(wskazówki dotyczące instalacji i nie tylko)
Previous | Up |