Gebruikershulpmiddelen

Site-hulpmiddelen


technische_naslag:kvm_cli

Introductie

We gaan KVM installeren, configureren en gebruiken op de Debian GNU/Linux 13 “Trixie. De bedoeling is alles KVM gerelateerd in /data/kvm te zetten en daarbij per VM een filesystem te hebben en tevens een filesystem te hebben om de ISO's te bewaren.

Bronnen

Voor mijn installatie zoals hieronder beschreven heb ik gebruik gemaakt van - beter goed gejat dan slecht verzonnen nietwaar? - de volgende bronnen:

Sommige dingen (zoals bijvoorbeeld het verhaal over supported guest OS'en) heb ik zelf toegevoegd…

Prerequisites

Het is wel van belang dat je CPU virtualisatie snapt. Dit kun je als volgt controleren:

michelle@lummel:~$ egrep --color '(vmx|svm)' /proc/cpuinfo

Je ziet voor iedere CPU(core) in je systeem als het goed is terugkomen of deze VMX (Intel) of SVM (AMD) ondersteund.

De bijpassende kernel-modules zijn dan als het goed is ook geladen:

michelle@lummel:~$ lsmod | grep kvm
kvm_intel             413696  0
kvm                  1396736  1 kvm_intel
irqbypass              12288  1 kvm

If not, dan heb je 2 kansen:

  • Je hardware snapt het echt niet
  • E.e.a. staat uitgeschakeld in de UEFI/BIOS.

Dat laatste valt te verhelpen door je machine te rebooten en de instellingen van de UEFI/BIOS na te lopen. Het eerste is niet anders op te lossen dan door nieuwe hardware te kopen. Of - zoals ik - je werkgever te verzoeken om wat recentere laptop…

Ondersteunde Guest-VMs

Dit is een instinker waar niet iedereen direct bij stilstaat. Maar de grote OS-boeren vinden het tegenwoordig leuk om alleen recente CPU's te ondersteunen. Microsoft Windows 11 wil graag een X86-64-V2-AES CPU hebben en bij RedHat (IBM dus) willen ze zelfs een X86-64-V3 hebben voor RHEL10. Je kunt kijken wat jouw systeem ondersteund:

michelle@lummel:~$ /usr/lib64/ld-linux-x86-64.so.2  --help | tail -4
Subdirectories of glibc-hwcaps directories, in priority order:
  x86-64-v4
  x86-64-v3 (supported, searched)
  x86-64-v2 (supported, searched)

In tegenstelling tot mijn ProxMox servertje kan dit ding dus wel RHEL10 draaien.

Voorbereidingen op het OS

Storage

Een filesystem voor de ISO's:

michelle@lummel:~$ sudo mkdir -p /data/kvm/iso
michelle@lummel:~$ sudo lvcreate -L 2G -n lviso vgdata
michelle@lummel:~$ sudo mkfs.ext4 -m 0 /dev/vgdata/lviso

En mijn eerste VM gaat lummelbout heten, dus daar ook wat storage voor:

michelle@lummel:~$ sudo mkdir -p /data/kvm/vm/lummelbout
michelle@lummel:~$ sudo lvcreate -L 60G -n lvvmlummelbout vgdata
michelle@lummel:~$ sudo mkfs.ext4 -m 0 /dev/vgdata/lvvmlummelbout

En dat mikken we in de fstab file:

michelle@lummel:~$ grep /data/kvm /etc/fstab 
/dev/mapper/vgdata-lviso                /data/kvm/iso           ext4    noatime,nodiratime      0       2
/dev/mapper/vgdata-lvvmlummelbout       /data/kvm/vm/lummelbout ext4    noatime,nodiratime      0       2

En dat te mounten en dan de rechten op de mappen goed te zetten:

michelle@lummel:~$ sudo mount -a
michelle@lummel:~$ sudo chgrp -R cdrom /data/kvm/iso
michelle@lummel:~$ sudo chgrp -R kvm /data/kvm/vm
michelle@lummel:~$ sudo chmod -R g+w /data/kvm/*

Account (groepen)

Omdat ik met mijn persoonlijke account dingen wil kunnen doen maak ik mezelf nog even lid van deze groepen:

michelle@lummel:~$ sudo usermod -a -G cdrom michelle
michelle@lummel:~$ sudo usermod -a -G kvm michelle

RHEL ISO bestanden

Om wat te kunnen installeren heb je minimaal een ISO bestand nodig van een of ander OS. Ik wil met RHEL10 gaan spelen maar mogelijk ook een RHEL9 VM draaien als ik dat voor mijn werk nodig heb. Die heb ik dus gedownload en in de daarvoor aangemaakte map gezet:

michelle@lummel:~$ du -hs /data/kvm/iso/*.iso
817M    /data/kvm/iso/rhel-10.0-x86_64-boot.iso
1,2G    /data/kvm/iso/rhel-9.6-x86_64-boot.iso

Installatie

KVM (QEMU) installeren

Installeer de benodigde packages:

michelle@lummel:~$ sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils libvirt-daemon virt-install virt-viewer
Let op, 'qemu-system-x86' wordt geselecteerd in plaats van 'qemu-kvm'
Installeren:
  bridge-utils  libvirt-clients  libvirt-daemon  libvirt-daemon-system  qemu-system-x86  virt-install  virt-viewer
 
Installeren van vereisten:
  gir1.2-libosinfo-1.0  libglusterfs0      libosinfo-1.0-0             libusbredirhost1t64              libvirt-daemon-driver-storage          libvte-2.91-common          qemu-system-modules-spice
  ibverbs-providers     libgtk-vnc-2.0-0   libosinfo-l10n              libusbredirparser1t64            libvirt-daemon-driver-storage-disk     mdevctl                     qemu-utils
  iptables              libgvnc-1.0-0      libphodav-3.0-0             libvdeplug2t64                   libvirt-daemon-driver-storage-iscsi    netcat-openbsd              seabios
  ipxe-qemu             libibverbs1        libphodav-3.0-common        libvirglrenderer1                libvirt-daemon-driver-storage-logical  open-iscsi                  spice-client-glib-usb-acl-helper
  libblkio1             libip4tc2          libpmem1                    libvirt-common                   libvirt-daemon-driver-storage-mpath    osinfo-db                   swtpm
  libburn4t64           libip6tc2          librados2                   libvirt-daemon-common            libvirt-daemon-driver-storage-scsi     ovmf                        swtpm-libs
  libcacard0            libiscsi7          librbd1                     libvirt-daemon-config-network    libvirt-daemon-lock                    passt                       swtpm-tools
  libcapstone5          libisns0t64        librdmacm1t64               libvirt-daemon-config-nwfilter   libvirt-daemon-log                     python3-libvirt             systemd-container
  libdaxctl1            libisoburn1t64     libslirp0                   libvirt-daemon-driver-interface  libvirt-daemon-plugin-lockd            python3-libxml2             xorriso
  libexecs1             libisofs6t64       libspice-client-glib-2.0-8  libvirt-daemon-driver-network    libvirt-glib-1.0-0                     qemu-block-extra
  libfdt1               libjte2            libspice-client-gtk-3.0-5   libvirt-daemon-driver-nodedev    libvirt-glib-1.0-data                  qemu-system-common
  libgfapi0             libndctl6          libspice-server1            libvirt-daemon-driver-nwfilter   libvirt-l10n                           qemu-system-data
  libgfrpc0             libnss-mymachines  libtpms0                    libvirt-daemon-driver-qemu       libvirt0                               qemu-system-gui
  libgfxdr0             libopeniscsiusr    liburing2                   libvirt-daemon-driver-secret     libvte-2.91-0                          qemu-system-modules-opengl
 
Voorgestelde pakketten:
  firewalld             libvirt-login-shell        libvirt-daemon-driver-storage-gluster       libvirt-daemon-driver-storage-rbd  libvirt-daemon-driver-vbox  auditd     numad  vde2      python3-argcomplete  jigit
  libvirt-clients-qemu  libvirt-daemon-driver-lxc  libvirt-daemon-driver-storage-iscsi-direct  libvirt-daemon-driver-storage-zfs  libvirt-daemon-driver-xen   systemtap  samba  trousers  xorriso-tcltk        cdck
 
Samenvatting:
  Opwaarderen: 0, Installeren: 100, Verwijderen: 0, Niet opwaarderen: 1
  Downloadgrootte: 59,9 MB
  Benodigde ruimte: 251 MB / 8.375 MB beschikbaar
 
Doorgaan? [J/n]

En zie dat de spulleboel in de basis draait:

michelle@lummel:~$ sudo systemctl status libvirtd
[sudo] wachtwoord voor michelle: 
○ libvirtd.service - libvirt legacy monolithic daemon
     Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: enabled)
     Active: inactive (dead) since Thu 2025-07-17 19:32:18 CEST; 11min ago
   Duration: 2min 31ms
 Invocation: 5d9a747888ab4050934e7ef6fd204f57
TriggeredBy: ● libvirtd-ro.socket
             ● libvirtd.socket
             ● libvirtd-admin.socket
       Docs: man:libvirtd(8)
             https://libvirt.org/
    Process: 16355 ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS (code=exited, status=0/SUCCESS)
   Main PID: 16355 (code=exited, status=0/SUCCESS)
   Mem peak: 9M
        CPU: 300ms
 
jul 17 19:30:18 lummel systemd[1]: Starting libvirtd.service - libvirt legacy monolithic daemon...
jul 17 19:30:18 lummel systemd[1]: Started libvirtd.service - libvirt legacy monolithic daemon.
jul 17 19:32:18 lummel systemd[1]: libvirtd.service: Deactivated successfully.

GUI installatie

Mocht je een GUI erbij willen hebben installeer dan ook virt-manager:

michelle@lummel:~$ sudo apt install virt-manager
Installeren:                              
  virt-manager
 
Installeren van vereisten:
  gir1.2-gtk-vnc-2.0  gir1.2-gtksource-4  gir1.2-libvirt-glib-1.0  gir1.2-spiceclientglib-2.0  gir1.2-spiceclientgtk-3.0  gir1.2-vte-2.91  libgtksourceview-4-0  libgtksourceview-4-common  python3-gi-cairo
 
Voorgestelde pakketten:
  python3-guestfs
 
Samenvatting:
  Opwaarderen: 0, Installeren: 10, Verwijderen: 0, Niet opwaarderen: 0
  Downloadgrootte: 1.239 kB
  Benodigde ruimte: 7.903 kB / 7.759 MB beschikbaar
 
Doorgaan? [J/n] 
technische_naslag/kvm_cli.txt · Laatst gewijzigd: 2025/07/17 21:55 door michelle