Różnice

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

Odnośnik do tego porównania

pl:dydaktyka:sitw:2016:xen:lab1 [2016/11/15 01:33]
msl [Lekcja 1: Nazewnictwo]
pl:dydaktyka:sitw:2016:xen:lab1 [2019/06/27 15:50]
Linia 1: Linia 1:
-====== 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ć 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://​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'​. 
- 
-===== 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: 
- 
-  - 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łączenia oznaczonego jako '​default'​ (ponownie można użyć '​grep'​). 
- 
-**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-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. 
- 
-<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="​opcja=wartosc,​opcja2=wartosc2,​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"​. 
- 
- 
-**Zadanie 2:** Proszę wpisać odpowiednie wartości w pliku konfiguracyjnym gruba. Następnie zrestartować system. ​ 
- 
-**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. ​ 
- 
-===== 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: 
-  * [[http://​www.setgetgo.com/​randomword/​get.php|losowa nazwa]] hosta 
-  * pamięć 512MB 
-  * dwa wirtualne procesory 
-  * sieć skonfigurowana przez dhcp 
-  * dystrybucja debian jessie 
-  * zapis obrazu używając lvm, grupy o nazwie ''​sitw''​ (ostatnia opcja w manualu komendy). ​ 
- 
-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 mogą Państwo zbierać profity ze zdobytej wiedzy. ​ 
- 
- 
- 
- 
- 
  
pl/dydaktyka/sitw/2016/xen/lab1.txt · ostatnio zmienione: 2019/06/27 15:50 (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