Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:virtualisierung_pci-passthrough

Virtualisierung PCI-Passthrough

Verschiedene Hardware Plattformen stellen den virtuellen Maschinen, sprich den Gast-Systemen, die Möglichkeit, direkt auf verschiedene Hardware-Komponenten zugreifen zu können, zur Verfügung. Dieser Prozess ist bei Virtualisierung auch unter dem Namen PCI-Passthrough bekannt.

Es wird hier unter AMD und Intel-basierten Systemen unterschieden.

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

AMD basierte Systeme

Um die PCI-Passthrough Unterstützung bei AMD basierten System nutzen zu können, ist die Aktivierung von IOMMU im BIOS des Servers erforderlich, wie nachfolgendes Bild veranschaulicht:

BIOS - IOMMU - Einstellung

Da standardmäßig die Unterstützung für AMD IOMMU auch im Kernel von CentOS deaktiviert ist, muss diese noch aktiviert werden.

Zuerst soll jedoch überprüft werden, ob die AMD IOMMU tatsächlich deaktiviert ist, was mit nachfolgendem Befehl durchgeführt werden kann:

# dmesg | grep AMD-Vi
AMD-Vi disabled by default: pass amd_iommu=on to enable

Um AMD IOMMU nun im Kernel von CentOS zu aktivieren, müssen die Startparameter, welche beim Booten dem Kernel in der Konfigurationsdatei

  • /boot/grub/grub.conf

mitgegeben werden, wie nachfolgen dargestellt ergänzt werden:

Booteintrag, OHNE AMD IOMMU Unterstützung:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_vh-LogVol02
#          initrd /initrd-[generic-]version.img
#boot=/dev/ddf1_raid1
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS Linux (2.6.32-71.29.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/mapper/vg_vh-LogVol02 rd_DM_UUID=ddf1_raid1 rd_LVM_LV=vg_vh/LogVol02
rd_LVM_LV=vg_vh/LogVol00 rd_NO_LUKS rd_NO_MD LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=de-latin1-nodeadkeys 
rhgb quiet crashkernel=auto
        initrd /initramfs-2.6.32-71.29.1.el6.x86_64.img
title CentOS (2.6.32-71.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/vg_vh-LogVol02 rd_DM_UUID=ddf1_raid1 rd_LVM_LV=vg_vh/LogVol02
rd_LVM_LV=vg_vh/LogVol00 rd_NO_LUKS rd_NO_MD LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=de-latin1-nodeadkeys 
rhgb quiet
        initrd /initramfs-2.6.32-71.el6.x86_64.img

Um die AMD IOMMU Unterstützung zu aktivieren muss nachfolgende Zeile um den Eintrag

... amd_iommu=on
ergänzt werden, wonach die komplette Zeile dann wie folgt dargestellt, aussehen sollte:
...
title CentOS Linux (2.6.32-71.29.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/mapper/vg_vh-LogVol02 rd_DM_UUID=ddf1_raid1 rd_LVM_LV=vg_vh/LogVol02
rd_LVM_LV=vg_vh/LogVol00 rd_NO_LUKS rd_NO_MD LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=de-latin1-nodeadkeys 
rhgb quiet crashkernel=auto amd_iommu=on
        initrd /initramfs-2.6.32-71.29.1.el6.x86_64.img
...

:!: WICHTIG - Jetzt ist ein Neustart des Server erforderlich !!!

Nach einem erfolgreichen Neustart des Serevrs, kann die nochmalige Eingabe des nachfolgenden Befehls zur Überprüfung genutzt werden, ob AMD IOMMU nun auch im Kernel aktiviert wurde. Die Ausgabe sollte wie folgt aussehen:

# dmesg | grep AMD-Vi
AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
AMD-Vi: Initialized for Passthrough Mode
AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40

Intel basierte Systeme

Für die Aktivierung von PCI-Passthrogh für Intel basierte Systeme, ist wie bei

vorzugehen, jedoch ist hier die nachfolgende Zeile um den Eintrag

... intel_iommu=on
zu ergänzen, wonach die komplette Zeile dann wie folgt dargestellt, aussehen sollte:
...
title CentOS Linux (2.6.32-71.29.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/mapper/vg_vh-LogVol02 rd_DM_UUID=ddf1_raid1 rd_LVM_LV=vg_vh/LogVol02
rd_LVM_LV=vg_vh/LogVol00 rd_NO_LUKS rd_NO_MD LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=de-latin1-nodeadkeys 
rhgb quiet crashkernel=auto intel_iommu=on
        initrd /initramfs-2.6.32-71.29.1.el6.x86_64.img
...

Zur Überprüfung, ob die Intel IOMMU Unterstützung aktiv ist, kann nachfolgender Befehl genutzt werden:

# dmesg | grep -e DMAR -e IOMMU
DMAR:DRHD base: 0x000000feb03000 flags: 0x0
IOMMU feb03000: ver 1:0 cap c9008020e30260 ecap 1000

USB: /etc/libvirt/qemu.conf

:!: HINWEIS - Falls es Probleme mit einem USB-Device geben sollte, kann nachfolgende Konfiguration diese Probleme beheben !!!

Um ein Gerät, welches via USB angeschlossen ist und durch ein Gast-System genutzt werden soll, erfolgreich zu betrieben, können nachfolgende Konfigurationseinstellungen erforderlich sein, um die Stabilität, des via USB angeschlossenen Gerätes zu gewährleisten.

Möglicherweise kann es zu einer unvorhergesehenen Beendigung der virtuellen Maschine mit nachfolgender Fehlermeldung in der LOG-Datei

  • /var/log/libvirt/qemu/<Name der virtuellen Maschine>.log

kommen (nur relevanter Ausschnitt):

...
qemu-kvm: /builddir/build/BUILD/qemu-kvm-0.12.1.2/hw/usb.c:345: usb_packet_complete: Assertion `p->owner != ((void *)0)' failed.
2012-02-25 07:56:06.026: shutting down
...

Eine mögliche Lösung ist ein

  • UPGRADE auf CentOS in der Version 6.3 und das damit verbundene
  • UPGRADE des libvirtd bzw der libvirt-Bibliotheken auf die die Version 0.9.10 / Release 21.el6_3.3
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/virtualisierung_pci-passthrough.txt · Zuletzt geändert: 2012/07/21 09:04 von klaus