class: center, middle ![img33l](vm-server.png) ## Von VirtualBox zu KVM ### Hauke Goos-Habermann #### https://weisheit.goos-habermann.de --- ### Über mich - Entwickler des
Softwareverteilungssystems m23
- Organisator der
Kieler Open Source und Linux Tage
-
Dienstleister zu m23, Linux und Freier Software
- Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Wöchentlicher Livestream *"Jean und Hauke Show"* auf https://www.youtube.com/c/LinuxGuides - *"Nicht der Weisheit letzter Schluß"* mit **beruflichen** oder **privaten Projekten** auf
tube.tchncs.de/c/ndwls
und
youtube.com/@nichtderweisheit
- Verwendet viel VirtualBox, aber manchmal muß es auch KVM sein ;-) --- ### Vorbereitung Für KVM müssen unter Debian und Co. noch ein paar Pakete installiert und der normale Benutzer zur Gruppe ***kvm*** hinzugefügt werden, damit dieser kvm starten kann. ```bash # KVM installieren apt install -y qemu-system-x86 qemu-utils # Benutzer zur kvm-Gruppe hinzufügen adduser [ich] kvm ``` --- ### Virtuelle Festplatte umwandeln KVM verwendet das **qcow2**-Format für virtuelle Festplatten, VirtualBox das **VMDK**- oder **VDI**-Format. Um eine vorhandene virtuelle Festplatte in KVM zu nutzen, muß diese zuvor umgewandelt werden: ```bash # Vom VMDK-Format in qcow2 umwandeln qemu-img convert -f vmdk -O qcow2 vbox.vmdk hdd.qcow2 # Vom VDI-Format in qcow2 umwandeln qemu-img convert -f vdi -O qcow2 vbox.vdi hdd.qcow2 ``` --- ### KVM auf der Kommandozeile Von der Kommandozeile aus kann eine KVM mit den folgenden Eigenschaften * 4 GB RAM * 2 CPUs * Eine HDD in hdd.qcow2 * Von HDD booten * Standardgrafikkarte * Soundkarte nach AC97 über den ***kvm***-Befehl und dem Parametersatz ```bash kvm -m 4G -smp 2 -hda hdd.qcow2 -boot c -vga std -device AC97 [Netzwerkkonfiguration] ``` gestartet werden. --- ### KVM-VM-NAT-Netzwerk Soll die VM über NAT angebunden werden, so werden die Parameter wie folgt erweitert: ```bash kvm -m 4G -smp 2 -hda hdd.qcow2 -boot c -vga std -device AC97\ -device virtio-net-pci,netdev=net0\ -netdev user,id=net0,net=192.168.23.0/24,dhcpstart=192.168.23.23 ``` Hierbei bringt KVM einen DHCP-Server mit, der IP-Adressen im angegbenen Netz verteilt. --- ### KVM-VM-Netzwerkbrücke Um die VM per Netzwerkbrücke anzubinden sind mehrere Schritte notwending: ```bash # Installation der nötigen Netzwerkpakete apt install -y uml-utilities bridge-utils net-tools ``` **
br-up.sh
** erstellt (als **root** ausgeführt) das TAP-Gerät, über das die VM kommuniziert. Der kvm-Aufruf wird wie folgt angepaßt: ```bash kvm -m 4G -smp 2 -hda hdd.qcow2 -boot c -vga std -device AC97\ -netdev tap,id=net0,ifname=tap0,script=no,downscript=no\ -device virtio-net-pci,netdev=net0,mac=aa:bb:cc:dd:ee:ff ``` **
br-down.sh
** entfernt (als **root** ausgeführt) das TAP-Gerät und die Netzwerkbrücke. Wissensteil: Über **TAP** wird eine Punkt-zu-Punkt-Verbindung via Ethernet (OSI-Layer 2) simuliert. https://de.wikipedia.org/wiki/TUN/TAP --- ### Netzwerkbrücke in /etc/network/interfaces Alternativ kann die Netzwerkbrücke auch dauerhaft in der ***/etc/network/interfaces*** eingerichtet werden: ```bash # TAP auto tap0 iface tap0 inet manual tunctl_user test pre-up /usr/bin/tunctl -t tap0 # Echte Netzwerkkarte allow-hotplug eth0 iface eth0 inet manual # Netzwerkbrücke auto br0 iface br0 inet static address 192.168.23.123/24 gateway 192.168.23.1 # dns-*-Optionen werden vom resolvconf-Paket interpretiert (wenn installiert) dns-nameservers 192.168.23.1 bridge-ports eth0 tap0 bridge-stp off bridge-fd 0 ``` --- ### Wissensteil Durch ***bridge-stp*** wir das STP deaktiviert: https://de.wikipedia.org/wiki/Spanning_Tree_Protocol Mit ***bridge-fd 0*** wird *keine Pause* beim Hinzufügen von Geräten zur Netzwerkbrücke festgelegt. Die (virtuellen) Geräte sind damit prinzipiell sofort ansprech- und konfigurierbar. --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de