Powiedziawszy to, spróbujmy skonfigurować nasz własny hiperwizor KVM na serwerze Debian 9 .
Idealnie, będziesz potrzebować czystej instalacji swojej ulubionej dystrybucji Linux na maszynie (nie VM), która ma dość nowoczesny procesor. Większość nowoczesnych rozszerzeń procesorów Intel VT-X i podobnie AMD ma swoje rozszerzenia AMD-V. Te rozszerzenia są „ulepszeniami” wbudowanymi bezpośrednio w krzem twojego procesora, który umożliwia szybszą i bezpieczniejszą wirtualizację. Musisz włączyć te rozszerzenia z Menu BIOS/UEFI swojej płyty głównej. Więcej informacji można znaleźć w podręczniku płyty głównej.
Jeśli nie chcesz zachować doskonale działającej stacji roboczej Linux, możesz użyć maszyny wirtualnej w chmurze, aby przeprowadzić te eksperymenty. Na przykład Digitalocean oferuje maszyny wirtualne, które zagnieżdżą się wirtualizację. Pozwala to na uruchamianie maszyn wirtualnych wewnątrz maszyny wirtualnej hostowanej w chmurze (jest to znane jako zagnieżdżona wirtualizacja). Oczywiście będzie to bardzo nieefektywny sposób na praktyczne uruchomienie hiperwizora, ale jako eksperyment będzie dobrze. Pamiętaj, aby uzyskać co najmniej 4 GB pamięci i więcej niż 2 procesory.
Po włączeniu wspomnianych rozszerzeń możesz je sprawdzić, uruchamiając LSCPU i szukając wpisu wirtualizacji:
$ LSCPU
… .
Wirtualizacja: VT-X
… .
Teraz, gdy mamy rozszerzenia umożliwiające czas przejście w górę w stosie.
Instalowanie KVM i Qemu
KVM (lub wirtualna maszyna na bazie jądra) składa się z kilku modułów jądra Linux, które skorzystają z rozszerzeń procesora, które wcześniej włączyliśmy. Z drugiej strony Qemu składa się z wielu programów użytkownika, które zapewniają nam możliwości emulacji. Jako samodzielne oprogramowanie QEMU może być używane do uruchamiania programów z jednej architektury, takich jak ARM, na innej takiej jak x86_64 i odwrotnie. Można go użyć do uruchamiania wszystkiego, od jednego pliku binarnego do kompletnego systemu operacyjnego.
Oczywiście użyjemy go tylko do wirtualizacji systemów operacyjnych x86_64 na platformie x86_64. I do tego potrzebujemy tylko jednego pakietu:
$ sudo apt instal qemu-kvm
Możesz sprawdzić, czy pakiet załadował wszystkie wymagane moduły, uruchamiając:
$ lsmod | GREP KVM
KVM_INTEL 200704 0
KVM 598016 1 KVM_INTEL
IrqBypass 16384 1 kvm
To wszystko, czego potrzebujesz, teoretycznie. Ale wkrótce zdasz sobie sprawę, że to praktyczne. Maszyny wirtualne są niezwykle złożone i potrzebujemy opakowania oprogramowania do zarządzania wszystkimi wymaganiami, takimi jak sieci, zarządzanie systemem plików itp. W dość zautomatyzowany (i skalowalny sposób). Aby to zrobić, potrzebujemy biblioteki wirtualizacji libvirt/demona.
Instalowanie libvirt
Libvirt to kwintesencja części stosu wirtualizacji. Demon libvirtd uruchamia usługi związane z wirtualizacją w tle. Usługi, które słucha żądań, takich jak „Utwórz maszynę wirtualną”, „Zniszcz maszynę wirtualną”, „Utwórz sieć” itp. I wykonują je w nich za pomocą podstawowych narzędzi Linux, takich jak binarie Qemu, iptable itp.
Libvirt jest bardzo uogólniony i może być używany do zarządzania gośćmi KVM, kontenerami LXC i stosem wirtualizacji Xen. Na razie skupimy się na libvirt dla gości KVM. Libvirtd ujawnia interfejs API, który może być zużyte przez aplikacje GUI, takie jak Virt-Manager, Ovirt lub narzędzia wiersza poleceń, takie jak Virt-Install, Virsh itp. Możemy napisać nawet naszych niestandardowych klientów, którzy używają tego samego standardowego interfejsu API. Będziemy używać narzędzi wiersza poleceń, takich jak Virsh i Virst-install, aby utrzymać standaryzowanie rzeczy.
Zainstalujmy wszystkie te narzędzia:
APT INSTALOWAĆ libvirt-clients libvirt-daemon-system virtinst
Będziemy również potrzebować kolejnych pakietów libguestfs-tools, aby pomóc nam edytować lub zmodyfikować dyski twardych i systemów plików gościa.
Świetnie! Teraz zainstalowaliśmy cały stos i wiemy, jak architektura jest ułożona. Aby użyć libvirt (i powiązanych narzędzi), dodaj swojego użytkownika do grup libvirt-qemu i libvirt.
$ sudo usermod -Ag libvirt
$ sudo usermod -Ag libvirt -qemu
Lub uruchom polecenia jako użytkownika root.
Virsh i uruchomienie domyślnej sieci
Narzędzie wiersza poleceń Virsh jest czymś, czego użyjesz, podczas zarządzania maszynami wirtualnymi. Możesz po prostu wpisać Virsh i wpaść do interfejsu wiersza poleceń Virsh lub wpisać Virsh [opcje] ze zwykłej powłoki. Przejdź przez wyjście pomocy Virsh za każdym razem, gdy utkniesz z jakąś operacją wirtualną.
Pierwsze polecenie Virsha, którego użyjemy, wywoła domyślną sieć, z którą może połączyć się VM:
$ virsh net-autostart domyślnie
$ virsh net-start domyślnie
To uruchomi domyślną sieć i upewni się, że zostanie uruchomiona automatycznie, gdy hosta się uruchom ponownie. Aby sprawdzić szczegóły dotyczące tej domyślnej sieci, użyj polecenia:
$ virsh net-dumpxml domyślniedomyślny 3D723DC6-49A4-4F73-BF6D-623D6B46B099
Plik XML może pokazać zakres możliwych adresów IP i sposób komunikowania się ze światem zewnętrznym. Zasadniczo ruch przyjedzie do nich za pośrednictwem NAT i nie będą częścią zewnętrznej sieci hosta. Możesz użyć sieci mostów, aby ujawnić każdą maszynę wirtualną na sieci LAN maszyny hosta.
Aby uruchomić maszynę wirtualną
Aby uruchomić maszynę wirtualną, potrzebujemy nośnika instalacyjnego (takiego jak instalacja ISO dla dowolnego systemu operacyjnego) oraz liczby procesorów i ile pamięci należy przydzielić do maszyny wirtualnej, a jeśli potrzebuje VNC. W tym etapie można naprawdę docenić instalatora GUI, takiego jak Virt-Manager, jednak zrobimy to za pomocą dość złożonego polecenia Virt-Install.
Lubię przechowywać wszystkie moje multimedia rozruchowe w/var/lib/libvirt/boot oraz wszystkie maszyny wirtualne i ich wirtualny dysk twardy w/var/lib/libvirt/obrazy (domyślna lokalizacja) To upraszcza organizację.
$ cd/var/lib/libvirt/boot
$ wget http: //.Ubuntu.com/18.04.2/Ubuntu-18.04.2-Desktop-AMD64.ISO
Polecenie powyżej pobiera ISO Ubuntu Desktop, możesz równie łatwo zdobyć centos lub dowolną inną dystrybucję, której pragniesz.
Aby utworzyć nową maszynę wirtualną i uruchomić ją:
$ vir-install-virt typu kvm \
--Nazwa myvm \
--Pamięć 2048 --vcpus = 2 \
--cdrom/var/lib/libvirt/boot/ubuntu-18.04.2-Desktop-AMD64.ISO \
--Rozmiar dysku = 40 \
--Graphics VNC, słuchaj = 0.0.0.0, port = 5900 \
--Noautoconsole
Powyższe polecenie jest rzeczywiście skomplikowane. Sugeruję zapisywanie tych poleceń w plikach tekstowych i uruchomienie tych jako skryptów wykonywalnych za każdym razem, gdy tworzysz nową maszynę wirtualną. Większość parametrów, takich jak cnot i nazwa wirtualna, jest dość oczywista. Są po prostu żmudni, aby zapisać.
Ostatnia opcja wyświetlania VNC uruchomi serwer VNC i pozwoli ci mieć dostęp do konsoli do maszyny wirtualnej, łącząc się z portem hosta 5900. Otwórz klienta VNC na pulpicie i przejdź do IP swojego hosta KVM w porcie 5900. Upewnij się, że osiągniesz adres IP hosta, a nie adres IP VM. Twój VNC połączy się z wyjściem wideo Twojej maszyny wirtualnej i możesz kontynuować instalację.
Gdzie teraz?
Odtąd możesz spróbować zatrzymać, zatrzymać i usuwać maszyny wirtualne. Możesz także zmodyfikować infrastrukturę podstawową, dodając pule do przechowywania i konfigurowanie sieci mostowych. Wszystkie pliki konfiguracyjne, dla poszczególnych maszyn wirtualnych, interfejsy sieciowe i pule pamięci są przechowywane na/etc/libvirt/i itp.
Czasami będziesz musiał fizycznie usunąć pliki dysku twardego zapisane w/lib/libvirt/obrazy nawet po usunięciu maszyny wirtualnej z libvirt. Aby zautomatyzować dalej, spróbuj zaimportować obrazy QCOW2, które większość dystrybucji Linux, takie jak Ubuntu i Centos. One mają w nich system operacyjny.
Konfigurowanie tego nie jest tak proste, jak konfigurowanie VirtualBox, a powód tego jest różnorodny. Większość stosu jest skomplikowana, ponieważ jest zaprojektowana tak, aby była modułowa i wysoce skalowalna. Nie przyznaje żadnych założeń, gdzie prowadzisz VM. Środowisko może być osobistym pulpitem lub centrum danych. Praca z GUI może w pewnym stopniu zmniejszyć tę złożoność. Systemy te są jednak zaprojektowane do pracy z interfejsem API REST w celu połączenia z systemami rozliczeniowymi organizacji, systemami monitorowania itp. Prawie nigdy nie są dotknięte przez człowieka po rozmieszczeniu.
To powiedziawszy, automatyzacja to nazwa gry z libvirt i qemu-kvm. Przejrzyj oficjalną dokumentację i napisz własny scenariusz, aby zakręcić flotę maszyn wirtualnych i daj nam znać, jeśli uznałeś ten samouczek przydatny.