SolidFire Storage Driver

SolidFire is an all-flash storage driver for the Block Storage service. When integrated with Metacloud, the SolidFire Platform employs a single, high-availability All-Flash Array that is easy to maintain and scale. Its flash-based system is capable of processing a high threshold of transactions efficiently and is particularly useful in a tiered-storage configuration in conjunction with Ceph or NFS general storage.

Metacloud is compatible with all SolidFire devices that support a SolidFire All-Flash Array volume driver for the Block Storage service. The SolidFire Platform is supported in the following core cinder operations:

  • Create, delete, attach, detach, and extend 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

The SolidFire iSCSI driver uses a single path for each connection, prioritizing iSCSI traffic over API traffic. Each Metacloud hypervisor initiates two iSCSI connections to the SolidFire Platform, which then handles the fail-over and the high availability of the connections instead of the hypervisors. This arrangement is more stable and avoids incompatibilities with older kernels. SolidFire is not compatible with storage devices that use the iSCSI multipathing, including the Pure Storage and Nimble platforms.

In most use cases, the application storage traffic receives priority over orchestration traffic. This is not ideal for rapidly provisioning large numbers of volumes at one time. Volumes are provisioned using the basic create volume or the boot-from-volume workflow. Images are cached on the SolidFire device to improve boot times of VMs when using the boot-from-volume workflow.

The SolidFire driver creates names for volumes on the back end using the UUID-<cinder-id> naming convention. There is a possibility of a UUID collision for customers running multiple clouds against the same cluster.

Quality of Service (QoS) support for the SolidFire iSCSI driver includes the ability to set the following QoS key values in the Block Storage service API:

QoS Key Value
minIOPS The minimum number of IOPS guaranteed for this volume. Default = 100.
maxIOPS The maximum number of IOPS allowed for this volume. Default = 15,000.
burstIOPS The maximum number of IOPS allowed over a short period of time. Default = 15,000.

The QoS keys do not require scoping, but must be created and associated to a volume type. It is best to use the CLI to set values for the QoS keys, but you can view the QoS specifications and volume type associations in the Dashboard > ADMIN > VOLUMES > Volume Types tab.

To create and associate QoS specifications to a volume type:

  1. Create a QoS specification.

    $ openstack volume qos create <QOS_NAME> --consumer back-end \
       --property minIOPS=500 \
       --property maxIOPS=5000
  2. Verify the QoS specification.

    $ openstack volume qos list
    | ID             | Name  | Consumer | Associations | Properties                     |
    | b6265929-09... | QOS   | back-end |              | maxIOPS='5000', minIOPS='500'  |
  3. Associate the QoS specification to a volume type.

    $ openstack volume qos associate <QOS_NAME> <VOLUME_TYPE>
  4. Verify the association.

    $ openstack volume qos list
    | ID             | Name  | Consumer | Associations | Properties                     |
    | b6265929-09... | QOS   | back-end | VOLUME_TYPE  | maxIOPS='5000', minIOPS='500'  |

To change a QoS specification:

You can only change a property in the QoS specification using the qos set command. The change does not apply to existing volumes. The SolidFire administrator can manually adjust the settings for existing volumes using the SolidFire dashboard.

$ openstack volume qos set <QOS_NAME> --property <KEY>=<VALUE>

With a SolidFire storage device you must fully manage the physical storage device and all of the respective connectivity. The Metacloud Operations team does not support the physical device.