Uz to, pokušajmo postaviti naš vlastiti KVM hipervizor na Debian 9 poslužitelju .
Omogućavanje VT-x ili AMD-V proširenja
U idealnom slučaju trebat će vam čista instalacija vaše omiljene Linux distribucije na stroju (a ne na VM-u) koji ima prilično moderan CPU. Većina modernih Intelovih procesora podržava VT-x proširenja i, slično tome, AMD ima svoja AMD-V proširenja. Ova su proširenja "poboljšanja" ugrađena točno u silicij vašeg CPU-a što omogućuje bržu i sigurniju virtualizaciju. Ova proširenja morate omogućiti unutar BIOS / UEFI izbornika vaše matične ploče. Dodatne informacije potražite u priručniku matične ploče.
Ako ne želite uništavati svoju savršeno radnu Linux radnu stanicu, možete upotrijebiti virtualni stroj u oblaku za pokretanje ovih eksperimenata. DigitalOcean, na primjer, nudi virtualne strojeve s omogućenom ugniježđenom virtualizacijom. To vam omogućuje pokretanje VM-ova unutar VM-a hostiranog u oblaku (to je poznato kao ugniježđena virtualizacija). Očito je da će ovo biti vrlo neučinkovit način za praktično pokretanje hipervizora, ali kao eksperiment to će učiniti sasvim u redu. Pripazite da nabavite najmanje 4 GB memorije i više od 2 CPU-a.
Nakon što omogućite navedena proširenja, to možete provjeriti pokretanjem lscpu i traženjem stavke Virtualizacija:
$ lscpu.. .
Virtualizacija: VT-x
.. .
Sad kad smo proširenjima omogućili vrijeme za dalje pomicanje u hrpi.
Instaliranje KVM-a i QEMU-a
KVM (ili virtualni stroj zasnovan na jezgri) sastoji se od nekoliko modula jezgre Linuxa koji će iskoristiti CPU proširenja koja smo ranije omogućili. QEMU se, s druge strane, sastoji od gomile korisničkih programa koji nam pružaju mogućnosti emulacije. Kao samostalni softver QEMU se može koristiti za pokretanje programa iz jedne arhitekture, poput ARM-a, na drugoj poput x86_64 i obrnuto. Može se koristiti za pokretanje bilo čega, od jedne binarne datoteke do kompletnog operativnog sustava.
Mi ćemo ga, naravno, koristiti samo za virtualizaciju x86_64 operativnih sustava na x86_64 platformi. A za to nam treba samo jedan paket:
$ sudo apt instalirati qemu-kvmMožete provjeriti je li paket učitao sve potrebne module, pokretanjem:
$ lsmod | grep kvmkvm_intel 200704 0
kvm 598016 1 kvm_intel
irqbypass 16384 1 kvm
To je sve što vam treba, teoretski. Ali uskoro ćete shvatiti da je to praktično. Virtualni strojevi izuzetno su složeni i potreban nam je omot softvera za upravljanje svim različitim zahtjevima poput umrežavanja, upravljanja datotečnim sustavom itd. Na prilično automatiziran (i skalabilan način). Da bismo to učinili potrebna nam je knjižnica / demon virtualizacije Libvirt.
Instaliranje Libvirt-a
Libvirt je najznačajniji dio vašeg stoga za virtualizaciju. Dabon libvirtd u pozadini pokreće usluge povezane s virtualizacijom. Usluge koje slušaju zahtjeve poput "Stvori VM", "Uništi VM", "Stvori mrežu" itd. I izvršava ih u njima koristeći osnovne Linux uslužne programe poput qemu binarnih datoteka, iptables itd.
Libvirt je vrlo generaliziran i može se koristiti za upravljanje KVM gostima, LXC spremnicima i Xen stekom za virtualizaciju. Za sada ćemo se usredotočiti samo na Libvirt za goste KVM-a. Libvirtd izlaže API koji mogu koristiti GUI aplikacije poput virt-manager ili oVirt ili alati naredbenog retka poput virt-install, virsh itd. Možemo pisati čak i vlastite prilagođene klijente koji koriste isti standardni API. Koristit ćemo alate naredbenog retka, poput virsh i virt-install, kako bi stvari bile standardizirane.
Instalirajmo sve ove alate:
$ apt instalirajte libvirt-klijenti libvirt-daemon-system virtinstTrebat će nam i drugi paket libguestfs-tools koji će nam pomoći u uređivanju ili izmjeni tvrdih diskova i datotečnih sustava gostujućih VM-a.
Sjajno! Sada smo instalirali cijeli stog i znamo kako je postavljena arhitektura. Da biste koristili libvirt (i srodne alate), dodajte svog korisnika u grupe libvirt-qemu i libvirt.
$ sudo usermod -aG libvirt$ sudo usermod -aG libvirt-qemu
Ili pokrenite naredbe kao root korisnik.
Virsh i pokretanje zadane mreže
Uslužni program virsh naredbenog retka nešto ćete što ćete koristiti prilikom upravljanja VM-ovima. Jednostavno možete utipkati virsh i ući u sučelje naredbenog retka virsh ili utipkati virsh
Prva virsh naredba koju ćemo upotrijebiti pozvat će zadanu mrežu na koju se VM može povezati:
$ virsh net-autostart zadaniZadana vrijednost $ virsh net-start
Ovo će pokrenuti zadanu mrežu i pobrinut će se da se automatski pokrene kada se domaćin ponovno pokrene. Da biste provjerili detalje o ovoj zadanoj mreži, upotrijebite naredbu:
$ virsh net-dumpxml zadanoDatoteka xml može vam pokazati raspon mogućih IP adresa i način na koji će komunicirati s vanjskim svijetom. Uglavnom, promet će im stizati putem NAT-a i oni neće biti dio vanjske mreže vašeg domaćina. Bridge Networking možete koristiti za izlaganje svakog VM-a LAN-u glavnog računala.
Za pokretanje virtualnog stroja
Za pokretanje virtualnog stroja potreban nam je instalacijski medij (poput instalacijskog ISO-a za bilo koji operativni sustav) i koliko CPU-a i koliko memorije treba dodijeliti VM-u i treba li VNC. U ovom koraku možete zaista cijeniti GUI instalater kao što je virt-manager, međutim, mi ćemo to učiniti pomoću prilično složene naredbe virt-install.
Volim zadržati sve svoje medije za pokretanje na / var / lib / libvirt / boot, a sve VM-ove i njihov virtualni tvrdi disk na / var / lib / libvirt / images (zadano mjesto), što pojednostavljuje organizaciju.
$ cd / var / lib / libvirt / boot$ wget http: // izdanja.ubuntu.com / 18.04.2 / ubuntu-18.04.2-radna površina-amd64.izo
Naredba iznad donosi ISO Ubuntu radne površine, možete jednako lako dobiti CentOS ili bilo koju drugu distribuciju koju želite.
Da biste stvorili novi VM i pokrenuli ga:
$ virt-install --virt-type kvm \--ime myVM \
--memorija 2048 --vcpus = 2 \
--cdrom / var / lib / libvirt / boot / ubuntu-18.04.2-radna površina-amd64.iso \
--veličina diska = 40 \
--grafika vnc, slušaj = 0.0.0.0, priključak = 5900 \
--noautoconsole
Gornja naredba je doista složena. Predlažem da te naredbe spremite u tekstualne datoteke i pokrenete ih kao izvršne skripte kad god kreirate novi VM. Većina parametara poput virt-type i virt-name prilično su razumljive. Jednostavno su dosadni zapisivati.
Posljednja opcija za VNC prikaz pokrenut će VNC poslužitelj i omogućit će vam daljinski pristup VM-u, povezivanjem na priključak domaćina 5900. Otvorite VNC klijent na radnoj površini i idite na IP vašeg KVM domaćina na portu 5900. Obavezno dosegnite IP hosta, a ne IP VM-a. Vaš VNC spojit će se na video izlaz vašeg VM-a i možete nastaviti s instalacijom.
Kamo dalje?
Od ovog trenutka možete pokušati zaustaviti, zaustaviti i izbrisati VM-ove. Također možete izmijeniti temeljnu infrastrukturu dodavanjem spremišta za pohranu i konfiguriranjem mostnih mreža. Sve konfiguracijske datoteke za pojedinačne VM-ove, mrežna sučelja i spremišta pohranjene su na / etc / libvirt / i / etc / libvirt / qemu.
Ponekad ćete morati fizički izbrisati datoteke tvrdog diska spremljene na / lib / libvirt / images čak i nakon uklanjanja VM-a iz libvirt. Da biste automatizirali stvari, pokušajte uvesti qcow2 slike koje većina linux distribucija poput Ubuntu-a i CentOS-a. U njima je unaprijed instaliran OS.
Zaključak
Ovo postavljanje nije nigdje tako lako kao postavljanje VirtualBox-a, a razlog tome je višestruk. Većina stoga složena je jer je dizajnirana da bude modularna i visoko skalabilna. Ne donosi nikakve pretpostavke o tome gdje koristite VM. Okruženje može biti osobna radna površina ili podatkovni centar. Rad s grafičkim sučeljem može donekle smanjiti ovu složenost. Međutim, ti su sustavi dizajnirani za rad s REST API-jem za povezivanje sa sustavima naplate u vašoj organizaciji, sustavima za nadzor itd. Čovjek ih gotovo nikad ne dotakne nakon raspoređivanja.
Ipak, automatizacija je naziv igre s libvirtom i qemu-kvm. Pregledajte službenu dokumentaciju i napišite vlastiti skript kako biste zaokružili flotu VM-ova i javite nam ako vam je ovo uputstvo korisno.