Attaching external FC storage
The OpenStack Cinder Fibre Channel (FC) driver allows you to mount multiple FC LUNs to your compute cluster and use them as external FC storages. As the driver is based on the FC storage protocol, compute nodes must be configured to support multipathing.
Note that each third-party storage might have its own recommended settings for the multipathing configuration. The instruction below describes how to configure multipathing for Pure Storage and NetApp® devices.
To attach an external Pure Storage device
-
Enable multipathing on each compute node:
-
Edit the configuration file /etc/multipath.conf as follows:
defaults { find_multipaths yes polling_interval 10 } devices { device { vendor "PURE" product "FlashArray" path_selector "service-time 0" hardware_handler "1 alua" path_grouping_policy group_by_prio prio alua failback immediate path_checker tur fast_io_fail_tmo 10 user_friendly_names no no_path_retry 0 features 0 dev_loss_tmo 600 } } blacklist { device { vendor "QEMU" product ".*" } }
For more details about the Pure Storage configuration, refer to the Pure Storage recommended settings.
To configure multipathing for other FC storages, refer to your storage documentation.
-
Load the kernel module:
# modprobe dm-multipath
-
Launch and enable the multipathing service:
# systemctl start multipathd; systemctl enable multipathd
-
-
Attach the device to the compute cluster by using the following command:
vinfra service compute storage add <storage_name> --params volume_backend_name=<backend_name>, volume_driver=<openstack_volume_driver_name>,san_ip=<ip_address>, image_volume_cache_enabled=True,use_multipath_for_image_xfer=True --secret-params pure_api_token=<token> [--param <param=value>] [--secret-param <key=value>] --enable
Where:
<storage_name>
is a custom name of your external storage. The name may only contain letters, numbers, and underscores, and must be 3 to 64 characters long.volume_backend_name=<backend_name>
must be the same as<storage_name>
.volume_driver=<openstack_volume_driver_name>
is the name of the OpenStack volume driver. For example,cinder.volume.drivers.pure.PureFCDriver
.san_ip=<ip_address>
is the IP address of the external storage to connect to.image_volume_cache_enabled
should be set toTrue
to enable image-volume caching for the external storage, to improve the performance of creating a volume from an image.use_multipath_for_image_xfer
should be set toTrue
for multipath setups. Do not specify this parameter if multipathing is disabled.--secret-params
is intended to be used for sensitive data, like passwords or tokens. For example,pure_api_token=<token>
is the API token for a Pure Storage solution.--param
and--secret-param
are intended for single parameters with values containing the comma symbol. For example,replication_device=backend_id:<storage_name>,san_ip:<ip_address>,api_token:<token>,type:<replication_type>
.
For example, to add the external storage
pure_storage
with the IP address 10.10.10.11, run:# vinfra service compute storage add pure_storage --params volume_backend_name=pure_storage,\ volume_driver=cinder.volume.drivers.pure.PureFCDriver,san_ip=10.10.10.11,use_multipath_for_image_xfer=True,\ image_volume_cache_enabled=True --secret-params pure_api_token=7acb5db8-d312-4f66-b076-f556d6fa1232 --enable
Ensure that the data specified is valid. An incorrectly configured storage will lead to the critical state of the
cinder-volume
service and the node itself. However, all other operations on the node will not be affected. -
Check that the external storage is successfully attached by running:
# vinfra service compute storage list +--------------+--------------------------------------------------------+-----------------------+---------+------------+ | name | params | secret_params | enabled | configured | +--------------+--------------------------------------------------------+-----------------------+---------+------------+ | pure_storage | san_ip: 10.10.10.11 | pure_ip_token: ****** | True | True | | | use_multipath_for_image_xfer: True | | | | | | image_volume_cache_enabled: True | | | | | | volume_backend_name: pure_storage | | | | | | volume_driver: cinder.volume.drivers.pure.PureFCDriver | | | | +--------------+--------------------------------------------------------+-----------------------+---------+------------+
To attach an external NetApp storage device
-
Enable multipathing on each compute node:
-
Edit the configuration file /etc/multipath.conf as follows:
defaults { path_checker readsector0 no_path_retry fail } devices { device { vendor "NETAPP " product "LUN.*" no_path_retry queue path_checker tur } } blacklist { device { vendor "QEMU" product ".*" } }
For more details about the NetApp configuration, refer to the NetApp recommended settings.
To configure multipathing for other FC storages, refer to your storage documentation.
-
Load the kernel module:
# modprobe dm-multipath
-
Launch and enable the multipathing service:
# systemctl start multipathd; systemctl enable multipathd
-
-
Attach the device to the compute cluster by using the following following command:
vinfra service compute storage add <storage_name> --params volume_backend_name=<backend_name>, volume_driver=<openstack_volume_driver_name>,netapp_server_hostname=<hostname>, netapp_storage_protocol=fc,netapp_transport_type={http|https},netapp_vserver=<vm_name> --secret-params netapp_login=<username>,netapp_password=<password> [--param <param=value>] [--secret-param <key=value>] --enable
Where:
<storage_name>
is a custom name of your external storage. The name may only contain letters, numbers, and underscores, and must be 3 to 64 characters long.volume_backend_name=<backend_name>
must be the same as<storage_name>
.volume_driver=<openstack_volume_driver_name>
is the name of the OpenStack volume driver. For example,cinder.volume.drivers.netapp.common.NetAppDriver
.netapp_server_hostname=<hostname>
is the hostname or IP address of the storage system.netapp_storage_protocol=fc
specifies the Fibre Channel storage protocol to be used.netapp_transport_type={http|https}
defines the transport protocol for communicating with the storage system. Valid options arehttp
andhttps
.netapp_vserver=<vm_name>
is the storage VM name on the storage cluster where provisioning of block storage volumes should occur.--secret-params
is intended to be used for sensitive data, like passwords or tokens. For example,netapp_login=<username>
andnetapp_password=<password>
are the credentials of the administrator account used to access the storage system.--param
and--secret-param
are intended for single parameters with values containing the comma symbol.
For example, to add the external storage
netapp_storage
with the IP address 10.10.10.12 and the VM namestorage_vm
, run:# vinfra service compute storage add netapp_storage --params volume_backend_name=netapp_storage,\ volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver,netapp_server_hostname=10.10.10.12,\ netapp_storage_protocol=fc,netapp_vserver=storage_vm --secret-params netapp_login=admin,\ netapp_password=password --enable
Ensure that the data specified is valid. An incorrectly configured storage will lead to the critical state of the
cinder-volume
service and the node itself. However, all other operations on the node will not be affected. -
Check that the external storage is successfully attached by running:
# vinfra service compute storage list +----------------+-----------------------------------------------------------------+---------------------------+---------+------------+ | name | params | secret_params | enabled | configured | +----------------+-----------------------------------------------------------------+---------------------------+---------+------------+ | netapp_storage | netapp_server_hostname: 10.10.10.12 | netapp_login: '******' | True | True | | | netapp_storage_protocol: fc | netapp_password: '******' | | | | | netapp_vserver: storage_vm | | | | | | volume_backend_name: netapp_storage | | | | | | volume_driver: cinder.volume.drivers.netapp.common.NetAppDriver | | | | +----------------+-----------------------------------------------------------------+---------------------------+---------+------------+