7.6.1. Aktivieren des Shared Modes
SR-IOV fähige PCIe Karten befinden sich zunächst in der Betriebsart „dedicated“. Das entspricht klassischen Karten ohne SR-IOV Unterstützung. Die Karte muß dann einer LPAR (in der Regel einem Virtual-I/O-Server) zugewiesen werden und wird dann exklusiv von dieser benutzt. Ein direkter Zugriff von weiteren LPARs ist dann nicht möglich.
Eine List der SR-IOV fähigen PCIe Adapter lässt sich mit Hilfe des Kommandos „ms lssriov“ (list SR-IOV) anzeigen:
$ ms lssriov ms03
PHYS_LOC SLOT_ID CONFIG_STATE SRIOV_STATUS ADAPTER_ID PHYS_PORTS LOGICAL_PORTS
U78AA.001.VYRGU0Q-P1-C4 21010020 dedicated null null null null
U78AA.001.VYRGU0Q-P1-C6 2102001b dedicated null null null null
U78AA.001.VYRGU0Q-P1-C11 21020013 dedicated null null null null
U78AA.001.VYRGU0Q-P1-C12 21030014 dedicated null null null null
$
Es gibt 4 PCIe Adapter-Karten in den Slots P1-C4, P1-C6, P1-C11 und P1-C12. Alle 4 Karten sind noch im dedicated Modus (Spalte CONFIG_STATE). Um die Virtualizierung mit SR-IOV nutzen zu können, müssen die Karten erst einmal in den sogenannten „Shared Mode“ gebracht werden. Dies geschieht mit Hilfe des Kommandos „ms chsriov“ (change SR-IOV), wobei als Argument die Slot-ID (Spalte SLOT_ID) oder ein eindeutiger Suffix des Physical Location Codes angegeben werden muß:
$ ms chsriov ms03 21010020 shared
$ ms chsriov ms03 P1-C6 shared
$ ms chsriov ms03 21020013 shared
$ ms chsriov ms03 P1-C12 shared
$
Jeder SR-IOV Adapter bekommt bei der Umstellung in den Shared Mode eine eindeutige Adapter-ID zugewiesen. Die Adapter werden einfach fortlaufend nummeriert. Möchte man für einen Adapter eine bestimmte Adapter-ID verwenden, kann das Attribut adapter_id verwendet werden:
$ ms chsriov ms03 21020013 shared adapter_id=1
$ ms chsriov ms03 P1-C6 shared adapter_id=2
$ ms chsriov ms03 21010020 shared adapter_id=3
$ ms chsriov ms03 P1-C12 shared adapter_id=4
$
Bei der Umstellung auf den Shared Mode werden die Adapter neu initialisiert. Dies kann einige Zeit in Anspruch nehmen. Während ein Adapter initialisiert wird, sind nicht alle Informationen verfügbar, wie die folgende Ausgabe zeigt:
$ ms lssriov ms03
PHYS_LOC SLOT_ID CONFIG_STATE SRIOV_STATUS ADAPTER_ID PHYS_PORTS LOGICAL_PORTS
U78AA.001.VYRGU0Q-P1-C4 21010020 sriov initializing unavailable unavailable unavailable
U78AA.001.VYRGU0Q-P1-C6 2102001b sriov running 2 4 48
U78AA.001.VYRGU0Q-P1-C11 21020013 sriov initializing unavailable unavailable unavailable
U78AA.001.VYRGU0Q-P1-C12 21030014 sriov missing unavailable unavailable unavailable
$
Der Adapter in Slot P1-C6 ist initialisiert und betriebsbereit (running), die beiden Adapter in Slot P1-C4 und P1-C11 sind noch beim Initialisieren und der Adapter in Slot P1-C12 hat noch nicht mit der Initialisierung begonnen.
Nach einigen Sekunden (in der Regel weniger als eine Minute) sind alle Adapter initialisiert und die Ausgabe sieht dann wie folgt aus:
$ ms lssriov ms03
PHYS_LOC SLOT_ID CONFIG_STATE SRIOV_STATUS ADAPTER_ID PHYS_PORTS LOGICAL_PORTS
U78AA.001.VYRGU0Q-P1-C11 21020013 sriov running 1 4 48
U78AA.001.VYRGU0Q-P1-C6 2102001b sriov running 2 4 48
U78AA.001.VYRGU0Q-P1-C4 21010020 sriov running 3 4 48
U78AA.001.VYRGU0Q-P1-C12 21030014 sriov running 4 4 48
$
Alle 4 Adapter besitzen jeweils 4 physikalische Ports (Spalte PHYS_PORTS) und unterstützen bis zu 48 logische Ports (LOGICAL_PORTS). Logische Ports können vom Administrator erzeugt werden, wobei diese dann gleichzeitig einer LPAR zugewiesen werden. Jedem logischen Port ist dabei eine der verfügbaren virtuellen Funktionen zugeordnet. Die physikalischen Funktionen können nur vom Hypervisor verwendet werden. Damit ist sichergestellt das LPARs keine Änderungen an der Konfiguration eines SR-IOV Adapters vornehmen können.