8.1. Planing and Creation of a Virtual I/O Server

Regardless of whether it is Virtual Ethernet, Virtual SCSI, Virtual FC or vNIC, all of these virtualization options require at least one virtual I/O server.

Redundant virtual I/O server configuration
Figure 8.1: Redundant virtual I/O server configuration.

In practice, a configuration with two redundant virtual I/O servers is almost always used. As shown in figure 8.1, both virtual I/O servers have connections to the same external networks and SAN fabrics. On high-end managed systems there are often additional virtual I/O servers in order to distribute the load more evenly or, for example, to separate production LPARs and test LPARs by using different virtual I/O servers.

In order for a virtual I/O server to perform its function, it needs access to the physical hardware of the managed system. Existing I/O adapters must therefore be assigned to the virtual I/O servers, with the exception of SR-IOV network adapters, if SR-IOV is to be used. It makes sense to first of all take stock of which adapter cards are actually available and in which I/O slots the cards have been installed. A list of all physical I/O slots of a managed system can be obtained with the command “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
$

The example system ms12 is an S922 (model G), with 4 times “PCIe3 4-Port 16Gb FC Adapter” and 4 times “PCIe3 2 PORT 25/10 Gb NIC & ROCE SFP28 ADAPTER“. The system was ordered with a split backplane (2 times “PCIe3 x8 SAS RAID Internal Adapter“) and can therefore be configured with 2 virtual I/O servers without external disks. Each of the two virtual I/O servers gets one of the two SAS adapters with internal disks. Since the 4 SR-IOV network adapters are to be used via SR-IOV, only the 4 FC adapters have to be divided between the two virtual I/O servers.

The two virtual I/O servers will be named ms12-vio1 and ms12-vio2. First we create the first virtual I/O server ms12-vio1 as a shared processor LPAR with 4 processors and 8 GB memory (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
$

For the maximum values, we used 2 times the desired values. It is important to specify the attribute lpar_env with the value vioserver, as otherwise a normal LPAR of type aixlinux is created by default! The second virtual I/O server should be created using the same values. This can be achieved by repeating the last command with the changed LPAR name. Alternatively you can also specify the just created first virtual I/O server as a source LPAR when creating the second virtual I/O server. The first virtual I/O server is used as a configuration template (blueprint), in this case:

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

The second virtual I/O server created has the same configuration as the first virtual I/O server! When creating a new LPAR, the profile name standard is used by default:

$ 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
$

Next, we assign one of the two SAS adapters to each of the two virtual I/O servers. We assign the SAS adapter in slot P1-C49 to the first virtual I/O server (ms12-vio1), DRC index 21040015 and the the SAS adapter in slot P1-C50 to the second virtual I/O server (ms12-vio2), DRC index 2104001D. The adapters can be added using the command “ms addslot” (add I/O slot), whereby the profile name must be specified, since the virtual I/O servers are not activated:

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

Each of the two POWER9 processors of an S922 server has 4 PCIe4.0 controllers. The SAS adapter in slot P1-C49 shares a PCIe4.0 controller with the adapter cards in slots P1-C10, P1-C11 and P1-C12. The SAS adapter in slot P1-C50 shares a PCIe4.0 controller with the adapter cards in slots P1-C5, P1-C6 and P1-C7. We therefore assign the FC adapter in slot P1-C12 (DRC index 21030014) to the virtual I/O server ms12-vio1, which already has the adapter in slot P1-C49 and the FC adapter in slot P1-C6 (DRC index 2102001B) the virtual I/O server ms12-vio2, which already has the adapter in slot P1-C50:

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

This leaves the last two FC adapters in slot P1-C3 (DRC index 21010022) and P1-C9 (DRC index 21010010). Both slots have their own PCIe4.0 controller. We assign the FC adapter in slot P1-C9 to the virtual I/O server ms12-vio1 and the FC adapter in slot P1-C3 to the virtual I/O server ms12-vio2:

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

This means that apart from the SR-IOV adapters, all other adapter cards are assigned to the two virtual I/O servers. Since the virtual I/O servers have not yet been activated, the assignment has so far only been in the profiles of the two virtual I/O servers. The assignment of the slots in the profile can be listed with the command “lpar lsslot” (list I/O slots) specifying the profile name, here for ms12-vio1 and the profile 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
$

And accordingly for 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
$

The two virtual I/O servers can now be installed.