Cinder Driver Configuration

The Lightbits OpenStack driver enables OpenStack clusters to use Lightbits clustered storage servers. This article details how to configure Cinder for use with the Lightbits storage backend system.

Note that discovery-client is mandatory to set up on compute nodes. For additional information, see Discovery-client Deployment and Usage.

The following operations are supported:

  • Creating a volume
  • Attaching a volume
  • Detaching a volume
  • Creating an image from a volume
  • Live migration
  • Volume replication
  • Multi-attach
  • Extending a volume
  • Creating a snapshot
  • Creating a volume from a snapshot
  • Creating a volume from a volume (clone)

Lightbits OpenStack Driver Components

The Lightbits OpenStack driver has three components:

  • Cinder driver
  • Nova libvirt volume driver
  • os_brick initiator connector

In addition, it requires the Lightbits discovery-client, provided with Lightbits. The os_brick connector uses the discovery-client to communicate with Lightbits NVMe/TCP discovery services.

Cinder Driver

The Cinder driver integrates with Cinder and performs REST operations against the Lightbits cluster. To enable the driver, add the following to Cinder’s configuration file:

Bash
Copy

and

Bash
Copy
  • TARGET_ACCESS_IPS are the Lightbits cluster nodes access IPs. Multiple nodes should be separated by commas. For example: lightos_api_address = 192.168.67.78,192.168.34.56,192.168.12.17. These IPs are where the driver looks for the Lightbits clusters REST API servers.
  • LIGHTOS_JWT is the JWT (JSON Web Token) that is located at the Lightbits installation controller. You can find the JWT at ~/lightos-default-admin-jwt.
  • The default number of replicas for volumes is 3, and valid values for lightos_default_num_replicas are 1, 2, or 3.
  • The default compression setting is False (i.e., data is uncompressed). The default compression setting can also be True to indicate that new volumes should be created compressed, assuming no other compression setting is specified via the volume type. To control compression on a per-volume basis, create volume types for compressed and uncompressed, and use them as appropriate.
  • The default time to wait for an API service response is 30 seconds per API endpoint.

Creating volumes with non-default compression and number of replicas settings can be done through the volume types mechanism. To create a new volume type with compression enabled:

Bash
Copy

To create a new volume type with one replica:

Bash
Copy

To create a new type for a compressed volume with three replicas:

Bash
Copy

Then create a new volume with one of these volume types:

Bash
Copy

NVMe/TCP and Asymmetric Namespace Access (ANA)

The Lightbits clusters expose their volumes using NVMe/TCP ANA. ANA is a relatively new feature in the NVMe/TCP stack in Linux, but is fully supported in Ubuntu 20.04. Each compute host in the OpenStack cluster needs to be ANA-capable to provide OpenStack VMs with Lightbits volumes over NVMe/TCP.

For more information on how to set up the compute nodes to use ANA, see the Linux Client Software Installation section of the Lightbits Installation Guide.

In the current version, if any of the cluster nodes changes its access IPs, the Cinder driver’s configuration file should be updated with the cluster nodes access IPs and restarted. As long as the Cinder driver can access at least one cluster access IP, it will work, but will be susceptible to cluster node failures.

Driver Options

The following table contains the configuration options supported by the Lightbits Cinder driver.

Configuration Option = Default ValueDescription
lightos_api_address = None(List of IPAddress) The IP addresses of the Lightbits API servers, separated by commas.
lightos_api_port = 443(Port(min=0, max=65535)) The TCP/IP port at which the Lightbits API endpoints listen. Port 443 is used for HTTPS and other values are used for HTTP.
lightos_api_service_timeout = 30(Integer) The default amount of time (in seconds) to wait for an API endpoint response.
lightos_default_compression_enabled = False(Boolean) Set to True to create new compressed volumes, assuming no other compression setting is specified via the volumes type.
lightos_default_num_replicas = 3(Integer(min=1, max=3)) The default number of replicas to create for each volume.
lightos_jwt = None(String) The JWT to be used for volume and snapshot operations with the Lightbits cluster. Do not set this parameter if the cluster is installed with multi-tenancy disabled.
Type to search, ESC to discard
Type to search, ESC to discard
Type to search, ESC to discard