©Nadja, Fotolia.com
PCI-Devices des Hosts an die Kernel Virtual Machine (KVM) durchreichen
Was ist schon real?
von Oliver Rath, Hans-Peter Merkel, Markus Feilner
Erschienen im Linux-Magazin
2010/04
Virtualisierung mit Open-Source-Tools brummt. Das schlanke und schnelle KVM reicht seit Kurzem auch physische PCI-Hardware direkt durch, wenn der Admin ein paar Sachen beachtet. Wie das ohne Probleme klappt, zeigt diese Anleitung.
Die Verwirrung ist groß, wenn es um die Versionsnummer der KVM-Softwarepakete geht. Das liegt nicht nur an der vom Entwicklerteam geänderten Versionierung, sondern auch am Hin und Her mit der Mutter-Software Qemu. Ursprünglich ein Fork von Qemu 0.8 - oder zumindest ungefähr dieser Version -, lief die Entwicklungen von KVM und Qemu einige Zeit lang parallel.
Der Plan der Developer war es, mit Qemu durch die GPL-Lizenz Appetit zu machen und dank der kommerziellen Lizenzierung des Kqemu-Moduls, das die Emulation immerhin fast auf das Fünffache beschleunigte, Geld zu verdienen. Dummerweise machte die Einführung der Vanderpool-Hardware mit der Gerätevirtualisierung das obsolet, so schildert es zumindest einer der Entwickler der KVM-Firma Qumranet, Avi Kivity, in seinem Blog [1].
Hardware-Virtualisierung
Damit läuft virtualisierte Software ohne Emulation auf Wunsch direkt auf dem Prozessor. Nur wenn diese auf die Peripherie zugreifen will, fängt die Virtualisierungsschicht die Aufrufe ab und verarbeitet sie. Die Software arbeitet mit annähernd voller Geschwindigkeit, solange sie nicht mit der Außenwelt kommunizieren muss. Diesen neuen Anteil des ausgegliederten KVM haben die Developer mit der Version 0.11.1 nach Qemu zurückgeforkt, was wiederum dazu führte, dass die Entwickler von KVM beschlossen, damit auch die Versionierung von Qemu zu übernehmen.
Seitdem heißt das Programm selbst ein- heitlich »qemu«. Um eine bestmögliche Unterstützung beim PCI-Passthrough zu erreichen, empfehlen sich die neuesten KVM-Kernelmodule oder der neueste Kernel, mindestens aber ein 2.6.26-er, optimal mit den Userspace-Tools 0.12.2, wie sie in den folgenden Beispielen zum Einsatz kommen. Erhältlich ist das Ganze auf der KVM-Homepage [2].
Die Einschränkung, nur auf Intel-Prozessoren mit Vanderpool-Erweiterung oder AMDs Entsprechung Pacifica lauffähig zu sein, stellt keine Schwierigkeit mehr dar. Die meisten Prozessoren mit Ausnahme einiger Atoms, Celerons und der OEM-Reihen für Billig-Notebooks haben diese Erweiterungen eingebaut. Auch bei AMD sind sie bei allen neueren Prozessoren seit der Einführung der Dualcores (Ausnahme: Sempron) an Bord. Sogar der neueste Via Nano soll Vanderpool beherrschen.
Um in einer virtualisierten Umgebung direkt auf die Hardware zugreifen zu können, gibt es bei KVM zwei Möglichkeiten:
-
Der Zugriff über ein emuliertes Device ist vor allem bei
Netzwerk- und Soundkarten, aber auch für Festplattencontroller interessant.
-
Direkter Zugriff auf ein durchgereichtes PCI-Device.
Grundsätzlich gilt: Nur Hardware, die der Host nicht
verwendet, kann Linux an eine virtualisierte Instanz weiterreichen.
Daher muss der Admin zuerst die Module entladen oder das Laden per Blacklist unterbinden. Wie es zum Beispiel unter Gentoo üblich ist, empfiehlt es sich generell, die Module beim eigenen Kernel gar nicht erst einzubinden, das spart Platz und bringt Tempo.
Ausschalten: IRQ-Sharing
Ganz wichtig ist es dabei - nicht nur für die Kernelbauer -, die Shared-Interrupt-Funktionalität zu deaktivieren. Im Moment ist KVM nur in der Lage, PCI-Devices mit eigenem Interrupt durchzureichen. Sobald mehrere Geräte den Interrupt nutzen, schlägt das Durchreichen fehl. Um derartige Doppelbelegungen aufzudecken, empfiehlt sich das Scannen der benutzten Interrupts (Listing 1). Die Ausgabe von »lspi -vv | grep IRQ« vergleicht der Admin nun mit dem Gerät, das er durchreichen will (Listing 2). In diesem Beispiel wird das Durchreichen nicht funktionieren, da der Interrupt 11 gleich dreifach belegt ist.
Interrupt: pin D routed to IRQ 10
Interrupt: pin D routed to IRQ 12
Interrupt: pin D routed to IRQ 12
Interrupt: pin ? routed to IRQ 9
Interrupt: pin A routed to IRQ 11
Interrupt: pin A routed to IRQ 12
Interrupt: pin A routed to IRQ 10
Interrupt: pin A routed to IRQ 11
Interrupt: pin A routed to IRQ 11
|
00:11.0 Network controller: AVM GmbH B1 ISDN
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at d800 [size=64]
Region 1: I/O ports at dc00 [size=32]
Kernel driver in use: b1pci
Kernel modules: b1pci
Capabilities: [40] Power Management version 3
|
Listing 3 zeigt dagegen ein anderes Beispiel, mit einer PCIe-ISDN-4-fach-Karte von Beronet. Deren Interrupt 19 ist nur einmal belegt, und zwar von der ISDN-Karte selbst. Admins von Ubuntu oder Debian tragen in »/etc/modprobe.d/ blacklist.conf« die Module ein, die sie nicht benötigen:
blacklist mISDN_dsp
blacklist hfcmulti
blacklist mISDN_core
Das Beispiel zeigt die Module für die erwähnte aktive HFC4S-Karte, es sind die Treiber für das neue »mISDNv2«-Subsystem, das seit Kernel 2.6.28 Einzug gehalten hat und vor allem für HFC-ISDN-Karten sehr zu empfehlen ist. Für Asterisk ist zusätzlich noch der Channel-Driver »lcr_chan« vom Linux-Call-Router-Projekt [3] erforderlich.
08:04.0 ISDN controller: Cologne Chip Designs GmbH ISDN network Controller [HFC-4S] (rev 01)
Subsystem: Cologne Chip Designs GmbH Device b752
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 19
Region 0: I/O ports at 5000 [disabled] [size=8]
Region 1: Memory at c6000000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: hfc_multi
Kernel modules: hfcmulti
|
| Whitepaper |
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|
Joachim Zobel,
19.03.2010 18:04