To jest stara wersja strony!


XEN: instalacja i zarządzanie gośćmi

Celem laboratorium jest zapoznanie się z instalacją i konfiguracją hypervisora Xen. Po zakończeniu laboratorium student powinien rozumieć architekturę, na której oparty jest Xen; potrafić go zainstalować i skonfigurować różne typy maszyn/gości. Ponadto powinien być wstanie wskazać różnice między typami gości z ich zaletami i wadami.

Preliminaria

Jak wszystko na Debianie (jeśli ktoś nie zauważył, pracujemy na Debianie), wymagane programy instalujemy menadżerem paczek apt-get. Krótka instrukcja obsługi dla niewtajemniczonych:

apt-get install paczka

instaluje paczkę. Kiedy w treści laboratorium pojawi się sformułowanie: instalujemy paczkę 'nazwa paczki', należy użyć apt-get'a.

Lekcja 1: Nazewnictwo

Aczkolwiek nazwa ma małą wspólnego ze znaną bohaterką lat 90-tych, warto zapamiętać, że w obu przypadkach powinno wymawiać się 'X' jako 'z'. Zatem 'zen'.

Lekcja 2: Z wielką mocą przychodzi wielka odpowiedzialność

W związku z tym, że konfiguracja Xena wymaga licznych uprawnień, będą Państwo pracować na koncie root'a. Mogą Państwo zatem wszystko zepsuć. W razie odczuwania nieodpartej potrzeby psucia (tudzież wątpliwości, czy jakaś komenda czegoś nie zepsuje/nie zepsuła) proszę wołać prowadzącego, za egoistyczne psucie „samemu” zostały obmyślone wyrafinowane kary:

  1. brak obecności;
  2. brak zaliczenia;
  3. rozmowa z Dziekanem na temat przyszłości studiowania na tym wydziale.

Aby zalogować się na konto root'a, należy wykonać w terminalu polecenie:

sudo su

Lekcja 3: Czy nasz sprzęt da radę

Xen wspiera (w drobnym uproszczeniu) trzy rodzaje gości:

  1. PV (Paravirtualization) — goście są świadomi tego, że są tylko gośćmi na maszynie gospodarzy. Nie muszą udawać, że mają prawdziwy sprzęt — ten typ gości nie wymaga wsparcia sprzętowego dla wirtualizacji. W szczególności mogłoby nawet dojść do tego, że XEN jest zainstalowany na gościu KVM, i posiada gości PV.
  2. HVM (Hardware-Assisted Virtualization) — tak zwana pełna wirtualizacja. Goście nie są świadomi istnienia gospodarza, trzeba im zatem zapewnić całą infrastrukturę. Wymaga to wsparcia sprzętowego.
  3. PV+HVM — obie techniki można mieszać, uzyskująć efekt hybrydowy, np. goście HVM mają zainstalowane specjalne sterowniki pozwalające im lepiej pracować w środowisku Xen.

Zatem, jeżeli chcemy obsługiwać pełną wirtualizację, musimy sprawdzić czy posiadamy wsparcie sprzętowe.

  1. I metoda (niezalecana): sprawdzić w dokumentacji procesora
  2. II metoda: sprawdzić wyjście komendy:
    lscpu

    w poszukiwaniu sekcji „Wirtualizacja” (ew. angielski odpowiednik). Powinno znajdować się tam informacja, jakie technologie są wspierane, w przypadku procesora marki AMD, szukamy nazwy 'AMD-V'.

  3. III metoda (zalecana): sprawdzić zawartość pliku /proc/cpuinfo pod kątem występowania napisów 'vmx' (technologia Intela) lub 'svm' (technologia AMD). Polecamy zastosowanie narzędzi typu grep, egrep, etc.

Pytanie 1: czy nasz sprzęt wspiera writualizację sprzętową? Jeśli tak, to w jakiej technologii?

Jeśli chodzi o inne wymagania sprzętowe, wiele zależy od typu gości. Dobrze byłoby mieć więcej niż jeden rdzeń, np. po jednym na gościa + gospodarz. Poza tym rozsądnie jest założyć, że gość może zużyć około 512MB RAM'u i jakieś 5GB miejsca na dysku twardym.

Pytanie 2: Czy nasze PC'y wystarczą na spokojne uruchomienie trzech gości?

  • Podpowiedź 1: proszę posiłkować się narzędziami: lscpu, fdisk, free.
  • Podpowiedź 2: zanim zaczną Państwo wołać prowadzącego, proszę sprawdzić dokumentację polecenia, np.
    fdisk --help

    lub

    man fdisk

Lekcja 3: Konfiguracja sieci

Żeby być dobrym gospodarzem, trzeba mieć skonfigurowaną sieć. Xen nie zrobi tego za nas. Potrzebujemy mostka („bridge interface”), który pozwoli nam maszyny gości podpiąć pod fizyczny interfejs sieciowy. Istnieje co najmniej pięć narzędzi potrafiących stworzyć bridge interface:

  1. NetworkManager (nawet z poziomu GUI),
  2. systemd,
  3. ip,
  4. bridgeutils,
  5. zwykły edytor tekstu.

Mamy to nieszczęście, że Debian wspiera wszystkie z nich. Ze względu na prostotę użyjemy ostatniej metody (nie znaczy najlepszej). Zacznijmy od instalacji pakiety bridge-utils (patrz: preliminaria). Dzięki temu pakietowi możemy używać nowej komendy brctl, służącej do kontrolowania istniejących mostków.

Pytanie 3: Ile jest aktualnie mostków w systemie, jak je wyświetlić? Proszę skorzystać z dokumentacji komendy.

Zanim dodamy mostek, musimy sprawdzić jakie fizyczne interfejsy sieciowe istnieją w naszym systemie. Ponownie istnieje na to setka sposobów, ale najprościej jest użyć polecenia:

ip addr show

i znaleźć połączenia oznaczonego jako 'default' (ponownie można użyć 'grep').

Pytanie 4: Ile jest fizycznych interfejsów sieciowych w systemie i jak się nazywają?

UWAGA: gdyby ktoś te laboratoria wykonywał przez sesję ssh, niech ma się na baczności. Bardzo łatwo można doprowadzić do zerwania połączenia, więc zawsze trzeba mięć pod ręką inny sposób komunikacji.

Aby dodać mostek, edytujemy plik /etc/network/interfaces. Aktualnie powinien tam być tylko jeden wpis na temat interfejsu loopback. Poniżej dopisujemy wpis dotyczący fizycznego interfejsu.

iface <nazwa fizycznego interfejsu sieciowego> inet manual

manual mówi tyle, że interfejs ten ma mięć ręczny ustawiany adres ip. Robimy tak dlatego, że od teraz to mostek będzie odpowiadał za komunikację i to on będzie korzystał z tego adresu. W tym celu dopisujemy nowy wpis dotyczący interfejsu mostka o wiele mówiącej nazwie xenbr0:

auto xenbr0
iface xenbr0 inet dhcp
    bridge_ports <nazwa fizycznego interfejsu sieciowego>

, gdzie nazwa występująca po bridge_ports mówi, z jakiego interfejsu fizycznego będzie korzystał mostek.

Teraz proszę zrestartować system, np. komendą reboot.

Pytanie 5: Ile teraz mostków jest w systemie?

Pytanie 6: Proszę ponownie użyć komendy: ip addr show. Jakie zmiany wystąpiły w połączeniu domyślnym?

Lekcja 4: Instalacja

Zaczynamy łatwo, proszę zainstalować paczkę xen-linux-system.

Teraz zacznie się dziać magia: otóż, Xen to taki trochę system operacyjny pasożyt korzystający z zasobów, sterowników, etc. systemu gospodarza. Żeby mógł się dossać do naszego systemu musimy go uruchomić jak każdy inny system operacyjny — z poziomu menadżera bootowania GRUB. Możemy to zrobić ręcznie wybierając odpowiednią pozycję przy włączaniu komputera, ale w przypadku serwerów to głupi pomysł. W przypadku awarii chcemy, żeby Xen włączył się domyślnie.

Kolejność opcji bootowania określona jest przez nazwy plików w katalogu /etc/grub.d. Plik o mniejszym numerku na początku ma większy priorytet. Aktualni pliki 00_header i 05_debian_theme mają największy priorytet, bo to one definiuje wygląd menu bootowania. Plik 10_linux natomiast to nasz poczciwy debian, który ma aktualnie większy priorytet od Xena: 20_linux_xen. Najprostszym sposobem, żeby to zmienić, to zmienić nazwę na, np. 08_linux_xen. Problemem byłoby jednak, gdyby ktoś zaktualizować paczkę xen-linux-system, mogłyby powstać konflikty. Żeby zmienić nazwę pliku z paczki tak, żeby nie doszło do konfliktów, trzeba użyć narzędzia dpkg-divert, np.

dpkg-divert --add --rename --divert <nowa ścieżka pliku> <stara ścieżka pliku>

Proszę użyć tego narzędzia, aby zmienić nazwę 20_linux_xen na 08_linux_xen. O wyniki operacji proszę się upewnić korzystając z komendy ls.

Następnie proszę uruchomić komendę:

update-grub

Jest to komenda aktualizująca konfigurację gruba i należy ją wywołać przy każdej zmianie jego konfiguracji.

Teraz ponownie włączamy komputer ponownie. Xen powinien być pierwszą opcją na liście.

Lekcja 5: konfiguracja domeny gospodarza

Teraz znowu jesteśmy w grze, nie powinniśmy odczuwać żadnej różnicy, ale… nasz poczciwy debian jest teraz jedną z maszyn (domen) Xena! Wyjątkową, bo wyjątkową, ale zawsze. Żeby upewnić się, że Xen działa, możemy zalogować się na konto roota i wykonać kilka komend konsoli xena, np.

xl info
xl list
xl help 
xl top

Pytanie 6: Jak się nazywa domena naszego poczciwego Debiana?

Pytanie 7: Do czego służy komenda xl top?

Zanim przejdziemy do instalacji gości, musimy zadbać o naszego gospodarza. Problemem jest to, że aktualnie gospodarz to zwykła domena, która będzie musiała współdzielić zasoby z innymi gośćmi. W szczególnym przypadku może zabraknąć zasobów dla gospodarza. Dlatego też musimy zarezerwować dla niego trochę pamięci i czasu procesora.

Pamięć

Plik konfiguracji Xena: /etc/xen/xend-config.sxp ma lisp'ową składnię, tzn. żeby ustawić opcję o nazwie opcja na wartość wartość, należy w nim wpisać linijkę:

(opcja wartość)

Interesują nas dwie opcje:

  • dom0-min-mem, której wartość to ram (w megabajtach) zarezerwowany dla domeny gospodarza.

( no)

  • enable-dom0-ballooning, której wartość to boolean (yes/no), oznaczający, czy Xen może pożyczać pamięć od domeny gospodarza dla innych gości.

Zadanie: Proszę, używając pliku konfiguracyjne, zarezerwować dla gospodarza jeden gigabajt ramu i zabronić Xenowi pożyczania pamięci.

Plik konfiguracji gruba: /etc/default/grub zawiera domyślne opcje bootowania. W szczególności można w nim przekazać dodatkowe argumenty w zmiennej GRUB_CMDLINE_XEN, np.

GRUB_CMDLINE_XEN="opcja=wartosc,opcja2=wartosc2,flaga"

Aby zarezerwować pamięć dla domeny gospodarza, trzeba ustawić opcję bootowania Xena o nazwie „dom0_mem” na wartość odpowiadającą rezerwowanej pamięci, np. „512M”.

Zadanie: Proszę wpisać odpowiednie wartości w pliku konfiguracyjnym gruba. Następnie zrestartować system.

Pytanie 8: Czy pamiętaliście o wywołaniu komendy, która zawsze trzeba wywołać przy zmianie konfiguracji gruba?

Procesor

Chcemy zarezerwować chociaż jeden rdzeń dla naszego dzielnego debiana. Żeby to zrobić, należy wykonać dwa zadanka:

  • w konfiguracji xena, ustawić wartość opcji dom0-cpus na wartość 1
  • w konfiguracji gruba, dodać do opcji bootowania xena:
    • opcję dom0_max_vcpus o wartości 1
    • flagę (czyli opcję bez wartości dom0_vcpus_pin)

I znowu magiczna komenda, i znowu restart.

pl/dydaktyka/sitw/2016/xen/lab1.1479150921.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0