Virtualisierung · 6 min read · Jan 07, 2026

Virtualisierung mit KVM auf einem Fedora 17 Server

Virtualisierung mit KVM auf einem Fedora 17 Server

Version 1.0
Autor: Falko Timme
Folge mir auf Twitter

Dieser Leitfaden erklärt, wie Sie KVM installieren und verwenden können, um virtuelle Maschinen auf einem Fedora 17 Server zu erstellen und auszuführen. Ich werde zeigen, wie man bildbasierte virtuelle Maschinen erstellt und auch virtuelle Maschinen, die ein logisches Volume (LVM) verwenden. KVM steht für Kernel-based Virtual Machine und nutzt die Hardwarevirtualisierung, d.h. Sie benötigen eine CPU, die Hardwarevirtualisierung unterstützt, z.B. Intel VT oder AMD-V.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

Ich verwende hier einen Fedora 17 Server mit dem Hostnamen server1.example.com und der IP-Adresse 192.168.0.100 als meinen KVM-Host.

Ich hatte SELinux auf meinem Fedora 17 System deaktiviert. Ich habe nicht mit aktivem SELinux getestet; es könnte funktionieren, aber wenn nicht, sollten Sie SELinux besser ebenfalls deaktivieren:

vi /etc/selinux/config

Setzen Sie SELINUX=disabled…

| # Diese Datei steuert den Status von SELinux auf dem System. # SELINUX= kann einen dieser drei Werte annehmen: # enforcing - SELinux-Sicherheitsrichtlinie wird durchgesetzt. # permissive - SELinux gibt Warnungen aus, anstatt durchzusetzen. # disabled - Keine SELinux-Richtlinie wird geladen. SELINUX=disabled # SELINUXTYPE= kann einen dieser beiden Werte annehmen: # targeted - Zielprozesse sind geschützt, # mls - Multi Level Security-Schutz. SELINUXTYPE=targeted |

… und starten Sie neu:

reboot

Wir benötigen auch ein Desktop-System, auf dem wir virt-manager installieren, damit wir eine Verbindung zur grafischen Konsole der virtuellen Maschinen herstellen können, die wir installieren. Ich verwende hier einen Fedora 17 Desktop.

2 KVM installieren

Fedora 17 KVM-Host:

Überprüfen Sie zunächst, ob Ihre CPU Hardwarevirtualisierung unterstützt - wenn dies der Fall ist, sollte der Befehl

egrep '(vmx|svm)' --color=always /proc/cpuinfo

etwas anzeigen, z.B. so:

[root@server1 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
[root@server1 ~]#

Wenn nichts angezeigt wird, unterstützt Ihr Prozessor keine Hardwarevirtualisierung, und Sie müssen hier aufhören.

Jetzt importieren wir die GPG-Schlüssel für Softwarepakete:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Um KVM und virtinst (ein Tool zum Erstellen virtueller Maschinen) zu installieren, führen wir aus

yum install kvm libvirt python-virtinst qemu-kvm

Erstellen Sie die Systemstartlinks für den libvirt-Daemon und starten Sie ihn:

systemctl enable libvirtd.service  
systemctl start libvirtd.service

Um zu überprüfen, ob KVM erfolgreich installiert wurde, führen Sie aus

virsh -c qemu:///system list

Es sollte etwas wie folgt anzeigen:

[root@server1 ~]# virsh -c qemu:///system list  
 Id Name                 State  
----------------------------------  
  
[root@server1 ~]#

Wenn stattdessen ein Fehler angezeigt wird, ist etwas schiefgelaufen.

Als nächstes müssen wir einen Netzwerkbrücke auf unserem Server einrichten, damit unsere virtuellen Maschinen von anderen Hosts wie physische Systeme im Netzwerk erreicht werden können.

Dazu installieren wir das Paket bridge-utils…

yum install bridge-utils

… und konfigurieren eine Brücke.

Ich deaktiviere den NetworkManager von Fedora und aktiviere die “normale” Netzwerkverbindung. NetworkManager ist gut für Desktops, bei denen sich Netzwerkverbindungen ändern können (z.B. LAN vs. WLAN), aber auf einem Server ändert man normalerweise nicht die Netzwerkverbindungen:

systemctl disable NetworkManager.service  
systemctl enable network.service  
systemctl restart network.service  
systemctl stop NetworkManager.service

Überprüfen Sie Ihre /etc/resolv.conf, ob alle Nameserver aufgelistet sind, die Sie zuvor konfiguriert haben:

cat /etc/resolv.conf

Wenn Nameserver fehlen, führen Sie aus

system-config-network

und fügen Sie die fehlenden Nameserver erneut hinzu.

Finden Sie als nächstes Ihre primäre Netzwerkschnittstelle heraus, indem Sie ausführen

ifconfig

In meinem Fall heißt sie em1 - das ist wichtig, um sicherzustellen, dass Sie die richtige Netzwerk-Konfigurationsdatei bearbeiten - in meinem Fall /etc/sysconfig/network-scripts/ifcfg-em1.

Um die Brücke zu konfigurieren, erstellen Sie die Datei /etc/sysconfig/network-scripts/ifcfg-br0 (bitte verwenden Sie die Werte DNS1 (plus alle anderen DNS-Einstellungen, falls vorhanden), GATEWAY, IPADDR, NETMASK und SEARCH aus der Datei /etc/sysconfig/network-scripts/ifcfg-em1):

vi /etc/sysconfig/network-scripts/ifcfg-br0

| DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=8.8.8.8 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes DNS2=8.8.4.4 SEARCH="example.com" |

Ändern Sie /etc/sysconfig/network-scripts/ifcfg-em1 wie folgt (kommentieren Sie BOOTPROTO, DNS1 (und alle anderen DNS-Server, falls vorhanden), GATEWAY, IPADDR, NETMASK und SEARCH aus, setzen Sie NM_CONTROLLED auf no und fügen Sie BRIDGE=br0 hinzu):

vi /etc/sysconfig/network-scripts/ifcfg-em1

| UUID="e8a818cc-0e23-47b8-88f3-013567828572" NM_CONTROLLED=no #BOOTPROTO=none HWADDR=00:1e:90:f3:f0:02 ONBOOT=yes #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 #DNS2=8.8.4.4 TYPE=Ethernet #GATEWAY=192.168.0.1 #DNS1=8.8.8.8 IPV6INIT=no USERCTL=no PREFIX=24 BRIDGE=br0 |

Starten Sie dann das System neu:

reboot

Nach dem Neustart führen Sie aus

ifconfig

Es sollte jetzt die Netzwerkbrücke (br0) anzeigen:

[root@server1 ~]# ifconfig  
br0: flags=4163  mtu 1500  
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255  
        inet6 fe80::21e:90ff:fef3:f002  prefixlen 64  scopeid 0x20  
        ether 00:1e:90:f3:f0:02  txqueuelen 0  (Ethernet)  
        RX packets 70  bytes 7511 (7.3 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 76  bytes 10847 (10.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
em1: flags=4163  mtu 1500  
        ether 00:1e:90:f3:f0:02  txqueuelen 1000  (Ethernet)  
        RX packets 117  bytes 15163 (14.8 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 92  bytes 12899 (12.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
lo: flags=73  mtu 16436  
        inet 127.0.0.1  netmask 255.0.0.0  
        inet6 ::1  prefixlen 128  scopeid 0x10  
        loop  txqueuelen 0  (Local Loopback)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
virbr0: flags=4099  mtu 1500  
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255  
        ether ce:18:6f:2a:7f:0b  txqueuelen 0  (Ethernet)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
[root@server1 ~]#

3 Installation von virt-viewer oder virt-manager auf Ihrem Fedora 17 Desktop

Fedora 17 Desktop:

Wir benötigen ein Mittel, um eine Verbindung zur grafischen Konsole unserer Gäste herzustellen - wir können dafür virt-manager verwenden. Ich gehe davon aus, dass Sie einen Fedora 17 Desktop verwenden.

Werden Sie root…

su

… und führen Sie aus…

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

… um virt-manager zu installieren.

(Wenn Sie einen Ubuntu 12.04 Desktop verwenden, können Sie virt-manager wie folgt installieren:

sudo apt-get install virt-manager

)

4 Erstellen eines Debian Squeeze Gast (bildbasiert) von der Kommandozeile

Fedora 17 KVM-Host:

Kehren wir nun zu unserem Fedora 17 KVM-Host zurück.

Werfen Sie einen Blick auf

man virt-install

um zu lernen, wie man virt-install verwendet.

Wir werden unsere bildbasierten virtuellen Maschinen im Verzeichnis /var/lib/libvirt/images/ erstellen, das automatisch erstellt wurde, als wir KVM im zweiten Kapitel installiert haben.

Um einen Debian Squeeze Gast (im Bridging-Modus) mit dem Namen vm10, 512MB RAM, zwei virtuellen CPUs und dem Disk-Image /var/lib/libvirt/images/vm10.img (mit einer Größe von 12GB) zu erstellen, legen Sie die Debian Squeeze Netinstall-CD in das CD-Laufwerk ein und führen Sie aus

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Natürlich können Sie auch ein ISO-Image der Debian Squeeze Netinstall-CD erstellen (bitte erstellen Sie es im Verzeichnis /var/lib/libvirt/images/, da ich später zeigen werde, wie man virtuelle Maschinen über virt-manager von Ihrem Fedora-Desktop aus erstellt, und virt-manager wird nach ISO-Images im Verzeichnis /var/lib/libvirt/images/ suchen)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso

… und verwenden Sie das ISO-Image im virt-install-Befehl:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Die Ausgabe ist wie folgt:

[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm  


Starting install...  
Allocating 'vm10.img'              |  12 GB     00:00  
Creating domain...                  |    0 B     00:00  
Domain installation still in progress. You can reconnect to  
die Konsole, um den Installationsprozess abzuschließen.  
[root@server1 ~]#
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.