O libvirt

O libvirt
Libvirt jest jednym z najpopularniejszych narzędzia do zarządzania wirtualizacją. Składa się z interfejsu API zarządzania i demona, z którym możesz wchodzić w interakcje ze stosem wirtualizacji. Libvirt dąży do ujednolicenia procesu zarządzania dla wszystkich różnych technologii wirtualizacji od KVM do VMware ESX, a nawet Bhyve. Może również zarządzać pojemnikami LXC, a nawet niektórymi technologiami parawirtualizacji, takimi jak Xen.

Tylko dlatego, że obsługuje dużą gamę technologii, nie oznacza, że ​​musisz zapoznać się z nimi wszystkimi. Możesz skupić się na jednej technologii, takiej jak KVM i zbudować swoje wrażenia libvirt wokół tego. Ten artykuł spróbuje przedstawić kompleksową krytykę technologii z osobistego doświadczenia autora.

Tło

Aby dowiedzieć się, co jest zdolna libvirt i jak możesz go używać we własnym systemie, możesz postępować zgodnie z następującymi przewodnikami:

  1. Zainstaluj KVM i Libvirt na Debian
  2. Libvirt z Pythonem

Jeśli znasz już narzędzia takie jak Virsh, Virst-install, Virt-Manager, Ovirt itp., To już używasz libvirt, nawet nie wiedząc. Wspomniane narzędzia używają libvirt w zapleczu i zapewniają przyjazny dla użytkownika interfejs, czy to wiersz poleceń, czy GUI.

Architektura

Libvirt jest zaprojektowany do współpracy z dowolnym hiperwizorem i rozrosła się na przestrzeni lat, aby pracować z szeroką gamą hiperwizorów. Demon Libvirt ujawnia interfejs API, którego może być używane przez aplikacje takie jak Virt-Manager lub Virsh (a nawet niestandardowe skrypty Python). Żądania użytkowników są odbierane przez API. Te prośby mogą być czymś w rodzaju utworzenia gościa KVM lub pokazania mi pamięci używanej przez danego Contianera LX itp.

Demon libvirt następnie przekazuje żądanie odpowiedniego sterownika hiperwizora Libvirt. Ten kierowca rozumie i wdraża wszystkie szczegóły danej technologii wirtualizacji i odpowiednio realizuje instrukcje.

Istnieje inna klasa sterowników do obsługi przechowywania, a nawet sieci maszyn wirtualnych.

Baseny i objętości

VMS potrzebują dużo miejsca do przechowywania. Sama technologia przechowywania jest bardzo zmienna od hiperwizora po hiperwizor. VMware używa własnego formatu VMDK, QEMU lubi korzystać z QCOW2, istnieje również surowe obrazy dysku, a obrazy LXC to inna historia. Ponadto chciałbyś grupować wszystkie obrazy dysków VM i dostarczyć im inne nośniki, takie jak serwer NFS, zestaw danych ZFS lub tylko katalog. Pozwala to korzystać z libvirt w różnych przypadkach użycia od jednego serwera domowego po skalowalne rozwiązanie wirtualizacji klasy korporacyjnej.

W libvirt wernacular pojedyncze wirtualne urządzenie pamięciowe powiązane z dowolną maszyną wirtualną, takiego jak QCOW2, RAW lub VMDK Plik obrazu maszyny wirtualnej lub Montaż jest znany jako A tom. Media pamięci używane na hosta do przechowywania grupy powiązanych tomów jest znane jako a basen. Możesz użyć serwerów NFS jako puli lub zestawu danych ZFS, jak wspomniano wcześniej. Jeśli nie masz fantazyjnego rozwiązania do przechowywania, możesz po prostu użyć katalogu.

Domyślnie Libvirt ma dwa różne baseny. Pierwszy to/var/lib/libvirt/obrazy i/var/lib/libvirt/boot. Wolume dla pojedynczej maszyny wirtualnej można podzielić na wiele pul basenów. Na przykład przechowuję wszystkie czyste obrazy w chmurze i ISO instalatora systemu operacyjnego w puli/var/lib/libvirt/boot, a dla poszczególnych korzeni VMS jest instalowany w plikach obrazu przechowywanych w/var/lib/libvirt/obrazach.

Możesz nawet mieć pojedynczą pulę dla pojedynczej maszyny wirtualnej lub możesz dalej podzielić pule na migawki VM, kopie zapasowe itp. Wszystko jest bardzo elastyczne i pozwala organizować dane zgodnie z wygodą.

Konfiguracje

Virsh to popularne narzędzie do konfigurowania wszystkiego z maszyny wirtualnej, wirtualnej sieci maszyn, a nawet pamięci. Same pliki konfiguracyjne żyją w formacie XML. Wydasz się, jak:

$ virsh suppxml vm1
$ virsh edit vm1

I podobnie istnieją podkomendy, takie jak Net-DumpXML i pule-edit do wyświetlenia lub konfiguracji konfiguracji puli, sieci itp. Jeśli jesteś ciekawy, gdzie żyją te pliki konfiguracyjne, możesz przejść do/etc/libvirt/i znaleźć Direktorium Hipervisors. Direktory nadrzędne/etc/libvirt/sam zawiera wiele globalnych konfiguracji, takich jak sterowniki (e.G Qemu.CONF i LXC.conf) i ich konfiguracja i domyślne zachowanie libvirt.

Aby spojrzeć na określoną konfigurację poszczególnych komponentów, takich jak maszyny wirtualne, pule i objętości, musisz przejść do odpowiednich katalogów. Dla gości Qemu jest to/etc/libvirt/qemu

root@deb:/etc/libvirt/qemu# ls -al
Łącznie 24
DRWXR-XR-X 4 Root root 4096 21 kwietnia 10:39 .
DRWXR-XR-X 6 Root root 4096 28 kwietnia 17: 19…
DRWXR-XR-X 2 Root root 4096 21 kwietnia 10:39 Autostart
DRWXR-XR-X 3 Root root 4096 14 kwietnia 13:49 Sieci
-RW ------- 1 Root root 3527 20 kwietnia 19:10 VM1.XML
-RW ------- 1 Root root 3527 20 kwietnia 19:09 VM2.XML

Katalog Autostart będzie zawierał symlinki do VM1.XML i VM2.XML Jeśli uleciłeś maszynom wirtualnym do Autostart, gdy system hosta uruchamia się ($ virsh autostart vm1).

Podobnie,/etc/libvirt/qemu/sieć zawiera konfiguracje dla domyślnej sieci gościa QEMU. /Etc/libvirt/magazyn zawiera XML definiujące pule pamięci.

Wniosek

Jeśli jesteś zainteresowany skonfigurowaniem własnego hosta wirtualizacji, dobrym miejscem na rozpoczęcie będzie tym artykułem, w którym pokazuję, jak zainstalować gości Qemu-KVM na hosta Debiana za pomocą libvirt i powiązanych narzędzi.

Następnie możesz zacząć grać z Virsh Cli oraz zobaczyć i zarządzać podmiotami takimi jak domena (libvirt nazywa gości domena) Sieci, pule pamięci i objętości. Dzięki temu będziesz wystarczająco komfortowy z technologią, którą możesz przejść do innych koncepcji, takich jak migawki i filtr sieciowy. Mam nadzieję, że ten artykuł okaże się dla ciebie dobrym punktem wyjścia.