Discovery-client Deployment

AI Tools

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.

VariableType to search · ESC to discard
GlossaryType to search · ESC to discard
InsertType to search · ESC to discard
No matches