Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:sitw:2016:xen:lab1 [2016/11/14 20:17] msl [Pamięć] |
pl:dydaktyka:sitw:2016:xen:lab1 [2019/06/27 15:50] (aktualna) |
====== XEN: instalacja i zarządzanie gośćmi ====== | ====== XEN: instalacja usług i dodawanie gości ====== |
| |
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. | 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ć podstawowe domeny gości. |
| |
===== Preliminaria ===== | ===== Preliminaria ===== |
===== Lekcja 1: Nazewnictwo ===== | ===== Lekcja 1: Nazewnictwo ===== |
| |
Aczkolwiek nazwa ma małą wspólnego ze znaną [[https://www.youtube.com/watch?v=SSsSbZ9OHZk|bohaterką lat 90-tych]], warto zapamiętać, że w obu przypadkach powinno wymawiać się 'X' jako 'z'. Zatem 'zen'. | Aczkolwiek nazwa ma mało wspólnego ze znaną [[https://youtu.be/_dF3VTOcbuo|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ść ===== | ===== 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: | 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 (także w przypadku 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: |
| |
- brak obecności; | - brak obecności; |
* Podpowiedź 2: zanim zaczną Państwo wołać prowadzącego, proszę sprawdzić dokumentację polecenia, np. <code bash>fdisk --help</code> lub <code bash>man fdisk</code> | * Podpowiedź 2: zanim zaczną Państwo wołać prowadzącego, proszę sprawdzić dokumentację polecenia, np. <code bash>fdisk --help</code> lub <code bash>man fdisk</code> |
| |
===== Lekcja 3: Konfiguracja sieci ===== | ===== Lekcja 4: 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: | Ż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: |
ip addr show | ip addr show |
</code> | </code> |
i znaleźć połączenia oznaczonego jako 'default' (ponownie można użyć 'grep'). | i znaleźć połączenie posiadające przypisany adres ip. |
| |
**Pytanie 4:** Ile jest fizycznych interfejsów sieciowych w systemie i jak się nazywają? | **Pytanie 4:** Ile jest fizycznych interfejsów sieciowych w systemie i jak się nazywają? |
**Pytanie 6:** Proszę ponownie użyć komendy: ''ip addr show''. Jakie zmiany wystąpiły w połączeniu domyślnym? | **Pytanie 6:** Proszę ponownie użyć komendy: ''ip addr show''. Jakie zmiany wystąpiły w połączeniu domyślnym? |
| |
===== Lekcja 4: Instalacja ===== | ===== Lekcja 5: Instalacja ===== |
| |
Zaczynamy łatwo, proszę zainstalować paczkę ''xen-linux-system''. | Zaczynamy łatwo, proszę zainstalować paczkę ''xen-hypervisor''. |
| |
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. | 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. | 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. Pliki ''00_header'' i ''05_debian_theme'' mają największy priorytet, bo to one definiują 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 wtedy powstać konflikty. Żeby zmienić nazwę pliku z paczki tak, żeby nie doszło do konfliktów, trzeba użyć narzędzia ''dpkg-divert'', np. |
| |
<code bash> | <code bash> |
Teraz ponownie włączamy komputer ponownie. Xen powinien być pierwszą opcją na liście. | Teraz ponownie włączamy komputer ponownie. Xen powinien być pierwszą opcją na liście. |
| |
===== Lekcja 5: konfiguracja domeny gospodarza ===== | ===== Lekcja 6: 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. | 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. |
</code> | </code> |
| |
**Pytanie 6:** Jak się nazywa domena naszego poczciwego Debiana? | **Pytanie 7:** Jak się nazywa domena naszego poczciwego Debiana? |
| |
**Pytanie 7:** Do czego służy komenda ''xl top''? | **Pytanie 8:** 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. | 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. |
* ''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. | * ''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. | **Zadanie 1:** Proszę, używając pliku konfiguracyjnego, 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. | 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. |
| |
<code bash> | <code bash> |
GRUB_CMDLINE_XEN="opcja=wartosc,opcja2=wartosc2,flaga" | GRUB_CMDLINE_XEN="opcja1=wartosc opcja2=wartosc flaga" |
</code> | </code> |
| |
Aby zarezerwować pamięć dla domeny gospodarza, trzeba ustawić opcję bootowania Xena o nazwie "dom0_mem" na wartość odpowiadającą rezerwowanej pamięci, np. "512M". | Aby zarezerwować pamięć dla domeny gospodarza, trzeba ustawić opcję bootowania Xena o nazwie "dom0_mem" na wartość odpowiadającą rezerwowanej pamięci, np. "512M" (zachęcam jednak, by użyć wyższej wartości). |
| |
| |
**Zadanie:** Proszę wpisać odpowiednie wartości w pliku konfiguracyjnym gruba. Następnie zrestartować system. | **Zadanie 2:** Proszę wpisać odpowiednie wartości w pliku konfiguracyjnym gruba. Następnie zrestartować system i sprawdzić, czy zmiany rzeczywiście zostały wprowadzone. |
| |
**Pytanie 8**: Czy pamiętaliście o wywołaniu komendy, która zawsze trzeba wywołać przy zmianie konfiguracji gruba? | **Pytanie 9**: Czy pamiętaliście o wywołaniu komendy, która zawsze trzeba wywołać przy zmianie konfiguracji gruba? |
| |
==== Procesor ==== | ==== Procesor ==== |
* flagę (czyli opcję bez wartości dom0_vcpus_pin) | * flagę (czyli opcję bez wartości dom0_vcpus_pin) |
| |
I znowu magiczna komenda, i znowu restart. | I znowu magiczna komenda, i znowu restart, i znowu trzeba sprawdzić, czy wszystko działa według naszych gustów. |
| |
| ===== Lekcja 7: Instalowanie gości ===== |
| |
| Dobra, zbliżamy się do meritum. Żeby stworzyć domenę "gościa", wystarczy użyć komendy: |
| |
| <code bash> |
| xl create <ścieżka do pliku konfiguracji gościa> |
| </code> |
| |
| Rzecz się wydaje prosta, ale brakuje nam pliku konfiguracji maszyny. Moglibyśmy stworzyć własny na podstawie dokumentacji i plików przykładowych: ''/etc/xen/xlexample.hvm'' oraz ''/etc/xen/xlexample,pvlinux'', ale spróbujmy zrobić to prościej. |
| |
| Zacznijmy od zainstowania pakietu ''xen-tools''. Zawiera on kilka narzędzi, nas zainteresuje w szczególności jedno: ''xen-create-image''. |
| |
| **Zadanie 3:** Korzystające z dokumentacji tego polecenia, proszę stworzyć obraz spełniający dane warunki: |
| * nazwa hosta: "lab1" |
| * pamięć 512MB |
| * dwa wirtualne procesory |
| * sieć skonfigurowana przez dhcp |
| * dystrybucja debian stretch |
| * zapis obrazu używając lvm, grupy o nazwie ''sitw'' (ostatnia opcja w manualu komendy). |
| * jeśli lvm nie jest skonfigurowane na hoście, proszę zapisać obraz w postaci pliku w katalogu domowym "studenta" |
| |
| Narzędzie pobiera i konfiguruje dla Państwa świeżą instalacje debiana, proszę spędzić 5 minut na lekturze internetu, co to jest lvm. Lub innych konstruktywnych zajęciach. |
| |
| **Pytanie 11:** Jakie jest hasło root'a utworzonej maszyny? |
| |
| Po udanym utworzeniu obrazu gościa, trzeba uruchomić maszynę. Jej plik konfiguracyjny znajduje się w ''/etc/xen''. Proszę użyć komendy ''xl create'' do uruchomienia maszyny. |
| |
| **Pytanie 12:** Jaki jest teraz wynik komendy ''xl list''. |
| |
| **Pytanie 13:** Ile istnieje teraz interfejsów sieciowych na gospodarzu? |
| |
| ===== Lekcja 8: Sterowanie gośćmi ===== |
| |
| Aby zalogować się na gościa wystarczy użyć komendy: |
| <code bash> |
| xl console <nazwa gościa> |
| </code> |
| |
| Mam nadzieję, że pamiętają Państwo hasło roota... Jeżeli uda się Państwu zalogować na maszynę, konsolę można opuścić używając skrótu ''CTRL+]''. |
| |
| Istnieją oczywiście inne metody logowania do maszyny gościa. Spróbujmy zalogować się na niego przez ssh i stworzyć na nim jakąś usługę, żeby nie czuł się bezużyteczny. |
| |
| ==== Konfiguracja SSH na gościu ==== |
| |
| - Tworzymy na gościu nowego użytkownika nie-roota (''xl console'' + ''adduser''). |
| - Jako root uruchamiamy ssh (''systemctl start ssh && systemctl enable ssh''). |
| - Jako root sprawdzamy adres ip interfejsu sieciowego (to chyba już umiemy) |
| - Opuszczamy maszynę |
| |
| Teraz wystarczy zalogować się poprzez ssh używając nowo stworzonego użytkownika na podanym adresie. |
| |
| <code bash> |
| ssh user@adres |
| </code> |
| |
| **Pytanie 13:** Czy kolega/żanka z innej grupy też może zalogować się przez ssh na Państwa gościa? |
| |
| ==== Wirtualny serwer WWW ==== |
| |
| - Logujemy się na konto root'a na gościu |
| - Instalujemy pakiet ''apache2'' |
| - Uruchamiamy usługę ''apache2'' (znowy ''systemctl'', chyba już Państwo załapali jak to działa?) |
| - Modyfikujemy plik ''/var/www/html/index.html'' |
| - Z poziomu gospodarza uruchamiamy przeglądarkę i oglądamy stronę pod adresem IP gościa. |
| |
| **Pytanie 14:** Czy kolega/żanka z innej grupy też widzi Państwa stronę? |
| |
| ===== Lekcja 9: Sprzątanie ===== |
| |
| **Zadanie 4:** Zatrzymać gościa jednym z poleceń 'xl'. |
| |
| **Zadanie 5:** Usunąć obraz gościa poleceniem ''xen-delete-image'' |
| |
| Teraz trzeba tylko przygotować komputer na przybycie kolejnej grupy laboratoryjnej. W tym celu, proszę uruchomić, jako root, komendę: |
| |
| <code bash> |
| wget -O lab_1_clean.tar.gz https://ai.ia.agh.edu.pl/wiki/_media/pl:dydaktyka:sitw:2016:xen:lab_1_clean.tar.gz && tar xf lab_1_clean.tar.gz && cd lab_1_clean && ./clean_xen_lab1.sh && cd .. && rm -rf lab_1_clean.tar.gz && rm -rf lab_1_clean </code> |
| Następnie proszę uruchomić komputer ponownie, tym razem bez Xena i zaktualizować konfigurację gruba: |
| <code bash> |
| update-grub |
| </code> |
| |
| |
| |
| |
| |