Configure Multiple Storage Backends in Cinder

This article explains how to configure a block storage node with multiple storage backends.

Prerequisites

Authorize a host with the Block Storage role before continuing this tutorial. You may select any driver on the authorization step. The driver selected on the authorization step won't be used. The steps outlined below show you how to set the driver for each storage backend.

If you already have a host authorized as a block storage node, you may continue with the configuring the block storage node as given below.

Multiple storage backend configuration

To enable support for multiple storage backends on a single block storage node,  update the configuration file as shown below.

For this article, we assume the following.

NFS server 1: 10.4.0.25 (hdd)
NFS server 2: 10.4.0.26 (ssd)
SolidFire appliance: 10.4.0.27
Block Storage node: 10.4.0.28

We want the block storage node (10.4.0.28) to use NFS servers 1 and 2 as well as the SolidFire appliance as storage pools.

Step 1

SSH into the block storage node and create a file named cinder_override.conf in /opt/pf9/etc/pf9-cindervolume-base/conf.d:

cd /opt/pf9/etc/pf9-cindervolume-base/conf.d
touch cinder_override.conf

Step 2

Add the following snippet of configuration to cinder_override.conf:

[DEFAULT]
enabled_backends=nfs-hdd,nfs-ssd,solidfire-backend

[nfs-hdd]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
volume_backend_name = nfs-hdd-type
nfs_shares_config = /tmp/nfs-hdd.conf

[nfs-ssd]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
volume_backend_name = nfs-ssd-type
nfs_shares_config = /tmp/nfs-ssd.conf

[solidfire-backend]
volume_backend_name = solidfire-backend
volume_driver = cinder.volume.drivers.solidfire.SolidFireDriver
san_ip = 10.4.0.27
san_login = <solidfire_username>
san_password = <solidfire_password>
sf_account_prefix = ''

It is important to append the name of the config group (e.g. nfs-ssd) to the list of enabled_backends. Otherwise, Cinder ignores that particular config group.

Each config group must have at least the following parameters.

The choice of volume_driver dictates additional parameters to be set. For NFS, nfs_shares_config is required. This parameter sets the path to the NFS exports to be used for this storage backend.

Drivers available to Cinder are available here. Use the dot notation format to access the desired driver. See the examples above.

Restart the pf9-cindervolume service on the block storage node:

$ sudo service pf9-cindervolume-base restart

Here's an example nfs-hdd.conf:

10.4.0.25:/var/nfs/backup

An example nfs-ssd.conf:

10.4.0.26:/exports/share

Volume Type

To use select a particular storage backend when creating volumes, a volume type must be created referencing the volume_backend_name. For more information on volume types, please read this article. For our purposes here, let us create volume types for each of our storage backends.

Note: If the volume type is defined in the database, but no volume types exist for that backend in the configuration, then no valid host is found.

You can creating the remaining volume types in a similar way.

You are now be able to create volumes on specific storage backends using their corresponding volume types.


July 01, 2016