Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:sitw:2016:xen:lab1 [2016/11/14 19:20]
msl
pl:dydaktyka:sitw:2016:xen:lab1 [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-====== XEN: instalacja i zarządzanie ​gośćmi ======+====== XEN: instalacja ​usług ​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 =====
Linia 13: Linia 13:
 ===== 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ł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;
Linia 48: Linia 48:
   * 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:
Linia 65: Linia 65:
 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ą?
Linia 95: Linia 95:
 **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>
Linia 116: Linia 116:
  
 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 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.
 +
 +<code bash>
 +xl info
 +xl list
 +xl help 
 +xl top
 +</​code>​
 +
 +**Pytanie 7:** Jak się nazywa domena naszego poczciwego Debiana?
 +
 +**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.
 +
 +==== 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ę: ​
 +<code lisp>
 +(opcja wartość)
 +</​code>​
 +
 +Interesują nas dwie opcje:
 +   * ''​dom0-min-mem'',​ której wartość to ram (w megabajtach) zarezerwowany dla domeny gospodarza.
 +   * ''​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 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.
 +
 +<code bash>
 +GRUB_CMDLINE_XEN="​opcja1=wartosc opcja2=wartosc flaga"
 +</​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"​ (zachęcam jednak, by użyć wyższej wartości).
 +
 +
 +**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 9**: 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, 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>​
 +
 +
 +
 +
 +
  
pl/dydaktyka/sitw/2016/xen/lab1.1479147645.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