Discovery-client Deployment

Discovery-client is a deployable service running under systemd. The service is responsible for discovering, connecting to, and handling changes in Lighbits clusters. It also provides an ongoing nvme connect-all functionality to a remote cluster of Lightbits nvme controllers.

This means the following:

  • The discovery-client maintains an updated list of NVMe-over-Fabrics discovery controllers. A change of the controllers in the Lightbits cluster will be reflected automatically in this list.
  • Discovery-client discovers available nvme-over-fabrics subsystems by running nvme discover commands against these discovery controllers. Discover commands are triggered either by an AEN (Asynchronous Event Notification) received from a remote discovery controller, or by a configuration file from the user that specifies new discovery endpoint(s).
  • Discovery-client automatically connects to available nvme-over-fabrics subsystems by running nvme connect commands.

You can configure the service via a configuration file.

Setting Up the discovery-client on the Client Server

  1. Verify that the nvme-tcp related modules are loaded. Run the command: lsmod | grep nvme

Expected result:

Bash
Copy
  1. In case the kernel module is not loaded, load it using the command: modprobe nvme-tcp
  2. Install the discovery client on client host: yum install -y discovery-client
  3. Start the discovery-client service: systemctl start discovery-client

Connect all or set up the discovery-client configuration file (for persistent discovery):

Bash
Copy

Expected output example:

Bash
Copy

List connected nvme devices:

Bash
Copy

Expected output example:

Bash
Copy

You can now create a filestystem on the block device and mount or use it as a direct block device. Below is an example of a FIO command to run to perform reads and writes to the block device from the client.

Bash
Copy

Persistent discovery-client Configuration

In order to have the NVME-tcp discovery be persistent, you should create and fill in the configuration in a configuration file.

The configuration file should be placed under /etc/discovery-client/discovery.d/<name>.conf

The defined file name must be a proper file name that does not start with "tmp.dc."

Because the discovery-client can work with multiple Lightbits clusters, it needs to know which discovery-service belongs to which cluster. This grouping is achieved by specifying the subsysnqn as an identifier for each entry.

The following is an example input file:

Bash
Copy

Where:

ItemDescription
-tTransport type (tcp)
-aThe IP of the Lightbits storage instance. All of the IPs can be retrieved from the command ‘lbcli list nodes’, under the NVMe endpoint column.
-sThe port used by the discovery-service (8009).
-qThe hostnqn/ACL name of the client. You can use the value stored in the file /etc/nvme/hostnqn, or specify any string (in the example the client is host1). This value must match the ACL attribute set in the ‘lbcli create volume’ command.
-nThe Lightbits cluster hostnqn (can be retrieved from the get cluster API under the Subsystem NQN column).
  1. Restart the discovery-client service: systemctl start discovery-client
  2. Once the service is up, you will be able to see the Lightbits nodes connected by running the command: discovery-client list ctrl.
  3. In order to see the volumes attached to the client, you should run the command: nvme list.

Updating the discovery-client Package

To update the discovery-client package on the clients, perform the following steps.

Using yum (RedHat):

  1. Update the lightbits.repo file under /etc/yum.repos.d/ to the updated repository, to point to the right version.
  2. Execute the Linux command: yum update -y discovery-client.x86_64.

Using RPM:

To set up the client repository, refer to the Client Software Installation section of the Lightbits Installation Guide.

Type to search, ESC to discard
Type to search, ESC to discard
Type to search, ESC to discard