KVM

Wirtualizacja to uruchamianie wielu niezależnych wirtualnych komputerów na jednym fizycznym komputerze. W procesie wirtualizacji zasoby fizycznego komputera, jego sprzęt taki jak procesory, pamięć, dyski, napędy optyczne, karty sieciowe rozdzielane są na wiele komputerów wirtualnych. Wszystkie komputery wirtualne, ich systemy operacyjne i usługi na nich uruchomione działają równolegle w całkowitej izolacji. Komputer fizyczny, który jest gospodarzem dla komputerów wirtualnych nazywany jest maszyną gospodarza (host mashine). Komputer wirtualny uruchomiony na maszynie hosta nazywany jest wirtualną maszyną (virtual machine), a system operacyjny zainstalowany na maszynie wirtualnej nazywany jest gościem (guest). Oprogramowanie do wirtualizacji, zainstalowane bezpośrednio na fizycznej maszynie określane jest mianem hyperwizora (hypervisor). Przykładem takiego hyperwizora jest KVM (Kernel-based Virtual Machine), który jest częścią jądra Linuxa i realizuje tzw. pełną wirtualizację. KVM przeprowadza mapowanie pomiędzy fizycznymi procesorami maszyny gospodarza a wirtualnymi procesorami, przydzielonymi wirtualnym maszynami. Zapewnia tym samym sprzętową akcelerację dla maszyn wirtualnych i wzrost ich wydajności. Infrastrukturę wirtualizacyjną realizuje KVM, a inne oprogramowanie nazywane szybkim emulatorem (Quick Emulator – QUEMU) robi użytek z mapowania realizowanego przez KVM. QEMU przechwytuje instrukcje systemu gościa przeznaczone do wirtualnego procesora i uruchamia je na fizycznym procesorze wykorzystując wspomniane wcześniej mapowanie. Takie rozwiązanie powoduje, że aplikacje uruchamiane na wirtualnych maszynach mają taki sami poziom wydajności jak aplikacje uruchamiane normalnie na maszynach fizycznych.

Trzeba tutaj też wspomnieć, że istnieje coś takiego jak parawirtualizacja, która zapewnia większą wydajność niż pełną wirtualizacja. Parawirtualizacja wymaga jednak specjalnie zmodyfikowanego systemu operacyjnego gościa. Ten typ wirtualizacji realizuje XEN.

 

Instalacja KVM.

Sprawdzamy czy maszyna hosta obsługuje wirtualizację:

lub

Powyższe wyniki wskazują, że maszyna obsługuje wirtualizację.

lub

Wynik nie wynosi 0 a więc maszyna obsługuje wirtualizację również wg tej komendy.

Instalacja niezbędnego oprogramowania:

Jeżeli będziemy chcieli zarządzać wirtualkami w środowisko graficznym to instalujemy dodatkowo:

 

Zakończenie i sprawdzenie instalacji.

Po instalacji sprawdzamy czy niezbędne moduły  kvm zostały wczytane:

Komenda nie zwraca żadnego wyniku, moduły nie zostały wczytane a więc:

Moduły zostały wczytane.

Sprawdzamy czy demon libvirtd działa:

Sprawdzamy czy możemy podłączyć się do KVM wydają prostą komendę o wyświetlenie listy systemów:

Wszystko w porządku, możemy się podłączyć.

 

Interfejs i switch wirtualnej sieci.

Switch wirtualnej sieci to softwarowy switch, który umożliwia wirtualnym maszynom komunikację między sobą i z Internetem. Maszyna gospodarza i wirtualne maszyny po uruchomieniu demona libvirtd widzą tego switcha jako interfejs virbr0, z domyślnym adresem IP: 192.168.122.1:

Interfejs virbr0 domyślnie pracuje w trybie NAT z maskaradą IP. Może też pracować w trybie izolowanym (isolated) i routowanym (routed). W trybie izolowanym maszyny wirtualne nie mogą komunikować się ze światem zewnętrznym. W trybie routowanym maszyny komunikują się z Internetem bezpośrednio (bez NAT).

 

Storage pool.

Storage pool to obszar na dysku używany do dostarczania przestrzeni magazynowej maszynom wirtualnym. Tworzony i zarządzany jest przez narzędzia libvirtool i może być używany przez wiele maszyn wirtualnych w jednym czasie. Storage pool może być pojedynczym plikiem w określonym katalogu lub może być systemem plików na partycji, logicznym woluminie lub całym dysku. Może być też zlokalizowany na zdalnym systemie i być dostępny przez iSCSI lub NFS. Uruchomiony storage pool można podzielić na jeden lub więcej woluminów i przydzielić konkretnym maszynom wirtualnym jako obszar pod dyski.

Red Hat rekomenduje aby używać katalogu /var/lib/libvirt/images do składowania wirtualnych dysków używanych przez wirtualne maszyny. W katalogu tym można również umieszczać pliki ISO z systemami, które będziemy instalować na maszynach wirtualnych. Katalog ten jest prekonfigurowany do użycia z SELinux-em, inna lokalizacja będzie wymagała specjalnej polityki dla SELinux-a. Jeżeli chcemy przeznaczyć pod wirtualizację katalog np.: /vm to:

 

Instalacja wirtualnej maszyny przy użyciu CLI.

Do instalacji systemów na maszynach wirtualnych służy komenda virt-install. Wspiera ona instalacje ze źródeł lokalnych i zdalnych (NFS, HTTP, FTP), a także nienadzorowane instalacje kickstart.

Sposób użycia komendy z minimalnymi opcjami:

Opcja Opis
--name  Nazwa wirtualnej maszyny.
--memory  Pamięć w MiB dla maszyny wirtualnej.
--vcpus Ilość wirtualnych procesorów dla vm.
--disk path/name Ścieżka do magazynu dla obrazu vm. Może być także nazwa puli lub woluminu.
--location Położenie lokalne lub zdalne obrazu  płyty instalacyjnej z systemem.
 -x Dodatkowe argumenty do przekazania instalatorowi (Anaconda), np. aby podać położenie pliku konfiguracyjnego kickstart jeżeli jest taka potrzeba.

Pełną listę opcji można uzyskać z manuala systemowego.

Warto skorzystać także z opcji –os-variant. Listę systemów operacyjnych obsługiwanych przez virt-install możemy zobaczyć stosując komendę:

 

Zarządzanie i monitorowanie wirtualnych maszyn przez CLI.

virsh to komenda, która służy do zarządzania vm przez CLI

Listę wszystkich opcji znajdziemy w manualu systemowym.

Aby podłączyć się w środowisku tekstowym do wymienionej wyżej wirtualnej maszyny o nazwie “centos7” można skorzystać z opcji console komendy virsh:

 

Instalacja i zarządzanie kvm w środowisku graficznym.

Najprościej wirtualnymi maszynami w środowisku KVM zarządzać korzystając z aplikacji virt-manager.

Leave a Reply

Your email address will not be published.