Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:sitw:2016:xen:lab2 [2016/11/22 10:16] msl [Gość Drugi: HVM ze sterownikami PVM] |
pl:dydaktyka:sitw:2016:xen:lab2 [2019/06/27 15:50] (aktualna) |
====== XEN: Zarządzenia wydajnością i zasobami ====== | ====== XEN: O różnych rodzajach gości ====== |
| |
Celem laboratorium jest zapoznanie się z możliwościami kontrolowania zasobów oraz zwiększanie wydajności gości używając nadzorcy Xen. Zbadane zostaną: | <WRAP center round box 60%> |
| //Gość w DomU, host w Dom0.// |
| |
| --- Stare przysłowie polskie. |
| </WRAP> |
| |
| Celem laboratorium jest zapoznanie się z różnicami między maszynami parawirtualizowanymi i wirtualizowanymi sprzętowo, ich konfiguracją i oraz migracją z istniejących maszyn. |
| |
- różne tryby wirtualizacji | |
- różne konfiguracje twardego dysku | |
- różne konfiguracje schedulera CPU | |
- różne konfiguracje stronicowania pamięci RAM | |
| |
===== Preliminaria ===== | ===== Preliminaria ===== |
| |
<code bash> | <code bash> |
cd /home/student/sitw && ./prepare_xen_lab2.sh && update-grub | cd /home/student/sitw && ./prepare_xen_lab2.sh && update-grub && reboot |
reboot | |
</code> | </code> |
| |
Po ponownym uruchomieniu komputera powinien włączyć się znajomy już Xen. | Po ponownym uruchomieniu komputera powinien włączyć się znajomy już Xen. |
| |
Podczas laboratorium przydatna może okazać się [[https://xenbits.xen.org/docs/4.4-testing/|dokumentacja Xen'a]]. | Podczas laboratorium przydatna może okazać się [[https://xenbits.xen.org/docs/4.4-testing/|dokumentacja Xen'a]]. :!: Naprawdę :!: |
| |
===== Lekcja 1: Gość w dom ===== | <WRAP center round important 60%> |
| Naprawdę! |
| </WRAP> |
| |
Zacznijmy od zbadania wpływu jaki ma tryb wirtualizacji na wydajność maszyny. | ===== Lekcja 1: Parawirtualizacja ===== |
Zbudujemy prawie od zera trzech różnych gości. | |
| |
==== Gość Pierwszy: PVM na pliko-partycji ==== | Naszym celem jest postawienie tej samej maszyny, co na poprzednim laboratorium, z jedną drobną różnicą, zamiast lvm użyjemy obrazu dysku. Żeby przyśpieszyć proces, zaimportujemy maszynę z istniejącego już obrazu dysku. |
| |
Naszym celem jest postawienie tej samej maszyny, co na poprzednim laboratorium, z jedną drobną różnicą, zamiast lvm użyjemy obrazu dysku. Żeby przyśpieszyć proces, zastosujemy istniejący już obraz dysku. | |
| |
**Zadanie 1:** Korzystając z polecenie ''xen-create-image'', proszę stworzyć domenę spełniającą podane warunki: | **Zadanie 1:** Korzystając z polecenie ''xen-create-image'', proszę stworzyć domenę spełniającą podane warunki: |
* pamięć 512MB | * pamięć 512MB |
* dwa wirtualne procesory | * dwa wirtualne procesory |
* sieć skonfigurowana przez dhcp | * sieć skonfigurowaną statycznie: |
| * adres ip: ''10.0.0.2'' |
| * brama: ''10.0.0.1'' |
| * maska: ''255.255.255.0'' |
| * broadcast: ''10.0.0.255'' |
* dystrybucja debian jessie | * dystrybucja debian jessie |
* zapis obrazu używając zwykłego katalogu o ścieżce '/home/student/sitw' | * zapis obrazu używając zwykłego katalogu o ścieżce '/home/student/sitw' |
* system **nie** powinien być instalowany wraz z uruchomieniem komedy | * komenda ma **nie** instalować systemu |
| |
| **Pytanie:** Podczas tworzenia maszyny pojawiło się kilka błędów. Skąd one wynikają? |
| |
W pliku konfiguracji domeny można zobaczyć, jakie ścieżki prowadzą do plików będących partycjami tej domeny. | W pliku konfiguracji domeny można zobaczyć, jakie ścieżki prowadzą do plików będących partycjami tej domeny. |
| |
**Zadanie 2:** Zastąpić pliki z podanych ścieżek plikami ''swap.img'' i ''pvm/disk.img'' z katalogu ''/home/student/sitw/images''. | **Zadanie 2:** Zastąpić nowo powstały dysk plikiem ''pvm/disk.img'' z katalogu ''/home/student/sitw/images''. Proszę użyć komendy ''dd'' zamiast ''cp'': |
| <code bash> |
| dd if=<ścieka źródłowa> of=<ścieżka docelowa> bs=8M status=progress |
| </code> |
| |
| **Zadanie 3:** Nie znamy hasła roota do instalacji na ''pvm/disk.img''. Proszę je ustawić ręcznie na ''xena'' (tip: komendy ''mount -o loop'', ''chroot'' i ''passwd''). |
| |
**Zadanie 3:** Proszę stworzyć i uruchomić domenę. Hasło root'a: ''xena''. | |
| |
==== Gość Drugi: HVM ze sterownikami PVM ==== | **Zadanie 4:** Proszę stworzyć i uruchomić domenę. Hasło root'a: ''xena''. |
| |
Instalacja gościa sprzętowego przebiega trochę inaczej. Przypomina dużo bardziej instalację zwykłego systemu operacyjnego. Najpierw należy przygotować konfigurację maszyny. W tym celu proszę skopiować przykładową konfigurację domeny typu hvm (''/etc/xen/'') do nowego pliku ''/etc/xen/lab2-pvhvm''. | ===== Lekcja 2: Wirtualizacja sprzętowa ===== |
| |
| Instalacja gościa sprzętowego przebiega trochę inaczej. Przypomina dużo bardziej instalację zwykłego systemu operacyjnego. Najpierw należy przygotować konfigurację maszyny. W tym celu proszę skopiować przykładową konfigurację domeny typu hvm (z katalogu ''/etc/xen/'') do nowego pliku ''/etc/xen/lab2-pvhvm.cfg''. |
| |
**Zadanie 4: ** Należy wprowadzić do pliku pewne zmiany: | **Zadanie 4: ** Należy wprowadzić do pliku pewne zmiany: |
* nazwa gościa powinna brzmieć ''lab2-pvhvm'' | * nazwa gościa powinna brzmieć ''lab2-pvhvm'' |
* powinien mieć 512MB ramu | * powinien mieć 512MB ramu |
| * sieć skonfigurowaną statycznie: |
| * adres ip: ''10.0.0.3'' (na wzór konfiguracji ''lab2-pvm'') |
| * resztę sieci konfiguruje się **dopiero** podczas instalacji systemu (czyli nie teraz :!:): |
| * brama: ''10.0.0.1'' |
| * maska: ''255.255.255.0'' |
| * broadcast: ''10.0.0.255'' |
| * dns: ''8.8.8.8 8.8.4.4'' |
* powinien mieć dwa dyski twarde na wzór konfiguracji ''lab2-pvm'' (proszę pamiętać o zmianie ścieżek) | * powinien mieć dwa dyski twarde na wzór konfiguracji ''lab2-pvm'' (proszę pamiętać o zmianie ścieżek) |
* powinien mieć napęd cdrom z zamontowanym plikiem ''/home/student/sitw/images/debian-install.iso'': | * dysk swap powinien mieć nazwę ''xvdb'' |
* jeżeli plik nie istnieje proszę wykonać komendę: | * dysk root powinien mieć nazwę ''xvda'' |
| * same dyski utworzymy w kolejnych krokach |
| * powinien mieć napęd cdrom z zamontowanym plikiem ''/home/student/sitw/images/debian_installer.iso'': |
| * jeżeli plik nie istnieje (**lub ma podejrzanie mały rozmiar**) proszę wykonać komendę: |
<code bash> | <code bash> |
wget http://cdimage.debian.org/debian-cd/8.6.0/amd64/iso-cd/debian-8.6.0-amd64-netinst.iso /home/student/sitw/images/debian-install.iso | wget -O /home/student/sitw/images/debian_installer.iso http://cdimage.debian.org/debian-cd/8.6.0/amd64/iso-cd/debian-8.6.0-amd64-netinst.iso |
</code> | </code> |
| * **Podpowiedź:** napęd cdrom nazywa się ''hdc:cdrom''. Więcej w dokumentacji. |
* powinien korzystać z vnc do dzielenia ekranu | * powinien korzystać z vnc do dzielenia ekranu |
* powinien najpierw bootować stację cdrom | * powinien najpierw bootować stację cdrom |
* **podpowiedź:** składnia plików konfiguracyjnych maszyn jest opisana w dokumentacji ''xl.cfg'' | * **podpowiedź:** składnia plików konfiguracyjnych maszyn jest opisana w dokumentacji ''xl.cfg'' |
| |
Teraz potrzebujemy tylko dysków twardych, żeby móc zainstalować system. Aby stworzyć plikopartycję, można posłużyć się poleceniem ''dd'', które służy do najprostszego kopiowania bajt po bajcie. Plikopartycja, to nic innego jak pusty plik, który ma zadaną wielkość. Aby stworzyć plik, który ma służyć za partycję swap o rozmiarze 128MB, można posłużyć się poleceniem: | Teraz potrzebujemy tylko dysków twardych, żeby móc zainstalować system. Aby stworzyć plikopartycję, można posłużyć się poleceniem ''dd'', które służy do najprostszego kopiowania bajt po bajcie (blok po bloku). Plikopartycja, to nic innego jak pusty plik, który ma zadaną wielkość. Aby stworzyć plik, który ma służyć za partycję swap o rozmiarze 128MB, można posłużyć się poleceniem: |
<code bash> | <code bash> |
dd if=/dev/zero of=./swap.img bs=1024k seek=128 count=0 | dd if=/dev/zero of=./swap.img bs=1024k seek=128 count=0 |
**Zadanie 5:** Proszę wygenerować puste pliki partycji, jedną 4GB na roota, drugą 128MB na swap i umieścić je w ścieżkach wskazanych wcześniej w pliku konfiguracyjnym domeny. | **Zadanie 5:** Proszę wygenerować puste pliki partycji, jedną 4GB na roota, drugą 128MB na swap i umieścić je w ścieżkach wskazanych wcześniej w pliku konfiguracyjnym domeny. |
| |
**Zadanie 6:** Proszę stworzyć maszynę ''lab2_pvhmv'' i znaleźć adres, pod którym jest dostępna przez vnc. **Podpowiedź:** ''vnc'' to proces jak każdy inny. | **Zadanie 6:** Proszę stworzyć maszynę ''lab2_pvhvm'' i znaleźć adres, pod którym jest dostępna przez vnc. **Podpowiedź:** ''vnc'' to proces jak każdy inny. |
| |
**Zadanie 7:** Proszę połączyć się z maszyną używając narzędzie ''vncviewer'' (w razie potrzeby zainstalować). | **Zadanie 7:** Proszę połączyć się z maszyną używając narzędzia ''vncviewer'' (w razie potrzeby zainstalować). |
| |
Jeżeli to się uda, mają Państwo teraz dwie możliwości: | Jeżeli to się uda, mają Państwo teraz dwie możliwości: |
| |
* Zainstalować Debiana ręcznie --- zalecane dla osób, które nigdy tego nie robiły. Prosta robota, ale może chwilę zająć (proszę nie instalować żadnych środowisk graficznych). | * Zainstalować Debiana ręcznie --- zalecane dla osób, które nigdy tego nie robiły. Prosta robota, ale może chwilę zająć (proszę nie instalować żadnych środowisk graficznych) |
* Jak poprzednio, użyć gotowych obrazów ''swap.img'' i ''pvm/disk.img'' z katalogu ''/home/student/sitw/images'', hasło roota: ''xena''. | * haczyk: po instalacji trzeba zadbać o to, żeby plik ''/etc/resolv.conf'' zawierał prawidłowe serwery DNS: |
| |
Niezależnie od wybranej ścieżki, można teraz z pliku konfiguracyjnego usunąć cdrom i zmienić kolejność boot'owania tak, by pierwsza była partycja roota. | |
| |
==== Gość Trzeci: HVM bez PV ==== | |
| |
Teraz, skąd wiemy, że poprzedni gość używa sterowników PV? Wystarczy się na niego zalogować i sprawdzić, co powie polecenie ''dmesg''. Powinno mówić coś o urządzeniach PCI zarządzanych przez XEN. | |
| |
**Zadanie 8:** Proszę sprawdzić, czy poprzedni gość używa sterownika PV. | |
| |
Aby przyśpieszyć pracę, proszę skopiować konfigurację maszyny ''lab2-pvhvm'' do pliku ''lab2-hvm'' i dokonać trzech zmian: | |
| |
* zmienić nazwę maszyny | |
* zmienić ścieżki dysków twardych | |
* wyłączającą urządzenia PCI zarządzane przez Xen. Znowu zerkamy do dokumentacji. | |
| |
Po skopiowaniu dysków twardych z poprzedniej maszyny do odpowiednich ścieżek, maszyna powinna się elegancko uruchomić. | |
| |
**Zadanie 9:** Proszę sprawdzić, czy nowy gość używa sterowników PV. | |
| |
===== Lekcja 2: Benchmark ===== | |
| |
Mając trzech gości, sprawdźmy, który z nich najlepiej sobie radzi w prostych benchmarkach. Sprawdzimy prędkość działania procesora oraz dysku twardego. Przykładowe [[https://fixmynix.com/benchmarking-linux-systems-with-simple-command-line-tools/|benchmarki]] mogą wymagać instalacji dodatków pakietów. | |
| |
**Zadanie 10:** Który gość najlepiej radzi sobie w kategorii procesor? | |
| |
**Zadanie 11:** Który gość wygrywa w kategorii dysk twardy? | |
| |
===== Lekcja 3: Rodzaj dysku twardego ===== | |
| |
Proszę zainstalować 4 gościa, takiego samego jak ''lab2-pvm'', ale korzystającego z systemu plików lvm. (można po prostu użyć ''xen-create-image'' jak na poprzednich laboratoriach), o nazwie ''lab2-pvmlvm''. | |
| |
**Zadanie 12:** Która obu maszyn parawirtualizowanych lepiej sobie radzi w kategorii dysk twardy? | |
| |
**Podpowiedź:** W czasie instalacji maszyny można spokojnie przejść do Lekcji 4. | |
| |
===== Lekcja 4: Scheduler CPU ===== | |
| |
Xen jako nadzorca musi dbać o zapotrzebowania swoich gości, w szczególności o przydzielany im czas procesora --- podobnie jak w systemie operacyjnym czas jest przydzielany procesom. Służy do tego narzędzie zwane schedulerem. W Xenie możliwe jest tworzenie pul procesorów (ang. //cpu pool//) i do każdej puli można przyporządkować inny scheduler. Krótkie opisy dostępnych schedulerów można znaleźć na [[https://wiki.xenproject.org/wiki/Xen_Project_Schedulers | wiki Xena]]. | |
| |
**Zadanie 13:** Używając komendy ''xl'' proszę sprawdzić jaki scheduler jest aktualnie używany w systemie. | |
| |
Proszę teraz przeanalizować wyjście komendy: | |
<code bash> | <code bash> |
xl help sched-credit | nameserver 8.8.8.8 |
| nameserver 8.8.4.4 |
</code> | </code> |
| * Jak poprzednio, użyć gotowych obrazów ''swap.img'' i ''hvm/disk.img'' z katalogu ''/home/student/sitw/images'', hasło roota: ''xena''. |
| |
oraz [[https://wiki.xen.org/wiki/Credit_Scheduler|opis schedulera o nazwie credit z wiki Xen]]. | Niezależnie od wybranej ścieżki, można teraz z pliku konfiguracyjnego usunąć cdrom i zmienić kolejność boot'owania tak, by pierwsza była partycja roota. |
| |
**Zadanie 14**: Zakładając, że mamy małą liczbę maszyn wirtualnych, wykonując ciężkie obliczenia. Czy domyślny timeslice jest w porządku? | |
| |
**Zadanie 15**: Proszę ustawić rate limiting tak, żeby odpowiadało środowisku małej liczby maszyn o dużej liczbie obliczeń do wykonania. | |
| |
**Zadanie 16**: Proszę ustawić wagi schedulera tak, żeby maszyna ''lab2-pvhvm'' była "dwa razy" ważniejsza od innych. | |
| |
**Zadanie 17**: Proszę ustawić ograniczenia tak, żeby żadna maszyna poza ''lab2-phvm'' nie mogła używać naraz więcej niż 1,5 rdzenia. | |
| |
**Zadanie 18**: Proszę teraz uruchomić testy CPU na kilku maszynach równocześnie. Czy wyniki testów się zmieniły? | |
| |
**Zadanie 19**: Proszę zmienić scheduler na dowolny inny, np. credit2 | |
**Podpowiedź**:" grub i ''docs/misc/xen-command-line.html'' | |
| |
===== Lekcja 5: Stronicowanie pamięci ===== | |
| |
===== Lekcja 6: Sprzątanie ===== | ===== Epilog: Sprzątanie ===== |
| |
Proszę wyłączyć i usunąć wszystkich gości **wraz z ich dyskami i plikami konifuracyjnymi**. Następnie: | Proszę wyłączyć i usunąć wszystkich gości **wraz z ich dyskami i plikami konifuracyjnymi**. Następnie z konta roota: |
| |
<code bash> | <code bash> |
cd /home/student/sitw && ./clean_xen_lab2.sh | cd /home/student && cd /home/student/sitw && ./clean_xen_lab2.sh |
</code> | </code> |
I na koniec proszę **uruchomić komputer ponownie**, tym razem bez Xena i zaktualizować konfigurację gruba: | I na koniec proszę **uruchomić komputer ponownie**, tym razem bez Xena i zaktualizować konfigurację gruba: |