KVM

Opsætning af Libvirt QEMU og KVM stack på Debian

Opsætning af Libvirt QEMU og KVM stack på Debian
QEMU-KVM-baseret virtualisering er kernen i Linux-baseret virtualiseringsstak. Det er gratis og open source og er en af ​​de mest udbredte virtualiseringsteknologier i hele branchen. De fleste cloudtjenesteudbydere bruger KVM og med en god grund. Det tilbyder en meget effektiv og alligevel meget sikker virtualiseringsstak, og der er ingen indviklede licenser at håndtere. Dette er ikke tilfældet med din typiske opsætning af Hyper-V eller VMWare. Afvejningen er dog, at opsætningen kan være meget kompleks, især for uerfarne brugere. Denne artikel er beregnet til at reducere denne kompleksitet for læseren.

Med det sagt, lad os prøve at konfigurere vores egen KVM-hypervisor på en Debian 9-server .

Aktivering af VT-x- eller AMD-V-udvidelser

Ideelt set har du brug for en ren installation af din foretrukne Linux-distribution på en maskine (ikke en VM), der har en ret moderne CPU. De fleste moderne Intel-CPU'er understøtter VT-x-udvidelser, og på samme måde har AMD sine AMD-V-udvidelser. Disse udvidelser er “forbedringer” indbygget lige i silicium på din CPU, som muliggør hurtigere og mere sikker virtualisering. Du skal aktivere disse udvidelser inde fra dit bundbords BIOS / UEFI-menu. Se dit bundkort manual for mere information.

Hvis du ikke vil ødelægge din perfekt fungerende Linux-arbejdsstation, kan du bruge en virtuel maskine i skyen til at køre disse eksperimenter. DigitalOcean tilbyder for eksempel virtuelle maskiner, som har aktiveret indlejret virtualisering. Dette giver dig mulighed for at køre virtuelle computere inde i din cloud-hostede virtuelle enhed (dette kaldes indlejret virtualisering). Dette vil naturligvis være en meget ineffektiv måde at praktisk talt køre en hypervisor på, men som et eksperiment vil det klare sig fint. Sørg for at få mindst 4 GB hukommelse og mere end 2 CPU'er.

Når du har aktiveret de nævnte udvidelser, kan du bekræfte det ved at køre lscpu og se efter posten Virtualisering:

$ lscpu
.. .
Virtualisering: VT-x
.. .

Nu hvor vi har udvidelserne aktiveret tid til at bevæge os længere op i stakken.

Installation af KVM og QEMU

KVM (eller Kernel-Based Virtual Machine) består af et par Linux-kernemoduler, der vil drage fordel af de CPU-udvidelser, vi tidligere har aktiveret. QEMU på den anden side består af en masse brugerlandsprogrammer, der giver os emuleringsfunktioner. Som en selvstændig software kan QEMU bruges til at køre programmer fra en arkitektur, som ARM, på en anden som x86_64 og omvendt. Det kan bruges til at køre alt fra en enkelt binær fil til et komplet operativsystem.

Vi bruger selvfølgelig kun til virtualisering af x86_64-operativsystemer på x86_64-platformen. Og til det har vi brug for kun en enkelt pakke:

$ sudo apt installer qemu-kvm

Du kan kontrollere, at pakken har indlæst alle de krævede moduler ved at køre:

$ lsmod | grep kvm
kvm_intel 200704 0
kvm 598016 1 kvm_intel
irqbypass 16384 1 kvm

Det er alt hvad du behøver, teoretisk. Men du vil snart indse, at det er praktisk. Virtuelle maskiner er enormt komplekse, og vi kræver softwareindpakning til at håndtere alle de forskellige krav som netværk, filsystemstyring osv. På en ret automatiseret (og skalerbar måde). For at gøre dette har vi brug for Libvirt virtualiseringsbibliotek / dæmon.

Installation af Libvirt

Libvirt er en vigtig del af din virtualiseringsstak. Libvirtd-dæmonen kører virtualiseringsrelaterede tjenester i baggrunden. Tjenester, der lytter til anmodninger som "Opret en VM", "Ødelæg en VM", "Opret et netværk" osv. Og udfører dem i dem ved hjælp af de grundlæggende Linux-hjælpeprogrammer som qemu-binære filer, iptables osv.

Libvirt er meget generaliseret, og det kan bruges til at styre KVM-gæster, LXC-containere og Xen-virtualiseringsstak. Vi vil bare fokusere på Libvirt for KVM-gæster indtil videre. Libvirtd udsætter en API, der kan forbruges af GUI-applikationer som virt-manager eller oVirt eller kommandolinjeværktøjer som virt-install, virsh osv. Vi kan selv skrive vores egne brugerdefinerede klienter, der bruger den samme standard API.  Vi bruger kommandolinjeværktøjerne, som virsh og virt-install, for at holde tingene standardiserede.

Lad os installere alle disse værktøjer:

$ apt install libvirt-clients libvirt-daemon-system virtinst

Vi har også brug for en anden pakke libguestfs-tools, der hjælper os med at redigere eller ændre gæstens VM's harddiske og filsystemer.

Store! Nu har vi installeret hele stakken og ved, hvordan arkitekturen er lagt ud. For at bruge libvirt (og relaterede værktøjer) skal du tilføje din bruger til libvirt-qemu- og libvirt-grupperne.

$ sudo usermod -aG libvirt
$ sudo usermod -aG libvirt-qemu

Eller kør kommandoerne som rodbruger.

Virsh og starte standardnetværket

Virsh kommandolinjeværktøjet er noget, du vil bruge meget, når du administrerer dine virtuelle computere. Du kan bare skrive virsh og slippe til virsh kommandolinjegrænsefladen eller skrive virsh [Valgmuligheder] fra din almindelige skal. Gå gennem output af virsh-hjælp, når du sidder fast med nogle VM-relaterede operationer.

Den første virsh-kommando, vi bruger, påberåber det standardnetværk, som en VM kan oprette forbindelse til:

$ virsh net-autostart standard
$ virsh net-start standard

Dette starter standardnetværket og sørger for, at det startes automatisk, når værten genstarter. For at kontrollere detaljerne om dette standardnetværk skal du bruge kommandoen:

$ virsh net-dumpxml standard

Standard
3d723dc6-49a4-4f73-bf6d-623d6b46b099












Xml-filen kan vise dig rækkevidden af ​​mulige IP-adresser og hvordan de kommunikerer med omverdenen. Dybest set kommer trafikken til dem via en NAT, og de vil ikke være en del af din værts eksterne netværk. Du kan bruge Bridge Networking til at eksponere hver VM for værtsmaskinens LAN.

At starte en virtuel maskine

For at starte en virtuel maskine har vi brug for et installationsmedie (som ISO-installationen til ethvert operativsystem) og hvor mange CPU'er, og hvor meget hukommelse der skal tildeles til den virtuelle computer, og hvis den har brug for VNC. Dette trin er, hvor du virkelig kan sætte pris på et GUI-installationsprogram som virt-manager, men vi vil gøre det ved hjælp af en ret kompliceret virt-install-kommando.

Jeg kan godt lide at holde alle mine bootmedier på / var / lib / libvirt / boot og alle virtuelle computere og deres virtuelle harddisk på / var / lib / libvirt / images (standardplaceringen), dette forenkler organisationen.

$ cd / var / lib / libvirt / boot
$ wget http: // udgivelser.ubuntu.com / 18.04.2 / ubuntu-18.04.2-desktop-amd64.iso

Kommandoen ovenfor henter Ubuntu desktop ISO, du kan lige så let få CentOS eller enhver anden distribution, du ønsker.

For at oprette en ny VM og starte den køre:

$ virt-installation --virt-type kvm \
--navngiv myVM \
--hukommelse 2048 --vcpus = 2 \
--cdrom / var / lib / libvirt / boot / ubuntu-18.04.2-desktop-amd64.iso \
--diskstørrelse = 40 \
--grafik vnc, lyt = 0.0.0.0, port = 5900 \
--ingen autokonsol

Ovenstående kommando er faktisk kompliceret. Jeg foreslår, at du gemmer disse kommandoer i tekstfiler og kører dem som eksekverbare scripts, når du opretter en ny VM. De fleste af parametrene som virt-type og virt-name er ret selvforklarende. De er bare kedelige at skrive ned.

Den sidste mulighed for VNC-skærm starter en VNC-server og giver dig mulighed for at få konsoladgang til din VM eksternt ved at oprette forbindelse til værtens port 5900. Åbn en VNC-klient på dit skrivebord, og gå til din KVM-værts IP ved port 5900. Sørg for, at du når værtens IP og ikke VM's IP. Din VNC opretter forbindelse til videoudgangen på din VM, og du kan fortsætte med installationen.

Hvor skal vi næste?

Herfra kan du prøve at stoppe, stoppe og slette VM'erne. Du kan også ændre den underliggende infrastruktur ved at tilføje puljer til opbevaring og konfiguration af bronetværk. Alle konfigurationsfiler til individuelle virtuelle computere, netværksgrænseflader og lagringsbassiner er gemt på / etc / libvirt / og / etc / libvirt / qemu.

Nogle gange bliver du fysisk nødt til at slette de harddiskfiler, der er gemt på / lib / libvirt / images, selv efter at du har fjernet VM fra libvirt. For at automatisere tingene yderligere, prøv at importere qcow2-billeder, som de fleste linux-distributioner som Ubuntu og CentOS. Disse har OS forudinstalleret i dem.

Konklusion

Opsætning af dette er intetsteds så let som opsætning af VirtualBox, og årsagen bag dette er mangfoldig. Det meste af stakken er kompliceret, fordi den er designet til at være modulær og meget skalerbar. Det antager ikke antagelser om, hvor du kører VM. Miljøet kan være et personligt skrivebord eller et datacenter. Arbejde med en GUI kan hjælpe med at reducere denne kompleksitet til en vis grad. Disse systemer er dog designet til at arbejde med en REST API for at oprette forbindelse til din organisations faktureringssystemer, overvågningssystemer osv. De er næsten aldrig berørt af et menneske efter at være blevet indsat.

Når det er sagt, er automatisering navnet på spillet med libvirt og qemu-kvm. Gennemgå den officielle dokumentation, og skriv dit eget seje script for at få en flåde VM'er til at fortælle os, hvis du fandt denne tutorial nyttig.

Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...
Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...
Sådan udvikler du et spil på Linux
For et årti siden ville ikke mange Linux-brugere forudsige, at deres foretrukne operativsystem en dag ville være en populær spilplatform til kommercie...