Lenovo Fibre Channel and iSCSI drivers¶
The LenovoFCDriver and LenovoISCSIDriver Cinder drivers allow
Lenovo S-Series arrays to be used for block storage in OpenStack
deployments.
System requirements¶
To use the Lenovo drivers, the following are required:
- Lenovo S2200, S3200, DS2200, DS4200 or DS6200 array with: - iSCSI or FC host interfaces 
- G22x firmware or later 
 
- Network connectivity between the OpenStack host and the array management interfaces 
- HTTPS or HTTP must be enabled on the array 
Supported operations¶
- Create, delete, attach, and detach volumes. 
- Create, list, and delete volume snapshots. 
- Create a volume from a snapshot. 
- Copy an image to a volume. 
- Copy a volume to an image. 
- Clone a volume. 
- Extend a volume. 
- Migrate a volume with back-end assistance. 
- Retype a volume. 
- Manage and unmanage a volume. 
Note
The generic grouping functionality supported in the G265 and later firmware is not supported by OpenStack Cinder due to differences in the grouping models used in Cinder and the S-Series firmware.
Configuring the array¶
- Verify that the array can be managed using an HTTPS connection. HTTP can also be used if - hpmsa_api_protocol=httpis placed into the appropriate sections of the- cinder.conffile, but this option is deprecated and will be removed in a future release.- Confirm that virtual pools A and B are present if you plan to use virtual pools for OpenStack storage. 
- Edit the - cinder.conffile to define a storage back-end entry for each storage pool on the array that will be managed by OpenStack. Each entry consists of a unique section name, surrounded by square brackets, followed by options specified in- key=valueformat.- The - lenovo_pool_namevalue specifies the name of the storage pool on the array.
- The - volume_backend_nameoption value can be a unique value, if you wish to be able to assign volumes to a specific storage pool on the array, or a name that is shared among multiple storage pools to let the volume scheduler choose where new volumes are allocated.
- The rest of the options will be repeated for each storage pool in a given array: - volume_driverspecifies the Cinder driver name.
- san_ipspecifies the IP addresses or host names of the array’s management controllers.
- san_loginand- san_passwordspecify the username and password of an array user account with- manageprivileges.
- driver_use_sslshould be set to- trueto enable use of the HTTPS protocol.
- lenovo_iscsi_ipsspecifies the iSCSI IP addresses for the array if using the iSCSI transport protocol.
 
 - In the examples below, two back ends are defined, one for pool A and one for pool B, and a common - volume_backend_nameis used so that a single volume type definition can be used to allocate volumes from both pools.- Example: iSCSI example back-end entries - [pool-a] lenovo_pool_name = A volume_backend_name = lenovo-array volume_driver = cinder.volume.drivers.lenovo.lenovo_iscsi.LenovoISCSIDriver san_ip = 10.1.2.3 san_login = manage san_password = !manage lenovo_iscsi_ips = 10.2.3.4,10.2.3.5 driver_use_ssl = true [pool-b] lenovo_pool_name = B volume_backend_name = lenovo-array volume_driver = cinder.volume.drivers.lenovo.lenovo_iscsi.LenovoISCSIDriver san_ip = 10.1.2.3 san_login = manage san_password = !manage lenovo_iscsi_ips = 10.2.3.4,10.2.3.5 driver_use_ssl = true - Example: Fibre Channel example back-end entries - [pool-a] lenovo_pool_name = A volume_backend_name = lenovo-array volume_driver = cinder.volume.drivers.lenovo.lenovo_fc.LenovoFCDriver san_ip = 10.1.2.3 san_login = manage san_password = !manage driver_use_ssl = true [pool-b] lenovo_pool_name = B volume_backend_name = lenovo-array volume_driver = cinder.volume.drivers.lenovo.lenovo_fc.LenovoFCDriver san_ip = 10.1.2.3 san_login = manage san_password = !manage driver_use_ssl = true 
- If HTTPS is not enabled in the array, add - lenovo_api_protocol = httpin each of the back-end definitions.
- If HTTPS is enabled, you can enable certificate verification with the option - driver_ssl_cert_verify = True. You may also use the- driver_ssl_cert_pathoption to specify the path to a CA_BUNDLE file containing CAs other than those in the default list.
- Modify the - [DEFAULT]section of the- cinder.conffile to add an- enabled_backendsparameter specifying the back-end entries you added, and a- default_volume_typeparameter specifying the name of a volume type that you will create in the next step.- Example: [DEFAULT] section changes - [DEFAULT] # ... enabled_backends = pool-a,pool-b default_volume_type = lenovo 
- Create a new volume type for each distinct - volume_backend_namevalue that you added to the- cinder.conffile. The example below assumes that the same- volume_backend_name=lenovo-arrayoption was specified in all of the entries, and specifies that the volume type- lenovocan be used to allocate volumes from any of them.- Example: Creating a volume type - $ openstack volume type create lenovo $ openstack volume type set --property volume_backend_name=lenovo-array lenovo 
- After modifying the - cinder.conffile, restart the- cinder-volumeservice.
Driver-specific options¶
The following table contains the configuration options that are specific to the Lenovo drivers.
| Configuration option = Default value | Description | 
|---|---|
| 
 | (List of String) List of comma-separated target iSCSI IP addresses. | 
| 
 | (String) Pool or Vdisk name to use for volume creation. | 
| 
 | (String(choices=[‘linear’, ‘virtual’])) linear (for VDisk) or virtual (for Pool). | 
| 
 | (String(choices=[‘http’, ‘https’])) Lenovo api interface protocol. DEPRECATED | 
| 
 | (Boolean) Whether to verify Lenovo array SSL certificate. DEPRECATED | 
| 
 | (String) Lenovo array SSL certificate path. DEPRECATED | 
