Server Installation/KVM

Aus Opennet
Wechseln zu: Navigation, Suche

KVM Virtualisierung wird auf Opennet_Server/tamago und Opennet_Server/akito eingesetzt.

Inhaltsverzeichnis

Allgemeines

Die Kernel-based Virtual Machine (KVM) ist eine Linux-Kernel-Infrastruktur für Virtualisierung auf x86-Hardware mit den Hardware-Virtualisierungstechniken von Intel (VT) oder AMD (AMD-V).

KVM ist eine möglichkeit unter Linux einen Virtuellen Server zu betreiben. KVM setzt voraus das die CPU des Host Rechners (auf dem Host laufen die virtuellen Server) Hardware virtualisierung unterstützt. Nahezu alle aktuellen multi Core CPU's tun das.

virsh Übersicht

Die Gäste werden mit den Kommando virsh gesteuert.

virsh define /etc/libvirt/qemu/gast.xml Gast Konfiguration ändern
virsh list Prüfen welche Gäste laufen
virsh start gast Gast mit dem Namen gast starten
virsh shutdown gast Gast mit dem Namen gast runter fahren (geht auch aus dem Gast mit shutdown)
virsh destroy gast Gast mit dem Namen gast abschalten
  • Die Konfig eines Gastes liegt unter /etc/libvirt/qemu/gast.xml.
  • Änderungen müssen mit virsh define /etc/libvirt/qemu/gast.xml aktualisiert werden.

Gäste auflisten

akito:~# virsh list --all
 Id Name                 State
----------------------------------
  3 on-i                 running
 28 lvs                  running
  - squeeze              shut off
  - subaru               shut off
  - test                 shut off

Gast starten

akito:~# virsh start test

Nun läuft der Gast und man kann per SSH Tunnel und VNC auf die Console zugreifen (Der Mac VNC Client JollysFastVNC kann selbst einen SSH Tunnel aufbauen).

akito:~# lsof -i -Pn|grep kvm
kvm      3542    root    6u  IPv4    7595       TCP 127.0.0.1:5900 (LISTEN)
kvm     12417    root    6u  IPv4 3239608       TCP 127.0.0.1:5901 (LISTEN)

Gast beenden

Normalerweise sollte man dazu die Betriebsystemen des Gastes verwenden und den Gast ordentlich runter fahren.Unter linux z.B. mit shutdown, reboot oder init 0.

Falls ein Gast mal hängt kann man ihn auch hart abschalten:

virsh destroy <gastname>

Konfiguration ändern

Die Konfiguration der Gäste liegt als XML Datei in /etc/libvirt/qemu. Änderungen an diesen Dateien muß man mit virsh define /etc/libvirt/qemu/gast.xml aktivieren.

Neuen Gast anlegen

Mit folgendem Kommando legt man einen neuen Gast mit 256MB Ram und 12GB Harddisk an. Dieser wird sofort gestartet, das iso-CD Image wird gemountet und er staret von CD. Nun kann man sich per VNC mit der Console verbinden und die Installation durchführen. Nach dem ersten Reboot wird die Bootreihenfolge geändert so das der Gast von der virtuellen Festplatte bootet.

virt-install --connect qemu:///system -n gastname -r 256 --vcpus=1 -f /tank/gastname/image.qcow2 \
             -s 12 -k de -c /tank/debian-6.0.4-amd64-netinst.iso --vnc --noautoconsole \
             --os-type linux --os-variant debianSqueeze --accelerate --network=bridge:br0 --hvm

Wenn man in der Grub-Konfig die Kernel Option durch console=tty0 console=ttyS0,115200 ergänzt und in /etc/inittab die Zeile T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100 auskommentiert hat man auch über den Host Zugriff auf die Console.

virsh console <gastname>

Linux System zu KVM Gast migrieren

Folgender Punkt setzt den sicheren Umgang mit Linux über die Console voraus.

  • Disk Image erstellen (z.B. 50GB)
 dd if=/dev/zero of=disk.img bs=1024 count=50000000
  • Image partitionieren und formatieren
 # Prüfen ob loop0 noch frei ist
 losetup /dev/loop0 
 # disk Image an loop0 binden
 losetup /dev/loop0 disk.img
 # Partitionen anlegen
 cfdisk /dev/loop0
 # Partitionen an loop0pX binden
 kpartx -a -v disk.img 
 # Swap erstellen
 mkswap /dev/mapper/loop0p1
 # Filesystem erstellen
 mkfs.ext3 /dev/mapper/loop0p2
  • Mounten und Daten kopieren
 mount /dev/mapper/loop0p2 /mnt
 rsync -ax --numeric-ids alter-host:/ /mnt/
  • 'Image unmounten.
 umount /mnt
 losetup -d /dev/loop0
  • Bestehende Config aus /etc/libvirt/qemu als Vorlage nehmen und anpassen.
  • MAC Adressen des Gastes in /etc/udev/rules.d/70-persistent-net.rules anpassen
  • Den Booloader habe ich nun wie folgt erstellt (geht vielleicht auch einfacher)
  • Die vDisk in einen zweiten Gast als vdb eingetragen und den Gast gebootet
  • vdb nach /mnt gemountet und /proc und /dev mit der Option -o bind nach /mnt/proc und /mnt/dev gemountet
  • chroot /mnt
  • Grub menu.lst mit update-grub erstellen
  • Grub mit grub-install --no-floppy /dev/vdb schreiben (vdb muß in device.map existieren)
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge