Witaj w laboratorium z wirtualizacji pod systemem Red Hat Enterprise Linux 7. Przed Tobą dziewięć ćwiczeń podczas których przygotujesz hosta -gospodarza, skonfigurujesz oraz poznasz dodatkowe mechanizmy przywracania do pracy uszkodzonych maszyn  wirtualnych.
Komunikacja w laboratorium odbywa się za pomocą IPv4 (podsieć 10.255.255.0) oraz IPv6 (2001:db8:1::/64).
Każde z ćwiczeń opatrzone jest komentarzem oraz screenami obrazującym proces konfiguracji.
Domyślne hasło dla konta roota: virtlab
Miłej pracy

0. Instalacja serwera hosta za pomocą PXE oraz plików KICKSTART

Pierwszym punktem laboratorium będzie przygotowanie serwera-hosta, który będzie gospodarzem dla maszyn wirtualnych instalowanych w kolejnych punktach. Serwer ten zostanie zainstalowany za pomocą PXE oraz kickstart.

PXE (Preboot Execution Environment) – mechanizm umożliwiający uruchomienie i/lub instalacje systemu operacyjnego za pomocą plików dostępnych na zdalnym zasobie udostępnianych za pomocą protokołu TFTP. Pobranie to jest możliwe dzięki funkcjonalności karty sieciowej, która po uruchomieniu komputera pobiera adres IP przydzielany jej za pomocą serwera DHCP.

pxe

pxe_menu

 

 

Kickstart - plik tekstowy, zawierający definicje konfiguracji mowo instalowanej maszyny. W pliku kickstart znajduje się min. konfiguracja interfejsów sieciowych, podział przestrzeni dyskowej na partycje, pakiety, które mają być automatycznie doinstalowane po instalacji maszyny itp itd. Plik kickstart można edytować ręcznie, lub za pomocą narzędzia system-config-kickstart.

 

 

kickstart

 

Uruchom komputer i poczekaj, aż pojawi się ekran powitalny instalatora. Wybierz opcję "LAB virt - instalacja hosta - zadanie0 a następnie obserwuj instalacje systemu. Instalacja będzie przeprowadzona w sposób nienadzorowany dzięki definicji maszyny, która została umieszczona w pliku kickstart. Po poprawnej instalacji, maszyna zresetuje się a następnie uruchomi system w trybie graficznym. Teraz możesz zalogować się do systemu.

 

1. Konfiguracja interfejsu bridge

W drugim ćwiczeniu należy skonfigurować interfejs typu bridge. Aby skonfigurować interfejsy sieciowe, należy wyedytować i/lub stworzyć nowe pliki konfiguracyjne w katalogu /etc/sysconfig/network-scripts. Pierwszym plikiem, którego należy wyedytować jest plik ifcfg-XXX (gdzie XXX to nazwa interfejsu). Aktualne interfejsy w systemie można podejrzeć poleceniem: ip l

 

 

Zwróć uwagę, ze nazwy interfejsów różnią się od tych, które występowały w poprzednich wersjach RHEL. Aktualne powinny być odczytywane w następujący sposób:

Dwu literowy prefix mowiacy o typie interfejsu:
en -- ethernet
sl -- serial line IP (slip)
wl -- wlan
ww -- wwan
Pozostale oznaczenia:
b -- BCMA bus core number
ccw -- CCW bus group name
o -- on-board device index number
s[f][d] -- hotplug slot index number
x -- MAC address
[P]ps[f][d]
-- PCI geographical location
[P]ps[f][u][..]1[i]
-- USB port number chain

 

plik ifcfg-enp7s2

HWADDR=00:0E:0C:35:3F:DE
BOOTPROTO=static
DEVICE=enp7s2
NAME=enp7s2
UUID=28738eee-0615-4402-a627-21a4748d66a2
ONBOOT=yes
BRIDGE=br0

 

plik ifcfg-br0

DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes

Interfejs typu bridge tworzy wirtualnego switcha, do którego można podłączyć większą ilość interfejsów sieciowych. W wirtualizacji wykorzystuje się go na maszynie-hoście tak, aby współdzielić jeden fizyczny interfejs pomiędzy wieloma interfejsami wirtualnymi.

 

Po wprowadzeniu powyższych zmian, należy zrestartować serwis odpowiedzialny za konfigurację sieci. Można to wykonać za pomocą polecenia systemctl restart network

 

2. Instalacja maszyny wirtualnej RHEL za pomocą pxe oraz kickstart z wykorzystaniem interfejsu sieciowego br0

W pierwszym kroku należy skonfigurować maszynę wirtualną za pomocą aplikacji Menedżer Maszyn Wirtualnych (virt-manager).

 

Konfiguracja maszyny wirtualnej odbywa się w pięciu krokach:

  • Definicja nazwy maszyny wirtualnej oraz sposobu instalacji:

 

vm_install_1

 

  • Zdefiniowanie typu oraz wersji instalowanego systemu operacyjnego:

vm_install_2

 

 

  • Definicja ilości pamięci oraz wirtualnych procesorów używanych przez maszynę wirtualną:

 

vm_install_3

 

  • Zdefiniowanie pamięci masowej używanej przez maszynę wirtualną:

 

vm_install_4

 

  • Zdefiniowanie sieci używanej przez instalowaną maszynę wirtualną

 

vm_install_5

 

  • Wybierając opcje "Customize configuration before install" istnieje możliwość zmodyfikowania konfiguracji maszyny wirtualnej przed procesem instalacji.

vm_install_6

 

Instalacja maszyny wirtualnej rozpocznie się po wybraniu przycisku 'Begin Installation".

3. Konfiguracja storage pool "instalki" dostępnej za pomocą NFS

W sieci znajduje się serwer o nazwie storage, który udostępnia obrazy instalacyjne ISO za pomocą protokołu NFS. W tym ćwiczeniu należy zdefiniować tą pulę tak, aby możliwa była instalacja systemu Windows w punkcie kolejnym.

NFS - Network File System: standardowy protokół udostępniania systemu plików w systemie Linux. NFS umożliwia współdzielenie zasobów za pomocą sieci. NFS został opracowany przez Sun Microsystems.

W tym ćwiczeniu należy skonfigurować nową pulę, wg następujących parametrów:

  • Nazwa puli: instalki
  • Typ: netfs - katalog wyeksportowany przez sieć
  • Ścieżka docelowa: /var/lib/libvirt/images/instalki
  • Format: auto
  • Nazwa gospodarza: storage.virtlab.pl
  • Ścieżka źródłowa: /nfs-iso

 

  • Konfiguracja puli NFSowej odbywa się w dwóch krokach. W pierwszym należy podać nazwę puli oraz jej typ:

storage_1

 

  • W drugim kroku należy podać nazwę (lub adres IP) serwera oraz ścieżkę w systemie docelowym, gdzie w/w zasób powinien zostać zamontowany:

 

storage_2

 

 

 

4. Instalacja systemu Windows z wykorzystaniem obrazu iso dostępnego w storage-pool "instalki" oraz sieci typu NAT

 

Wirtualizacja RHEL używa koncepcji wirtualnego switcha, za pomocą którego istnieje możliwość zdefiniowania sieci, wykorzystywanych później przez maszyny wirtualne. Domyślnie wirtualny switch widziany jest z pozycji systemu jako interfejs virbr0.

 

Można go podejrzeć za pomocą polecenia ip:

[root@rhel6 ~]# ifconfig virbr0
virbr0 Link encap:Ethernet HWaddr 52:54:00:89:AA:97
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:3996 (3.9 KiB)

[root@rhel6 ~]# ip a s virbr0
14: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 52:54:00:89:aa:97 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

Wirtualny switch może działać w trzech trybach:

 

  • Tryb NAT (tryb ten jest domyślny). Wirtualny switch wykonuje mechanizmy maskowania (NATu) puli adresowej jaka została zdefiniowana podczas tworzenia sieci.
  • Tryb routera: wirtualny switch zachowuje się jak L3, rutując ruch pomiędzy siecią zdefiniowaną do obsługi maszyn wirtualnych a sieciami skonfigurowanymi na rzeczywistych interfejsach
  • Tryb sieci izolowanej: komunikacja może odbywać się tylko w obrębie maszyn wirtualnych podłączonych do wirtualnego switcha. Nie ma możliwości komunikacji z rzeczywistymi interfejsami.
Aplikacja virt-manager pozwala na tworzenie sieci należących do jednej z trzech powyższych grup. Każda nowa sieć zdefiniowana jest w oparciu o kolejny interfejs virbrX (virbr1, virbr2, virbr3)

 

 

 

 

 

W tym ćwiczeniu należy zainstalować maszynę wirtualną Windows XP/7 wg następujących parametrów:

Nazwa: XP
Sposób instalacji: Lokalny nośnik instalacji
Położenie nośnika instalacji: Użycie obrazu ISO znajdującego się w puli instalki
Typ systemu operacyjnego: Windows
Wersja: XP
Pamięć: 1024M
Ilość procesorów: 1
Pamięć masowa: Utworzenie obrazu dysku na dysku twardym komputera
Pojemność 25GB
Przydzielenie całego dysku: TAK
Typ wirtualizacji: KVM
Architektura: x86_64
Sieć: Sieć wirtualna 'defaut': NAT

 

 

 

5. Instalacja systemu Windows z wykorzystaniem sterownika virtio do obsługi pamięci masowej

W tym ćwiczeniu należy zainstalować drugą instancję systemu Windows XP/7, tym razem jednak wykorzystując sterownik virtio do obsługi wirtualnego dysku twardego oraz interfejsu sieciowego. Używając virt-managera, należy przygotować instalację maszyny wirtualnej zgodnie z poniższymi parametrami:

Nazwa: XP2
Sposób instalacji: Lokalny nośnik instalacji
Położenie nośnika instalacji: Użycie obrazu ISO znajdującego się w puli instalki
Typ systemu operacyjnego: Windows
Wersja: XP
Pamięć: 1024M
Ilość procesorów: 1
Pamięć masowa: Utworzenie obrazu dysku na dysku twardym komputera
Pojemność 25GB
Przydzielenie całego dysku: TAK
Typ wirtualizacji: KVM
Architektura: x86_64
Sieć: Sieć wirtualna 'defaut': NAT

 

  • W ostatnim kroku tworzenia maszyny wirtualnej należy zaznaczyć opcję (dostosowanie konfiguracji przed instalacją) i kliknąć Ukończ.

 

 

xp_1

 

  • Nastepnie należy zaznaczyć dysk twardy nowo tworzonej maszyny wirtualnej i zmienić jego typ na virtio. Koniecznie należy potwierdzić zmianę przyciskiem "Zastosuj"

xp_2

 

  • Analogiczną zmianę należy wykonać w konfiguracji interfejsu sieciowego. Tak jak poprzednio należy potwierdzić w/w zmianę przyciskiem "Zastosuj"

 

xp_3

  • Windows XP/7 nie posiada sterowników do obsługi urządzeń typu virtio. Niezbędne więc jest wskazanie w/w sterowników podczas instalacji systemu. Aby tego dokonać, należy dodać do konfiguracji maszyny wirtualnej dodatkowy napęd CD/DVD zawierający obraz sterowników virtio (obraz ten znajduje się w puli instalki). Dodany napęd przedstawia poniższy screen:

 

xp_4

 

  • Ostatnim krokiem przygotowania do instalacji jest uruchomienie boot-menu, umożliwiającego wskazanie urządzenia, z którego zostanie uruchomiona instalacja:

 

xp_5

 

 

6. Konfiguracja storage-pool "systemy" dostępnej za pomocą iSCSI oraz instalacja na niej maszyny wirtualnej.

Host maszyn wirtualnych posiada zainstalowane oprogramowanie targetcli, za pomocą którego można uruchomić serwer iSCSI. Konfiguracja odbywa się w następujących krokach:

 

  • konfiguracja klienta iSCSI

Wedytuj plik  /etc/iscsi/initiatorname.iscsi wporwadzajac poprawna nazwe inicjatora (w miejsce X wprowadz numer swojej grupy):

 InitiatorName=iqn.2017-02.pl.virtlab.storage:grupa1

 

  • uruchom narzedzie targetcli

 

  • wykonaj nastepujace polecenie aby stworzyc backstore (poprawnie wykonana komenta powinna zostac potwierdzona przez system):

/> backstores/fileio create size=8G name=zad6.img file_or_dev=/opt/zad6.img
Created fileio zad6.img with size 8589934592

 

  • wykonaj nastepujace polecenie aby stworzyc portal (w miejsce X wprowadz numer swojej grupy):

/> iscsi/ create wwn=iqn.2017-02.pl.virtlab.storage:serverX
Created target iqn.2017-02.pl.virtlab.storage:server1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

  • dodaj LUN do portalu (pamietaj o poprawnym numerze grupy):

/> /iscsi/iqn.2017-02.pl.virtlab.storage:serverX/tpg1/luns create /backstores/fileio/zad6.img
Created LUN 0.

 

  • dodaj ACL umozliwiajaca dostep do zasobu. Uwaga wwn= nalezy wprowadzic nazwe inicjatora skonfigurowanego w pierwszym kroku:

/> /iscsi/iqn.2017-02.pl.virtlab.storage:serverX/tpg1/acls create wwn=iqn.2017-02.pl.virtlab.storage:grupaX
Created Node ACL for iqn.2017-02.pl.virtlab.storage:grupa1
Created mapped LUN 0.

  • polecenie ls / powinno pokazac aktualna konfiguracje:

 

iSCSI (ang. Internet SCSI) - technika umożliwiająca wykonywanie operacji wejścia-wyjścia na dysku twardym odległej maszyny za pomocą protokołu TCP/IP. Protokół iSCSI umożliwia budowę systemów pamięci masowych SAN (ang. Storage Area Network) przy zastosowaniu macierzy dyskowych SCSI i sieci Ethernet (protokół TCP/IP). Głównymi elementami systemu jest target (serwer) oraz initiator (klient).

 

Po uruchomieniu targetu iscsi należy zdefiniować go w formie puli tak, aby jego zasoby były dostępne dla maszyn wirtualnych. Definicja ta odbywa się w dwóch krokach (wszystko wykonywane za pomocą wirt-managera, właściwości hosta, zakładka ).

 

  • Wskazanie nazwy i typu nowej puli:

iscsi_2

 

Wskazanie nazwy (lub adresu IP) gospodarza oraz ścieżki źródłowej:

  • target path: /dev/dissk/
  • host name:  127.0.0.1
  • Source path: target iqn.2017-02.pl.virtlab.storage:serverX

 

Po wykonaniu powyższych czynności, w zakładce pamięć masowa pojawi się nowa pula z pojedynczym wolumenem o pojemności ~8GB

iscsi_4

 

 

7. Instalacja systemu RHEL na zasobie pulaiscsi.

W tym ćwiczeniu należy zainstalować system RHEL, wykorzystując wolumen wchodzący w skład puli pulaiscsi. Instalacje należy przeprowadzić za pomocą PXE (wybierając konfiguracje zadanie_7). Podczas konfiguracji maszyny wirtualnej, w punkcie 3 należy wskazać skonfigurowany poprzednio wolumen chodzący w skład puli pulaiscsi:

 

iscsi_6
iscsi_7

 

 

8. Uruchomienie maszyny wirtualnej w trybie ratunkowym (rescue mode)

W ostatnim zadaniu należy zainstalować maszynę wirtualną za pomocą PXE i kickstart'u. Po uruchomieniu w/w maszyny okaże się, że w skrypcie uruchamianym jako ostatni (/etc/rc.d/rc.local) ktoś specjalnie wprowadził komendę poweroff. oznacza to, ze ostatnia komenda uruchamiającą system będzie rozpoczęcie procedury wyłączania. Należy uruchomić maszynę wirtualną w środowisku rescue, następnie wyedytować wyżej wymieniony plik, komentując lub usuwając polecenie poweroff.

RHEL posiada narzędzie, umożliwiające uruchomienie niebotowalnej maszyny wirtualnej w środowisku ratunkowym. Środowisko to jest odrębną instalacją linuxa, umożliwiającą operację na maszynie wirtualnej (w szczególności zamontowanie i prace na jej pamięci masowej). Polecenie to jako swój główny parametr wymaga nazwy maszyny wirtualnej lub ścieżki do obrazu dyskowego.

 

W pierwszym kroku należy uruchomić polecenie virt-rescue z parametrem -d <nazwa_maszyny>. Spowoduje to uruchomienie środowiska ratunkowego.

res_1

W kolejnym kroku należy sprawdzić listę wolumenów logicznych, wykorzystywanych przez maszynę wirtualną. Można tego dokonać za pomocą polecenia lvdisplay:

 

res_21

 

Następnie należy stworzyć nowy katalog oraz zamontować w nim partycje root maszyny wirtualnej. czynności te należy wykonać za pomocą poleceń mkdir oraz mount.
jak widać na poniższym screenie, polecenie wyświetlające zawartość pliku rc.local wyświetliło komendę poweroff jako ostatnią.

 

res_3

 

 

Tryb rescue posiada edytor vi, za pomocą którego można edytować pliki konfiguracyjne. Błędny wpis znajduje się w pliku /etc/rc.d/rc.local maszyny wirtualnej. Katalog główny został zamontowany w /mnt/temp, więc pełna ścieżka do pliku będzie wyglądać następująco: /mnt/temp/etc/rc.d/rc.local. Należy ją podać jako parametr polecenia vi:

 

res_4

 

W ostatnim kroku należy zmodyfikować zawartość pliku zgodnie z wcześniejszymi ustaleniami

res_5

Edytor vi jest jednym z najbardziej popularnych edytorów w środowisku UNIX/LINUX. Jego autorem jest Bill Joy, późniejszy współtwórca Sun Microsystems. Po uruchomieniu edytora, przejście w tryb edycji możliwe jest po wybraniu klawisza i. Wyjście z edycji po wybraniu Esc a następnie :q. Wyjście z zapisem zmian: Esc a następnie :wq