KVM #1


Ich möchte langfristig mit KVM virtualisieren. LXC sind zwar schön, bieten mir aber nicht die Sicherheit und Stabilität echter Virtualisierung. Docker im LXC Container geht z.B. nicht, bzw. nur über Umwege und dann auch nur sehr eingeschränkt (kein OverlayFS etc.).
Es wird wohl auch auf einen leistungsstärkeren Server hinauslaufen, bei mir. LXC mit Atom, ja; KVM, nein.

Los geht's:
Installation benötigter Pakete: (Debian 8)
apt install kvm libvirt-bin virtinst bridge-utils

Reboot. Muss man nicht, mache ich aber, da das initramfs aktualisiert wurde.

Aktivierung des Gastnetzwerks
virsh net-list --all
virsh net-start default


Aufsetzen des Gastsystems: Debian 8 Jessie

via Internet - "netinstall"

#!/bin/bash
virt-install --virt-type kvm --name jessie-amd64 \
--location http://httpredir.debian.org/debian/dists/jessie/main/installer-amd64/ \
--extra-args "console=ttyS0" -v --os-type Linux \
--disk bus=virtio,size=4 --memory 128

Escape geht mit Ctrl+5.
Die Konsole wird direkt im Terminal gestartet.
Hiernach geht es exakt so weiter, wie man es von der Debian netinstall CD gewohnt ist.
virtio muss zwingend mit bei disk definiert werden, andernfalls findet er keine Festplatte.


via Live-CD / GRML

#!/bin/bash
virt-install --virt-type kvm --name jessie-amd64 \
--cdrom /var/lib/libvirt/images/iso/grml64-small_2014.11.iso \
--vnc \
-v --os-type Linux \
--vcpus $(nproc) \
--disk bus=virtio,size=10 --memory 1024

ISO muss für den libvirt-User lesbar sein.
Den VNC-Port erhält man mit netstat, kann per SSH Portforwarding weitergeleitet werden.
Eine Konsole wie oben zu definieren (console=ttyS0), bringt hier nichts, darüber wird nichts angezeigt.
# netstat -tlpn                                                                    :(
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5900 0.0.0.0:* LISTEN 1746/qemu-system-x8


Im Hintergrund eine SSH-Konsole auf den Server, im Vordergrund der VNC-Client.
Warum GRML? Weil die Gastinstallation per grml-debootstrap oder in diesem Fall, meinem debootstrap-Skript, einfach schneller geht.


5 1/2 Minuten später und der Gast ist auch schon installiert. Der Host selbst ist eine DigitalOcean KVM. 😂


Booten tut er selbstverständlich auch.

Mit VNC hat das Tastaturlayout nicht richtig funktioniert, aber es gibt ja noch den Virtual Machine Manager (VMM) (Paket virt-manager)

Hätte ich das mal zuerst versucht. Hinterher weiß man meistens mehr.

Falls der VMM beim Verbinden nach openssh-askpass fragt, Terminal auf und dort mit dem Host verbinden. Die SSH-Fingerprints müssen hier einmalig aktzeptiert werden. Ich nutze ausschließlich schlüsselbasierte Authentifikation.

Ein paar virsh Befehle
virsh list --all
virsh destroy jessie-amd64 # ausschalten
virsh undefine jessie-amd64 # löschen
virsh start jessie-amd64 # starten
virsh console jessie-amd64 # Console erhalten für VM


Demnächst geht es weiter mit:
Gästen auf LVM.

Netzwerkkonfiguration wird wohl das aufwändigste Thema. Das Beste zum Schluss.

Links: