About Storage Port Group Balancing
Storage arrays can have a significant number of Fiber Channel (FC) ports connected to fabrics. They all vary how ports are split up among controller nodes and whether the nodes can serve all volumes or just a subset. Typically, the storage administrator allocates port subsets for desired redundancy requirements and I/O traffic balancing between ports.
When an NPIV volume is mapped, an active storage port per fabric is chosen (and per controller for IBM SVC only) for zoning with the initiators. This might not achieve the desired load balancing between ports nor the amount of pathing. For XIV and DS8K especially, we don't take into consideration the module/node that owns the storage ports. So, we can choose ports repeatedly that are owned by the same module(s) and/or for a particular VM choose ports only from one module which will not give module redundancy.
Starting PowerVC 1.4.2, PowerVC allows an administrator to configure storage templates that define a list of port groups. Storage port groups allow more flexibility in Fibre Channel zoning and provide storage port load balancing across your array when zoning to virtual machines with NPIV-attached volumes.
When multiple storage port groups are associated with a storage template, PowerVC ensures that virtual machines deployed with that template use one of the groups of ports in a round-robin fashion. That is, when the first virtual machine is deployed, it is connected to one or more ports from the first port group, that is, zoning happens with one or more WWPNs in that specific port group. (depending on the value of the zone-one-target property) When the second virtual machine is deployed, it uses the second port group, and so on.
- The feature is supported for IBM Storage – Storwize, XIV and DS8000. For information on other storage types, see “Working with port groups for other brands of storage” section in PowerVC knowledge center topic: Configuring port groups.
- This feature is applicable for NPIV based deployments and volume attachments.
- We have to set zone-one-target to False for particular IBM storage provider else paths for all the WWPNs in the port groups will not be created. When a single port group is defined to a storage template and the storage template is used to attach a volume, the port group functions as the whitelist of WWPNs that are allowed for zoning (if zoning is not yet in place for the virtual machine).
Let’s see the feature in action itself. We are using XIV storage provider which is connected to two Fabrics.
We will first set zone-one-target config to False for XIV using command
powervc-config storage fc-zone zone-one-target
We have now set zone-one-target to False for XIV storage.
Steps to configure Storage Port Groups in PowerVC
- Create a storage template from Configuration > Storage Templates page (or)
Select an existing storage template and click Edit.
- Select Define Storage Port Groups.
- Click Create Port Group.
This displays a pop-up box in UI showing list of storage ports (WWPNs) listing out their Status, Connectivity to Fabric and other useful information.
- Perform the following steps to create a port group:
- Enter port group name.
- Select the subsets of ports. Make sure they are connected to the fabric.
- Click Create.
As you see the first port group XIV-PG-1 is created.
We can see a consolidated view of port groups as shown in the image below:
- Similarly, create two more port groups(as shown in the step 4).
You can define your own port groups based on the requirements:
As you can see, there three port groups are created with ports (WWPNs):
When creating a custom storage template , enter storage template name and click Create.
- XIV-PG-1: 50051738075b00141
- XIV-PG-2: 50051738075b00181
- XIV-PG-3: 50051738075b00141 and 50051738075b00181
You can set this template to default if you are planning to use the template frequently for deploy operations. You can also choose to manually select this template during deploy operation.
Storage Template is created and we can see the details of port groups as follows:
Using port groups for deploying VMs
Let us deploy three NPIV based VMs named: xivtcc1, xivtcc2 and xivtcc3 in PowerVC. During template creation we already marked storage template as default.
Let us see zoning for all three deployed VMs:
- Zoning for 1st VM: xivtcc1
It is using the only port defined in port group XIV-PG-1: 50051738075b00141.
- Zoning for 2nd VM: xivtcc2
It is using the only port defined in port group XIV-PG-2: 50051738075b00181.
- Finally, Zoning for 3rd VM: xivtcc3
It is using both the ports defined in XIV-PG-3: 50051738075b00141 and 50051738075b00141
As you have seen from the example scenario, you can also leverage PowerVC port group Load balancing feature for better utilization of the storage target ports.
If you have any questions, feel free to add them below. We’d love to hear from you! And don’t forget to follow us on Facebook, LinkedIn, and Twitter.