KVM

Konfigurera Libvirt QEMU och KVM stack på Debian

Konfigurera Libvirt QEMU och KVM stack på Debian
QEMU-KVM-baserad virtualisering är kärnan i Linux-baserad virtualiseringsstack. Det är gratis och öppen källkod och är en av de vanligaste virtualiseringsteknikerna i branschen. De flesta molntjänstleverantörer använder KVM och av goda skäl. Det erbjuder en mycket effektiv och ändå mycket säker virtualiseringsstack och det finns ingen krånglig licens att hantera. Detta är inte fallet med din typiska Hyper-V- eller VMWare-installation. Avvägningen är dock att installationen kan vara mycket komplex, särskilt för oerfarna användare. Den här artikeln är avsedd att minska denna komplexitet för läsaren.

Med det sagt, låt oss försöka konfigurera vår egen KVM hypervisor på en Debian 9-server .

Aktiverar VT-x eller AMD-V-tillägg

Helst behöver du en ren installation av din favorit Linux-distribution på en maskin (inte en virtuell dator) som har en ganska modern CPU. De flesta moderna Intel-processorer stöder VT-x-tillägg och på samma sätt har AMD sina AMD-V-tillägg. Dessa tillägg är "förbättringar" inbyggda i kisel på din CPU vilket möjliggör snabbare och säkrare virtualisering. Du måste aktivera dessa tillägg inifrån ditt moderkorts BIOS / UEFI-meny. Se moderkortshandboken för mer information.

Om du inte vill lura din perfekt fungerande Linux-arbetsstation kan du använda en virtuell maskin i molnet för att köra dessa experiment. DigitalOcean erbjuder till exempel virtuella maskiner som har aktiverat kapslad virtualisering. Detta låter dig köra virtuella datorer i din molnhostade virtuella dator (detta kallas nestad virtualisering). Uppenbarligen kommer detta att vara ett mycket ineffektivt sätt att praktiskt taget köra en hypervisor men som ett experiment kommer det att gå bra. Se till att du får minst 4 GB minne och mer än 2 processorer.

När du har aktiverat nämnda tillägg kan du verifiera det genom att köra lscpu och leta efter virtualiseringsposten:

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

Nu när vi har förlängningarna aktiverade tid för att flytta upp längre i stacken.

Installerar KVM och QEMU

KVM (eller Kernel-Based Virtual Machine) består av några Linux-kärnmoduler som kommer att dra nytta av de CPU-tillägg som vi aktiverade tidigare. QEMU å andra sidan består av en massa användarlandsprogram som ger oss emuleringsfunktioner. Som en fristående programvara kan QEMU användas för att köra program från en arkitektur, som ARM, på en annan som x86_64 och vice versa. Den kan användas för att köra allt från en enda binär fil till ett komplett operativsystem.

Vi kommer naturligtvis bara använda den för att virtualisera x86_64-operativsystem på x86_64-plattformen. Och för det behöver vi bara ett enda paket:

$ sudo apt installera qemu-kvm

Du kan verifiera att paketet har laddat alla nödvändiga moduler genom att köra:

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

Det är allt du behöver, teoretiskt. Men du kommer snart att inse att det är praktiskt. Virtuella maskiner är enormt komplexa och vi kräver mjukvara för att hantera alla olika krav som nätverk, filsystemhantering osv på ett ganska automatiserat (och skalbart sätt). För att göra detta behöver vi Libvirt virtualiseringsbibliotek / demon.

Installerar Libvirt

Libvirt är en viktig del av din virtualiseringsstack. Libvirtd-demonen kör virtualiseringsrelaterade tjänster i bakgrunden. Tjänster som lyssnar på förfrågningar som "Skapa en virtuell dator", "Förstör en virtuell dator", "Skapa ett nätverk" etc och kör dem i dem med de grundläggande Linux-verktygen som qemu-binärer, iptables, etc.

Libvirt är mycket generaliserat och kan användas för att hantera KVM-gäster, LXC-containrar och Xen-virtualiseringsstack. Vi fokuserar bara på Libvirt för KVM-gäster för tillfället. Libvirtd exponerar ett API som kan konsumeras av GUI-applikationer som virt-manager eller oVirt eller kommandoradsverktyg som virt-install, virsh, etc. Vi kan skriva till och med våra egna anpassade klienter som använder samma standard-API.  Vi kommer att använda kommandoradsverktygen, som virsh och virt-install, för att hålla saker standardiserade.

Låt oss installera alla dessa verktyg:

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

Vi behöver också ett annat paket libguestfs-verktyg för att hjälpa oss redigera eller ändra gäst-VM: s hårddiskar och filsystem.

Bra! Nu har vi installerat hela stacken och vet hur arkitekturen är utformad. För att använda libvirt (och relaterade verktyg) lägg till din användare i libvirt-qemu- och libvirt-grupperna.

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

Eller kör kommandona som root-användare.

Virsh och starta standardnätverket

Virsh kommandoradsverktyget är något du kommer att använda mycket när du hanterar dina virtuella datorer. Du kan helt enkelt skriva in virsh och släppa in i virsh kommandoradsgränssnitt eller skriva virsh [Alternativ] från ditt vanliga skal. Gå igenom produktionen av virsh-hjälp när du fastnar med någon VM-relaterad operation.

Det första virsh-kommandot vi använder kommer att anropa standardnätverket som en virtuell dator kan ansluta till:

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

Detta startar standardnätverket och ser till att det startas automatiskt när värden startar om. För att kontrollera detaljerna om detta standardnätverk använd kommandot:

$ virsh net-dumpxml standard

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












Xml-filen kan visa dig olika IP-adresser och hur de kommer att kommunicera med omvärlden. I grund och botten kommer trafiken till dem via en NAT och de kommer inte att vara en del av din värds externa nätverk. Du kan använda Bridge Networking för att exponera varje virtuell dator för värdmaskinens LAN.

För att starta en virtuell maskin

För att starta en virtuell maskin behöver vi ett installationsmedium (som ISO-installationen för alla operativsystem) och hur många processorer och hur mycket minne som behöver tilldelas till den virtuella datorn och om den behöver VNC. Detta steg är där du verkligen kan uppskatta ett GUI-installationsprogram som virt-manager, men vi kommer att göra det med ett ganska komplext virt-install-kommando.

Jag vill behålla alla mina startmedier på / var / lib / libvirt / boot och alla virtuella datorer och deras virtuella hårddisk på / var / lib / libvirt / images (standardplatsen) detta förenklar organisationen.

$ cd / var / lib / libvirt / boot
$ wget http: // utgåvor.ubuntu.com / 18.04.2 / ubuntu-18.04.2-skrivbord-amd64.iso

Kommandot ovan hämtar Ubuntu desktop ISO, du kan lika enkelt få CentOS eller någon annan distribution som du önskar.

Så här skapar du en ny virtuell dator och startar den:

$ virt-install - kvm av typen virt \
--namnge myVM \
--minne 2048 --vcpus = 2 \
--cdrom / var / lib / libvirt / boot / ubuntu-18.04.2-skrivbord-amd64.iso \
--diskstorlek = 40 \
--grafik vnc, lyssna = 0.0.0.0, port = 5900 \
--ingen autokonsol

Ovanstående kommando är verkligen komplicerat. Jag föreslår att du sparar dessa kommandon i textfiler och kör dem som körbara skript när du skapar en ny virtuell dator. De flesta parametrar som virt-type och virt-name är ganska självförklarande. De är bara tråkiga att skriva ner.

Det sista alternativet för VNC-skärm startar en VNC-server och gör att du kan få konsolåtkomst till din virtuella dator genom att ansluta till värdens port 5900. Öppna en VNC-klient på skrivbordet och gå till din KVM-värds IP vid port 5900. Se till att du når värdens IP och inte den virtuella datorns IP. Din VNC ansluter till videoutgången på din virtuella dator och du kan fortsätta med installationen.

Var ska man gå vidare??

Härifrån kan du försöka pausa, stoppa och ta bort virtuella datorer. Du kan också ändra den underliggande infrastrukturen genom att lägga till pooler för lagring och konfigurera bryggnätverk. Alla konfigurationsfiler för enskilda virtuella datorer, nätverksgränssnitt och lagringspooler lagras på / etc / libvirt / och / etc / libvirt / qemu.

Ibland måste du radera hårddiskfilerna som sparats på / lib / libvirt / images fysiskt även efter att du har tagit bort den virtuella datorn från libvirt. För att automatisera saker, försök att importera qcow2-bilder som de flesta Linux-distributioner som Ubuntu och CentOS. Dessa har operativsystemet förinstallerat i dem.

Slutsats

Att ställa in detta är ingenstans så enkelt som att ställa in VirtualBox och orsaken bakom detta är mångfaldig. Det mesta av stacken är komplicerat eftersom den är utformad för att vara modulär och mycket skalbar. Det gör inga antaganden om var du kör den virtuella datorn. Miljön kan vara ett personligt skrivbord eller ett datacenter. Att arbeta med ett GUI kan hjälpa till att minska denna komplexitet till viss del. Dessa system är dock utformade för att fungera med ett REST API för att ansluta till din organisations faktureringssystem, övervakningssystem etc. De berörs nästan aldrig av en människa efter utplaceringen.

Med det sagt är automatisering namnet på spelet med libvirt och qemu-kvm. Läs igenom den officiella dokumentationen och skriv ditt eget coola skript för att snurra upp en maskinpark och låt oss veta om du tyckte att den här handledningen var användbar.

Portar med öppen källkod för kommersiella spelmotorer
Gratis, öppen källkod och plattformsmekaniska rekreationer kan användas för att spela gamla såväl som några av de ganska senaste speltitlarna. I den h...
Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...