IBM® PowerVC™ is virtualization and cloud management software that is built on OpenStack.
InfiniBox storage systems can be used in an OpenStack environment by utilizing the Infinidat Cinder or Manila drivers. IBM PowerVC allows any OpenStack supported storage system, including InfiniBox storage, to be used as a Pluggable Storage device, subject to IBM testing and validation which Infinidat has completed.
This document describes how to configure and use InfiniBox storage in a PowerVC environment, and contains the following sections:
- Register an InfiniBox system with PowerVC
- PowerVC Fabric Zoning for InfiniBox systems
- Provision a new volume to a PowerVC VM
- Migrate PowerVC volumes to InfiniBox
Supported InfiniBox Models
All InfiniBox models compatible with the current Infinidat Cinder driver are supported for use with the IBM PowerVC.
|InfiniBox Software||5.x and above|
|PowerVC Versions||1.4 and above|
The information presented in this document is based on testing performed with PowerVC version 2.0.1, which is based on OpenStack Ussuri.
Procedures may differ for other PowerVC versions.
1. Create InfiniBox User for PowerVC
On the InfiniBox, create a pool and a user account for use with PowerVC. You can do this via the InfiniBox GUI, API, or CLI as shown below. Note that
<InfiniBox-User-Email> are placeholders for you to replace according to your preferred practices.
2. Install Infinidat Python SDK
On the PowerVC management server/VM, use PyPi to install the Infinidat Python SDK:
3. Obtain InfiniBox Cinder Driver
In PowerVC, "Pluggable storage" refers to any OpenStack compatible storage array that has a vendor-distributed Cinder driver. InfiniBox is considered a pluggable storage array.
Unlike typical OpenStack deployments, when the InfiniBox is configured as a storage provider for PowerVC, do not modify any of the Cinder configuration files directly. Instead, use the steps provided in this document.
On the PowerVC management server/VM, pull down the Cinder git repository and copy the Infinidat driver into the relevant folder:
- For PowerVC 1.x:
- For PowerVC 2.x:
Note that the Infinidat driver file permissions must at least be world-readable.
In the commands below, the
stable/ussuri branch of OpenStack is used because PowerVC 2.0.1 is based on OpenStack Ussuri.
Contact Infinidat for any
infinidat.py driver patches that may not be available in upstream OpenStack repositories yet.
Register the InfiniBox system with PowerVC
1. Prepare PowerVC Properties File
Prepare a text file with the following contents. This file is temporary, and will not be needed after the system is registered with PowerVC. The following items shown in the example below are placeholders that should be filled based on your environment:
ibox-properties-file- this file name is arbitrary. Use a different file name for each InfiniBox system.
<InfiniBox-Floating-IP>- this is the floating IP address for managing the InfiniBox, found in the InfiniBox settings.
<InfiniBox-User-Password>- these are the InfiniBox credentials created for PowerVC management access in preparation step 1, earlier in this document.
<InfiniBox-Pool-Name>- this is the InfiniBox pool name that was created for PowerVC use in preparation step 1, earlier in this document.
To register a second InfiniBox system, repeat this process using an updated properties file.
fc) is the only protocol PowerVC supports for pluggable storage, as of PowerVC 2.0.1 (August 2021).
2. Register Provider with PowerVC
powervc_register command using the properties file as follows. This command will run as
root and will prompt for the root password. Note
<InfiniBox-Provider-Name> is a placeholder for you to replace according to your preferred practices - e.g. you may wish to use the hostname of the InfiniBox system you are setting up.
PowerVC Fabric Zoning for InfiniBox systems
Fabric zoning is performed automatically by PowerVC as described at https://www.ibm.com/docs/en/powervc/2.0.1?topic=ps-how-powervc-sets-up-fibre-channel-switch-zoning, except if there is a need to deploy a VM using an existing Image. In that case the PowerVC Management Server/VM must be manually zoned to all three nodes of the InfiniBox on both fabrics. This is necessary because the InfiniBox doesn't currently support the concept of Volume Cloning, and to work around this, the InfiniBox Cinder volume driver creates a new volume, temporarily attaches it to the PowerVC server, copies the Image onto it, and then detaches it from the PowerVC server before making it available to the VM being deployed. This is the only portion of zoning that is manual. While deploying a VM to InfiniBox storage, or attaching InfiniBox volumes to an existing VM, PowerVC performs the fabric zoning necessary to connect that VM to all three InfiniBox nodes over two fabrics when configured as described in this document.
Given that the InfiniBox system can have up to 24 Fibre Channel ports connected into the fabrics, it is crucial to limit the number of ports used for creating zones in order to prevent a proliferation of paths used by a VM to access a volume. At the same time, it is also crucial to use the available hardware resources (VIOS, fabrics) for redundancy in the configuration. Both of these goals are accomplished by configuring a Storage Connectivity Group and Target Port Groups.
Storage Connectivity Group
Create a Storage connectivity group in PowerVC with the following parameters (screenshots included below):
- Details tab:
- Boot Volume Connectivity Type = NPIV
- Data Volume Connectivity Type = NPIV
- Check box - Enable VM Deployment
- VIOS members tab:
- VIOS Redundancy for Volume connectivity = Exactly 2 VIOS
- Fabrics tab:
- NPIV Fabric Access Requirement = Every fabric per VIOS
- Number of Fabric ports per VIOS = 1
- Check box - Dynamically associate all fabrics that are connected to the VIOSes in this storage connectivity group.
Target Port Groups
The PowerVC user interface does not allow customizing a Storage Template for Pluggable storage drivers like the InfiniBox Cinder driver.
In order to define Target Port Groups for zoning associated with pluggable storage drivers, the PowerVC REST API must be used.
Step 1: Determine the Storage Template ID.
powervcrc file with the correct environment variable definitions, like the example below. Replace
OS_PASSWORD, and any other fields as appropriate for your PowerVC environment.
As shown in the example below, source in this
powervcrc file and run the
cinder type-list command to show the storage template IDs:
Step 2: Determine the Project ID
Source in the
powervcrc file to pick up the environment variables. Then run this python script:
Step 3: Update the port groups for the InfiniBox storage template
As described in https://www.ibm.com/docs/en/powervc/2.0.1?topic=templates-configuring-storage-port-groups, PowerVC will use one of the defined port groups in a balanced fashion, and will rotate among them for each subsequent VM. The
drivers:target_port_groups extra spec key defines the list of groups for the storage template, and the
drivers:port_group:port_group_name key defines a port group.
To update the port groups, use the
cinder extra-specs-list command to view the current extra-specs, and then run the following python script to execute a REST API request to update the extra-specs.
The URL for the request is
Step 4: Verify the port groups
cinder extra-specs-list command to note that the extra-specs have been correctly updated.
Provision New Volumes from InfiniBox
Here is how to provision a new InfiniBox volume to an existing PowerVC VM:
- From Virtual Machines → VM list, select the VM and click on Attach volumes.
- In the Attach volumes to VM dialog, Click on the New volumes tab.
- Type in a volume name, size (and count, if multiple volumes are needed. If count is supplied, the new volumes will have a suffix -1, -2, etc. attached to the name).
- From the Storage template drop-down list, select the InfiniBox base template
- Click "Attach Volumes"
Once the operation is successful, it results in the following modifications to the InfiniBox:
- a volume is created (or multiple volumes, if
countwas more than 1)
- a host object is created and ports added to it (if this is the first time an InfiniBox volume is attached to this particular host).
- host is mapped to the volume
Migrate PowerVC volumes to InfiniBox
InfiniBox Cinder driver does not support the Cinder clone, migration, or volume retype APIs, so users cannot use PowerVC live capture or related PowerVC features. Instead, users must follow LVM-based migration or other migration processes that do not depend on those Cinder operations.
The process of migrating an existing PowerVC volume to InfiniBox is as follows:
- Create an appropriately sized Boot Volume or Data volume as described in the previous section
- Rescan so that the VM sees this new volume.
- Use LVM migration to move the contents of the existing volume over to the InfiniBox volume. A good description of LVM migration procedure is provided in https://www.ibm.com/docs/en/ds8870/7.4?topic=manager-using-migratepv-command (make sure to select the appropriate OS version from the list on the top left).