8.1. Planung und Anlegen eines Virtual-I/O-Servers

Egal ob Virtual Ethernet, Virtual SCSI, Virtual FC oder vNIC, alle diese Virtualisierungsmöglickeiten erfordern mindestens einen Virtual-I/O-Server.

Redundant virtual I/O server configuration
Bild 8.1: Redundante Virtual-I/O-Server Konfiguration

In der Praxis wird fast immer eine Konfiguration mit zwei redundanten Virtual-I/O-Servern verwendet. Wie in Bild 8.1 skizziert, besitzen dabei beide Virtual-I/O-Server Anbindungen an die gleichen externen Netzwerke und SAN Fabrics. Auf High-End Managed Systems findet man häufig weitere Virtual-I/O-Server, um die Last gleichmäßiger zu verteilen, oder um z.B. Produktions-LPARs und Test-LPARs über verschiedene Virtual-I/O-Server voneinander zu trennen.

Damit ein Virtual-I/O-Server seine Funktion wahrnehmen kann, benötigt er Zugriff auf die physikalische Hardware des Managed Systems. Vorhandene I/O Adapter müssen daher den Virtual-I/O-Servern zugeordnet werden, mit der Ausnahme von SR-IOV Netzwerk-Adaptern, wenn SR-IOV verwendet werden soll. Sinnvollerweise sollte zunächst einmal eine Bestandsaufnahme gemacht werden, welche Adapter-Karten überhaupt verfügbar sind und in welchen I/O-Slots die Karten eingebaut wurden. Eine Auflistung aller I/O-Slots eines Managed Systems erhält man mit dem Kommando „ms lsslot“ (list I/O slots):

$ ms lsslot ms12
DRC_NAME                  DRC_INDEX  IOPOOL  LPAR_NAME  DESCRIPTION
U78D3.001.VYR0ETG-P1-C9   21010010   none    -          PCIe3 4-Port 16Gb FC Adapter
U78D3.001.VYR0ETG-P1-C10  21010012   none    -          Empty slot
U78D3.001.VYR0ETG-P1-C11  21020013   none    -          PCIe3 2 PORT 25/10 Gb NIC&ROCE SFP28 ADAPTER
U78D3.001.VYR0ETG-P1-C12  21030014   none    -          PCIe3 4-Port 16Gb FC Adapter
U78D3.001.VYR0ETG-P1-C49  21040015   none    -          PCIe3 x8 SAS RAID Internal Adapter 6Gb
U78D3.001.VYR0ETG-P1-T4   21010017   none    -          Universal Serial Bus UHC Spec
U78D3.001.WZS0FUH-P1-C8   21010018   none    -          PCIe3 2 PORT 25/10 Gb NIC&ROCE SFP28 ADAPTER
U78D3.001.VYR0ETG-P1-C5   2101001A   none    -          Empty slot
U78D3.001.VYR0ETG-P1-C6   2102001B   none    -          PCIe3 4-Port 16Gb FC Adapter
U78D3.001.VYR0ETG-P1-C7   2103001C   none    -          Empty slot
U78D3.001.VYR0ETG-P1-C50  2104001D   none    -          PCIe3 x8 SAS RAID Internal Adapter 6Gb
U78D3.001.VYR0ETG-P1-C4   21010020   none    -          PCIe3 2 PORT 25/10 Gb NIC&ROCE SFP28 ADAPTER
U78D3.001.VYR0ETG-P1-C2   21010021   none    -          PCIe3 2 PORT 25/10 Gb NIC&ROCE SFP28 ADAPTER
U78D3.001.VYR0ETG-P1-C3   21010022   none    -          PCIe3 4-Port 16Gb FC Adapter
$

Bei dem Beispiel System ms12 handelt es sich um eine S922 (Modell G), mit 4 mal „PCIe3 4-Port 16Gb FC Adapter“ und 4 mal „PCIe3 2 PORT 25/10 Gb NIC&ROCE SFP28 ADAPTER“. Das System wurde mit einer Split-Backplane (2 mal „PCIe3 x8 SAS RAID Internal Adapter“ geordert und kann daher ohne externe Platten mit 2 Virtual-I/O-Servern konfiguriert werden. Jeder der beiden Virtual-I/O-Server bekommt einen der beiden SAS-Adapter mit internen Platten zugewiesen. Da die 4 SR-IOV Netzwerk-Adapter mittels SR-IOV verwendet werden sollen, müssen nur die 4 FC Adapter auf die beiden Virtual-I/O-Server aufgeteilt werden.

Die beiden Virtual-I/O-Server sollen ms12-vio1 und ms12-vio2 heißen. Wir legen zunächst den ersten Virtual-I/O-Server ms12-vio1 als Shared-Prozessor LPAR mit 4 Prozessoren und 8 GB Speicher an (uncap_weight=255):

$ lpar -m ms12 create ms12-vio1 lpar_env=vioserver desired_procs=4 max_procs=8 desired_mem=8G max_mem=16G max_virtual_slots=300 uncap_weight=255
.
    > ms12-vio1
$

Als maximale Werte wurde jeweils das Doppelte des normalen Wertes angegeben. Wichtig ist die Angabe des Attributs lpar_env mit dem Wert vioserver, da ansonsten eine normale LPAR vom Typ aixlinux angelegt wird! Der zweite Virtual-I/O-Server sollte mit den gleichen Werten angelegt werden. Dies kann erreicht werden, indem man das letzte Kommando mit geändertem LPAR-Namen wiederholt, alternativ kann man aber auch beim Erzeugen eine Source-LPAR angeben, die als Konfigurationsvorlage (Blueprint) dient, in diesem Falle der gerade erzeugte Virtual-I/O-Server:

$ lpar -m ms12 create -s ms12-vio1 ms12-vio2
    > ms12-vio2
$

Der erzeugte zweite Virtual-I/O-Server besitzt die gleiche Konfiguration wie der erste Virtual-I/O-Server! Beim Erzeugen einer neuen LPAR wird standardmäßig der Profil-Name standard verwendet:

$ lpar -p standard lsmem -m ms12
                    MEMORY           MEMORY            HUGE_PAGES   
LPAR_NAME  MODE  AME  MIN   DESIRED  MAX    MIN  DESIRED  MAX
ms12-vio1  ded   0.0  1024  8192     16384  -    -        -
ms12-vio2  ded   0.0  1024  8192     16384  -    -        -
$ lpar -p standard -m ms12 lsproc                    PROC         PROCS           PROC_UNITS                    UNCAP      PROC   
LPAR_NAME  MODE    MIN  DESIRED  MAX  MIN  DESIRED  MAX  SHARING_MODE  WEIGHT  POOL
ms12-vio1  shared  1    4        8    0.4  0.4      0.8  uncap         255     DefaultPool
ms12-vio2  shared  1    4        8    0.4  0.4      0.8  uncap         255     DefaultPool
$

Als nächstes weisen wir den beiden Virtual-I/O-Servern jeweils einen der beiden SAS-Adapter zu. Dem ersten Virtual-I/O-Server (ms12-vio1) weisen wir den SAS-Adapter in Slot P1-C49 zu, DRC-Index 21040015 und dem zweiten Virtual-I/O-Server (ms12-vio2) den SAS-Adapter in Slot P1-C50, DRC-Index 2104001D. Die Adapter können mit dem Kommando „ms addslot“ (add I/O slot) hinzugefügt werden, wobei das Profil angegeben werden muß, da die Virtual-I/O-Server bisher noch deaktiviert sind:

$ lpar -p standard addslot ms12-vio1 21040015
$ lpar -p standard addslot ms12-vio2 2104001D
$

Jeder der beiden POWER9 Prozessoren eines S922 Servers besitzt 4 PCIe4.0 Controller. Der SAS-Adapter im Slot P1-C49 teilt sich dabei einen PCIe4.0 Controller mit den Adapter-Karten in den Slots P1-C10, P1-C11 und P1-C12. Der SAS-Adapter im Slot P1-C50 teilt sich einen PCIe4.0 Controller mit den Adapter-Karten in den Slots P1-C5, P1-C6 und P1-C7. Wir weisen daher den FC-Adapter in Slot P1-C12 (DRC-Index 21030014) dem Virtual-I/O-Server ms12-vio1 zu, der schon den Adapter in Slot P1-C49 besitzt und den FC-Adapter in Slot P1-C6 (DRC-Index 2102001B) dem Virtual-I/O-Server ms12-vio2, der schon den Adapter in Slot P1-C50 besitzt:

$ lpar -p standard addslot ms12-vio1 21030014
$ lpar -p standard addslot ms12-vio2 2102001B
$

Damit bleiben noch die letzten beiden FC-Adapter in den Slot P1-C3 (DRC-Index 21010022 )und P1-C9 (DRC-Index 21010010). Beide Slots besitzen einen eigenen PCIe4.0 Controller. Wir weisen den FC-Adapter in Slot P1-C9 dem Virtual-I/O-Server ms12-vio1 und den FC-Adapter in Slot P1-C3 dem Virtual-I/O-Server ms12-vio2 zu:

$ lpar -p standard addslot ms12-vio1 21010010
$ lpar -p standard addslot ms12-vio2 21010022
$

Damit sind außer den SR-IOV Adaptern alle anderen Adapter-Karten den beiden Virtual-I/O-Servern zugewiesen. Da die Virtual-I/O-Server bisher nicht aktiviert wurden, steht die Zuordnung bisher nur in den Profilen der beiden Virtual-I/O-Server. Die Zuordnung der Slots im Profil kann mit dem Kommando „lpar lsslot“ (list I/O slots) unter Angabe des Profil-Namens aufgelistet werden, hier für ms12-vio1 und das Profil standard:

$ lpar -p standard lsslot ms12-vio1
DRC_NAME                  DRC_INDEX  REQ  IOPOOL  DESCRIPTION
U78D3.001.VYR0ETG-P1-C9   21010010   No   none    PCIe3 4-Port 16Gb FC Adapter
U78D3.001.VYR0ETG-P1-C12  21030014   No   none    PCIe3 4-Port 16Gb FC Adapter
U78D3.001.VYR0ETG-P1-C49  21040015   No   none    PCIe3 x8 SAS RAID Internal Adapter 6Gb
$

Und entsprechend für ms12-vio2:

$ lpar -p standard lsslot ms12-vio2
DRC_NAME                  DRC_INDEX  REQ  IOPOOL  DESCRIPTION
U78D3.001.VYR0ETG-P1-C6   2102001B   No   none    PCIe3 4-Port 16Gb FC Adapter
U78D3.001.VYR0ETG-P1-C50  2104001D   No   none    PCIe3 x8 SAS RAID Internal Adapter 6Gb
U78D3.001.VYR0ETG-P1-C3   21010022   No   none    PCIe3 4-Port 16Gb FC Adapter
$

Damit können die beiden Virtual-I/O-Server als nächstes installiert werden.