Notice: Undefined index: string in /var/www/stefan/howtux.de/htdocs/article.php on line 49

Notice: Undefined index: settings in /var/www/stefan/howtux.de/htdocs/article.php on line 61
Home / Client / Server Dienste / Virtuelle Maschinen mit KVM

Virtuelle Maschinen mit KVM

Kategorie: Client / Server DiensteErstellt: 03.05.2010 - 21:56 Geändert: 26.06.2013 - 13:46
Autor: Stefan Boeke
0Um auf einem Server virtuelle Maschinen mit KVM zu realisieren sind einige Schritte notwendig. In diesem Beispiel wird davon ausgegangen, dass wir einen Server mit einem Netzwerkinterface und mehreren IP-Adressen betreiben wollen. Jede IP-Adresse soll einer virtuellen Maschine (hier ein Ubuntu Server 10.4 LTS) zugeordnet werden. Der Host erhält in diesem Beispiel die IP-Adresse 47.11.8.15 . Die Gäste erhalten die IP-Adressen 47.11.8.17 bis 47.11.8.20. Für ein für die hier gezeigte Konfiguration wird eine Gateway-IP-Adresse benötigt, diese lautet hier 47.11.8.16.

Vorraussetzungen


Für den Betrieb von KVM werden die folgenden Pakete kvm und qemu benötigt. Das Installieren dieser Pakete erfolgt mittels des folgenden Befehls:
Installation benötigter Pakete:

root@host~ # apt-get install qemu-kvm kvm

Des Weiteren müssen die Hardwarevirtualisierungen der im System befindlichen CPU aktiviert werden. Dies kann man herausfinden, indem man sich die Datei /proc/cpuinfo anschaut und nach Flags für Hardwarevirtualisierung durchsucht. Am besten geht dies mit dem folgenden Befehl:
Unterstützt die CPU Hardwarevirtualisierung?

root@host~ # grep -E '^flags.*b(vmx|svm)b' /proc/cpuinfo

Wenn als Reaktion auf diesen Befehl unter flags entweder der Eintrag vmx oder svm vorhanden ist, beherrscht der Prozessor Hardwarevirtualisierung und KVM kann genutzt werden. Ist dies nicht der Fall können Sie KVM mit diesem Prozessortyp nicht nutzen.

Hardwarevirtualisierung ist für den Einsatz von KVM notwendig
Um KVM nutzen zu können muss der Prozessor des Hostsystems Hardwarevirtualisierung unterstützen. Häufig ist die Hardwarevirtualisierung der CPU im Bios des Rechners deaktiviert. Sollten Sie sich sicher sein, dass Ihre CPU Hardwarevirtualisierung unterstützt sollten Sie die Einstellung im Bios ihres Rechners überprüfen, falls der eben beschriebene Test fehlschlägt.


Unterstützt der Prozessor Hardwarevirtualisierung, so werden in der Regel die beiden benötigten Kernel-Module beim Start des Systems automatisch geladen. Dies kann folgendermaßen geprüft werden:
Prüfen ob benötigte Kernelmodule geladen wurden:

root@host~ # lsmod | grep kvm
Die Ausgabe sollte so aussehen:
## für Intel-Prozessoren
kvm
kvm_intel
## für AMD-Prozessoren
kvm
kvm_amd

Sollten die Ausgaben nicht wie beschrieben erscheinen müssen die Module von Hand nachgeladen werden. Dies geschieht folgendermaßen mit dem Befehl modprobe:
Manuelles laden der benötigten Kernelmodule:

## für Intel-Prozessoren
root@host~ # modprobe kvm
root@host~ # modprobe kvm_intel
## für AMD-Prozessoren
root@host~ # modprobe kvm
root@host~ # modprobe kvm_amd


Erstellen eines KVM-Images


Zunächst muss eine virtuelle Festplatte für die Aufnahme des virtuellen Gastes angelegt werden:
Anlegen einer virtuellen Festplatte für einen KVM-Gast:

root@host~ # qemu-img create lucid-lynx-64.img 30G

Dieser Befehl legt ein 30Gb großes (noch leeres) Image im aktuellen Ordner ab. Das Image erhält hier den Namen lucid-lynx-64.img. Nun kann dieses Image mit Leben gefüllt werden. Hierfür wird ein aktuellen CD-Image von Ubuntu-Server 10.4 heruntergeladen.
Herunterladen des Installations-Images (hier 64Bit-Version):

root@host~ # wget http://releases.ubuntu.com/releases/10.04/ubuntu-10.04.1-server-amd64.iso

Nachdem der Download abgeschlossen wurde kann mit der Installation des Betriebssystems in den das KVM-Image begonnen werden.
Installieren des Betriebssystems in der virtuellen Festplatte des Gastes:

# Bei 64Bit-Gastsystemen:
root@host~ # qemu-system-x86_64 -hda lucid-lynx-64.img -cdrom ubuntu-10.04-server-amd64.iso -boot d -m 1024 -vnc :1
# Bei 32Bit-Gastsystemen:
root@host~ # qemu -hda lucid-lynx-64.img -cdrom ubuntu-10.04-server-amd64.iso -boot d -m 1024 -vnc :1

Verwendete Optionen:
-hda [Dateiname]
Angabe des zuvor angelegten Festplattenimages. Dieses wird als Ziel für die Installation genutzt.
-cdrom [Dateiname|Laufwerk]
Angabe der zu Bootenden Quelle für das zu installierende Betriebssystem. Entweder wird hier ein Image der Installations-CD oder ein Device mit der eingelegten CD (z.B. /dev/cdrom) angegeben.
-boot [a|c|d]
Angabe des Mediums von dem gestartet werden soll. 'a' weisst qemu an von einer Diskette zu booten, 'c' lässt qemu von dem unter -hda angegebenen Image starten und 'd' veranlasst qemu von der unter -cdrom angebenen Quelle zu booten (dies ist hier erforderlich)
-m [Speichergröße]
Angabe des Hauptspeichers der der virtuellen Maschine zur Verfügung gestellt werden soll (z.B. 1024M). Wichtig: Die hier angegebene Speichergröße darf die Größe des physisch auf dem Hostsystems zur Verfügung stehenden Speichers nicht übersteigen.
-vnc [Display]
Gibt an mit welchen VNC-Display die virtuelle Maschine verbunden werden soll. Die hier angegebene Zahl + 5900 ergibt den Port, welcher bei der Verbindung mit einem VNC-Client-Programm angegeben werden muss (in diesem Beispiel entspricht dies Port 5901)


Der Installationsprozess kann nun mittels eines VNC-Clients erfolgen. Unter Kubuntu kann beispielsweise das Programm KDRC verwendet werden. Als Kommunikationspartner für KDRC wird die IP-Adresse des Hosts angegeben (47.11.8.15). Da wir die Installation mit dem Parameter -vnc 1 gestartet haben muss zusätzlich der Port 5901 eingegeben werden. Sobald man sich nun mit dem Server verbunden hat kann der Installationsprozess wie gewohnt durchgeführt werden.

Allgemeine Konfiguration des Netzwerkes auf dem Host


Um Netzwerkverkehr über den Host zu leiten muss auf diesem IP-Forwarding aktiviert werden. Dies geschieht, indem man in die Datei ip_forward eine einfache Eins einfügt.
Freischalten von IP-Forwarding auf dem Host:

root@host~ # echo 1 > /proc/sys/net/ipv4/ip_forward

Danach legen wir eine Netzwerkbridge an. Diese Bridge dient später allen virtuellen Maschinen als Gateway und erhält die hierfür reservierte IP-Adresse
Anlegen einer Netzwerkbridge:

root@host~ # brctl addbr br01
# Zuweisen der Gateway-Adresse:
root@host~ # ifconfig br01 47.11.8.16 netmask 255.255.255.0 up

Alle bis hierhin gemachten Netzwerkkonfigurationen sind nur genau einmal zu machen. Alle KVM-Gäste nutzen diese Konfigurationen gemeinsam.



Individuelle Konfiguration des Netzwerkes für jeden Gast


Für jeden KVM-Gast wird zunächst ein TAP-Device angelegt. In diesem Beispiel erhält der erste KVM-Gast das TAP-Device qtap0. Der nächste Gast würde demnach qtap1, der übernächste qtap2 u.s.w. bekommen.
Anlegen eines tap-Device:

root@host~ # tunctl -b -u root -t qtap0

Nachdem dies erledigt wurde wird nun eine Verknüpfung zwischen der bereits angelegten Netzwerkbridge und dem soeben angelegten TAP-Device hergestellt.
Zuweisen des Tap-Device der Bridge:

root@host~ # brctl addif br01 qtap0

Danach kann das TAP-Device hochgefahren (aktiviert) werden. Damit alle Netzwerkpakete wirklich den Gast erreichen wird das TAP-Device im Promiscous-Mode und ohne IP-Adresse betrieben.
Hochfahren des Tap-Device:

root@host~ # ifconfig qtap0 up 0.0.0.0 promisc

Durch das Anlegen einer Host-Route wird der an die IP-Adresse des Gastes gerichtete Netzwerkverkehr an die Netzwerkbridge geleitet und erreicht dort über qtap0 die virtuelle Maschine. Hier ist es wichtig die korrekte IP-Adresse des Gastes anzugeben.
Anlegen einer Route für den Gast:

root@host~ # route add -host 47.11.8.17 dev br01


Starten der virtuellen Maschine


Sobald die Vorbereitungen bis hierhin abgeschlossen wurden kann die virtuelle Maschine gestartet werden. Die meisten Optionen sind bereits weiter oben in diesem Artikel beschrieben worden, zu allen anderen finden Sie die Erläuterungen weiter unterhalb des folgenden Beispiels.
Starten des Gastsystems:

Für 64Bit-Gastsysteme:
root@host~ # qemu-system-x86_64 -k de -m 1024 -smp 1 -hda lucid-lynx-64.img
-net nic,model=rtl8139,macaddr=00:92:aa:44:23:01 -net
tap,ifname=qtap0,script=no -vnc :1
Für 32Bit-Gastsysteme:
root@host~ # qemu -k de -m 1024 -smp 1 -hda lucid-lynx-64.img
-net nic,model=rtl8139,macaddr=00:92:aa:44:23:01 -net
tap,ifname=qtap0,script=no -vnc :1

Optionen:
Comming soon...


Nachdem der Gast gestartet wurde kann nun mittels der VNC-Client-Software eine Verbindung aufgebaut werden. Nach dem Login sind evtl. die Netzwerkeinstellungen anzupassen (IP-Settings, DNS, etc.). Danach sollte der Gast erreichbar sein und kann genutzt werden.

Um Netzwerk innerhalb der virtuellen Maschine nutzen zu können muss eventuell noch das passende Modul geladen werden. Dies geschieht mit:
modprobe 8139too




Notice: Undefined variable: urli in /var/www/stefan/howtux.de/htdocs/classes.php on line 240
Bookmark auf del.icio.usBookmark auf Mister WongBookmark auf BlinklistBookmark auf GoogleBookmark auf LinkarenaBookmark auf YiggBookmark auf FolkdBookmark auf Yahoo
Home / Client / Server Dienste / Virtuelle Maschinen mit KVM
simplum