===== OS Virtualisierung unter Linux ===== * Server- oder Prozess-Virtualisierung keine Voll-virtualisierer: LXC Linux Container Virtualisierung * System Virtualisierung / Voll Virtualisierung z.B. auch um MS Windows als Gast auszuführen. KVM Kernel bases Virtual Machine ==== CPU Virt Features ==== In der CPU Information muss entweder ''svm'' für AMD Prozessoren oder ''vmx'' für Intel Prozessoren zu finden sein. egrep "svm|vmx" /proc/cpuinfo ==== Befehle auf Qemu Konsole ==== Strg + Alt + 2 = qemu-monitor, zum senden von Befehlen an die Virtuelle-Maschine wärend der Laufzeit Strg + Alt + 1 = schaltet zurück zur Virtuellen-Maschine + Snapshots + Der Zugriff auf VM-Snapshots ist sowohl über diese ID, als auch über seinen Namen möglich. Gibt es bereits einen VM-Snap­shot mit dem gleichen Namen oder mit der gleichen Nummer, wird dieser überschrieben. (qemu) savevm vor_PatchDay Nach dem Anlegen des VM-Snapshots können Änderungen am System durchgeführt werden. Danach kann ein weiterer VM-Snapshot angelegt werden. (qemu) savevm nach_PatchDay Falls es zu ungewollten Veränderungen gekommen ist können diese mit dem Befehl loadvm rückgängig gemacht werden. Es wird der Zustand des angegebenen VM-Snapshots wiederhergestellt. (qemu) loadvm vor_PatchDay Nicht mehr benötigte VM-Snapshots sollten gelöscht werden, da sie Speicherplatz belegen. (qemu) delvm vor_PatchDay Informationen zu vorhandenen VM-Snapshots zeigt im QEMU-Monitor der Befehl: (qemu) info snapshots ==== KVM/Qemu VM's einrichten und starten ==== == Virtuelle Festplatten erstellen == das Image Format wird mit der Option -f angegeben, wird -f weggelassen wird das raw Format verwendet. (hier wird noch qcow genommen neu ist qcow2): qemu-img create -f qcow suse01.img 6G qemu-img create -f qcow2 probeimg.img 5G qemu-img-kvm create -f qcow2 SLED11_201.qcow2 8G == Bridging mit TAP-device == folgende mögliche Befehle fügen dem NIC eine passende MAC-Adresse hinzu: qemu -hda debian01.img -m 512 -cdrom debian-squeeze-i386-netinst.iso -net nic,macaddr=aa:bb:cc:dd:00:01 -net tap /dev/sr0 -boot d qemu -hda debian01.img -cdrom /dev/sr0 -net nic,macaddr=aa:bb:cc:dd:00:01 -net tap -boot d qemu -hda qemu_img/suse01.img -m 512 -cdrom SLES_11_SP1_NetVault_DR.i686-0.0.1.iso -net nic,macaddr=aa:bb:cc:dd:00:01 -net tap -boot d qemu-kvm -drive if=virtio,file=sles11_01-clone -cdrom ../SLES_11_SP1_Vault_DR.i686-0.0.5.iso -m 768 -net nic,macaddr=52:54:00:00:00:01 -net tap -boot c & Für 64Bit: qemu-system-x86_64 -hda debian01.img -cdrom /dev/sr0 -net nic,macaddr=aa:bb:cc:dd:00:01 -net tap -boot d qemu-system-x86_64 -hda debian01.img -m 512 -cdrom /dev/sr0 -net nic,macaddr=aa:bb:cc:dd:00:01 -net tap -boot d == unterschiedliche UUID's == qemu-kvm -hda /media/Sicherung/SicherArbeit/other/qemu_img/SLES11_203.qcow2 -smbios type=1,serial=ABCD123 -uuid 12345678-abcd-4321-abcd-1234567890cd -m 1024 -net nic,macaddr=52:54:00:00:00:02 -net tap -boot c & qemu-kvm -hda /media/Sicherung/SicherArbeit/other/qemu_img/SLED11_202.qcow2 -smbios type=1,serial=DCBA321 -uuid 87654321-abcd-1234-abcd-1234567890ab -m 1024 -net nic,macaddr=52:54:00:00:00:03 -net tap -boot c & qemu-kvm -hda /media/Sicherung/SicherArbeit/other/qemu_img/SLED11_202.qcow2 -cdrom /media/Sicherung/SicherArbeit/other/SLES-11-SP1-DVD-x86_64-GM-DVD1.iso -smbios type=1,serial=525401A -uuid 52540001-aabb-4321-abcd-1234567890dc -m 1024 -net nic,macaddr=52:54:00:00:00:01 -net tap -boot c & == Netzwerk-Boot == Mit der Option ''-boot n'' qemu-kvm -drive if=virtio,file=sles11_01-clone -cdrom ../SLES_11_SP1_Vault_DR.i686-0.0.5.iso -m 768 -net nic,macaddr=52:54:00:00:00:01 -net tap -boot n & ==== Konfiguration auf dem Host-System ==== Es wird eine Netzwerkbrücke eingerichtet, hier anhand eines Beispiels mittels bonding, wobei zwei NIC's zu bond0 zusammengefasst werden und von diesen Interface aus eine Bridge gebaut wird. Inhalt der /etc/network/interfaces: auto lo bond0 br0 iface bond0 inet manual slaves eth0 eth1 bond-mode 4 bond-miimon 100 iface br0 inet static address 192.168.1.12 gateway 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 dns-nameservers 192.168.1.1 bridge_ports bond0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge stp off AQEMU als root mit den Einstellungen starten: Reiter Network --> NIC Model "default" Connection Mode: "Open a TUN/TAP interface" Häkchen bei TUN/TAP Script: /etc/qemu-ifup Inhalt von /etc/qemu-ifup #!/bin/sh switch=$(/sbin/ip route list | awk '/^default / { print $5 }') /sbin/ifconfig $1 0.0.0.0 up /usr/sbin/brctl addif ${switch} $1 + weitere KVM Doku + #!/bin/sh ARGS="-hda win2k.img -boot c -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup -m 256 -localtime" echo "Loading kqemu kernel module..." sudo modprobe kqemu echo "...." echo "Starting QEMU with..." echo $ARGS echo "...." exec qemu $ARGS Wichtige Vorbereitungen für dieses Skript! 1. Installation des Paketes bridge-utils 2. Umstellung der Netzwerk-Konfiguration 3. Anlegen eines Skriptes /etc/kvm/kvm-bridge 4. Sudo-Konfiguration einrichten Das Paket bridge-utils benötigen wird zur Einrichtung und Konfiguration einer Netzwerk-Bridge. Die Datei /etc/network/interfaces habe ich wie folgt eingerichtet: # The loopback interface # automatically added when upgrading auto lo iface lo inet loopback # The bridge network interface(s) auto br0 iface br0 inet static address 192.168.1.108 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off # eof Das Netzwerk auf dem Host sollte damit noch funktionieren. Die Optionen kann jeder anpassen, wie er gerne möchte... Die ausführbare Datei /etc/kvm/kvm-bridge beinhaltet folgendes: #!/bin/sh sudo /sbin/ifconfig $1 0.0.0.0 promisc up sudo /usr/sbin/brctl addif br0 $1 # eof Nun richten wir noch die Sudo-Konfiguration mittels visudo ein. Beispiel: %kvm ALL=NOPASSWD:/sbin/ifconfig %kvm ALL=NOPASSWD:/usr/sbin/brctl %kvm ALL=NOPASSWD:/usr/sbin/tunctl Hier wird der Gruppe kvm voller Zugriff auf die Programme ifconfig, brctl und tunctl gegeben. (Sicher kann man die Einträge zusammenfassen, aber für mich ist das so übersichtlicher.) Nach dem Start der virtuellen Maschine über /srv/kvm/script/kvm_sidux_start.sh, sollte jetzt in Sidux Ihr lokales Netzwerk zur Verfügung stehen. Falls auf dem Router dhcp eingerichtet ist brauchen Sie nichts tun. Andernfalls sollten Sie das Netzwerk von Hand einrichten. === Konsolen-Tool virsh === iglu:/ # virsh list Id Name Status ---------------------------------- 1 sles11-clone laufend