[[
✎ pl:dydaktyka:sitw:2016:xen:lab1
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== 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ć 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łą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". **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 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 trzeba tylko przygotować komputer na przybycie kolejnej grupy laboratoryjnej. W tym celu, proszę uruchomić, jako root, komendę: {{ :pl:dydaktyka:sitw:2016:xen:lab_1_clean.tar.gz |}} <code bash> wget https://ai.ia.agh.edu.pl/wiki/_media/pl:dydaktyka:sitw:2016:xen:lab_1_clean.tar.gz && tar xf pl:dydaktyka:sitw:2016:xen:lab_1_clean.tar.gz && cd lab_1_clean && ./clean_xen_lab1.sh && cd .. && rm -rf pl:dydaktyka:sitw:2016:xen: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.1511832185.txt.gz
· ostatnio zmienione: 2019/06/27 15:55 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry