Różnice

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

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:dydaktyka:sitw:2016:xen:lab1 [2016/11/14 16:20]
msl utworzono
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ć podstawowe domeny gości.  
 + 
 +===== 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:​ 
 +<code bash> 
 +apt-get install paczka 
 +</​code>​ 
 +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ł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ść ===== 
 + 
 +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 zaliczenia;​ 
 +  - 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:​ 
 +<code bash>​sudo su</​code>​ 
 + 
 +===== Lekcja 3: Czy nasz sprzęt da radę ===== 
 + 
 +Xen wspiera (w drobnym uproszczeniu) trzy rodzaje gości: 
 +  - 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.  
 +  - 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. 
 +  - 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. 
 + 
 +  - I metoda (niezalecana):​ sprawdzić w dokumentacji procesora  
 +  - II metoda: sprawdzić wyjście komendy: <code bash>​lscpu</​code>​ 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'​. 
 +  - 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. <code bash>​fdisk --help</​code>​ lub <code bash>man fdisk</​code>​ 
 + 
 +===== 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:​ 
 +  - NetworkManager (nawet z poziomu GUI), 
 +  - systemd, 
 +  - ip, 
 +  - bridgeutils,​ 
 +  - 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: [[pl:​dydaktyka:​sitw:​2016:​xen:​lab1#​Preliminaria:​|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:  
 +<code bash> 
 +ip addr show 
 +</​code>​ 
 +i znaleźć połączenie posiadające przypisany adres ip. 
 + 
 +**Pytanie 4:** Ile jest fizycznych interfejsów sieciowych w systemie i jak się nazywają?​ 
 + 
 +<WRAP center round important 60%> 
 +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. 
 +</​WRAP>​ 
 + 
 +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. 
 + 
 +<​code>​ 
 +iface <nazwa fizycznego interfejsu sieciowego>​ inet manual 
 +</​code>​ 
 + 
 +''​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'':​ 
 + 
 +<​code>​ 
 +auto xenbr0 
 +iface xenbr0 inet dhcp 
 +    bridge_ports <nazwa fizycznego interfejsu sieciowego>​ 
 +</​code>​ 
 + 
 +, 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 5: Instalacja ===== 
 + 
 +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. 
 + 
 +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> 
 +dpkg-divert --add --rename --divert <nowa ścieżka pliku> <stara ścieżka pliku> 
 +</​code>​ 
 + 
 +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ę: 
 +<code bash> 
 +update-grub 
 +</​code>​ 
 +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 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>​ 
 + 
  
-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. 
  
-===== Lesson 1 ===== 
  
-[[https://​www.youtube.com/​watch?​v=SSsSbZ9OHZk|Nie mylić nazwy!]] Aczkolwiek warto zapamiętać,​ że powinno wymawiać się ją "​zen",​ podobnie jak orginalne imię bohaterki. ​ 
  
pl/dydaktyka/sitw/2016/xen/lab1.1479136829.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