Configuring storage options in Kadalu

Shree Vatsa NShree Vatsa N
3 min read

In Kadalu, the term "storage pool options" refers to the configuration parameters that are set for a Kadalu Storage Pool. A pool in Kadalu represents a collection of directories or partitions from one or more nodes.

Storage Pool options allow you to customize the behavior and characteristics of a Kadalu Storage Pool according to your specific requirements by altering the volfiles used by mount process (or client), storage units and self heal daemon processes.. These options can be set during the creation of a pool or modified later to alter the pool's behavior.

How storage options are configured by Kadalu

When user configures a option to a Storage Pool, the server regenerates the volfiles of storage-unit, SHD and clients according to type of option passed. Then it notifies the participating nodes of that pool to use newly generated volfiles by sending SIGHUP on running brick/storage-unit & SHD processes.

The applications using the mounted pool will not have any downtime during this process, since the client processes need not be restarted for configured options changes to be applied. The mounted client process will pick up this new behaviour of the pool on the fly.

Few advantages/optimizations storage-options configurations in Kadalu v/s GlusterFS:

  • Kadalu's volgen is granular, uses template-based generation instead of code in GlusterFS. Enabling higher degree of customization, i.e can configure using xlator name, name from volfile etc.
    Example: If in a 3 x replica3 setup, in order to check for logs in higher detail by setting LOG_LEVEL=DEBUG without flooding the logging space in all nodes,
    can set LOG_LEVEL to DEBUG in a particular node which is not possible in GlusterFS.

  • GlusterFS uses mesh networking. So in order for GlusterD to set new volfile options, it has to conduct handshakes with all nodes in connected network even though it is not part of the volume, get the list of participating nodes, sync and notifies through RPC that volfile has changed. This is a network & computitive overhead when nodes are high in number say 100. Also if few nodes are slower when compared to rest, the entire process becomes slower.

    But Kadalu maintains the config file of all participating nodes and other details in a single place, so it only notifies the Storage Unit processes in those participating nodes which becomes faster.
    There are also multiple ways to enusre high availablity of Kadalu Manager Server node. One of them is by using periodic Config Snapshots.

Configuring Pool Options in Kadalu for K8's

Through Kubectl Kadalu CLI:

To add/set Storage Pool Options, 'option-set' subcommand can be used. It expects name of Storage Pool to be configured and Option key(s) and value(s).

$ kubectl kadalu option-set storage-pool1 \
    performance.quick-read off performance.write-behind on

To remove/reset Storage Pool Options, 'option-reset' subcommand can be used. It expects name of Storage Pool to be configured and Option key(s) to be removed.

$ kubectl kadalu option-reset storage-pool1 \
    performance.quick-read performance.write-behind

Additionally all of configured options for a Storage Pool can be removed with '--all' flag.

Through YAML:

apiVersion: kadalu-operator.storage/v1alpha1
kind: KadaluStorage
metadata:
# This will be used as name of PV Hosting Volume
  name: storage1
spec:
  type: Replica1
  options:
    - key: "performance.quick-read"
      value: "off"
    - key: "performance.write-behind"
      value: "on"
  storage:
    - node: kube1
      device: /dev/vdc

Configuring Pool Options in Kadalu Storage:

Set pool options:

kadalu pool set pool1 performance.write-behind on performance.quick-read off

Kadalu also supports granular level of setting options:
Example: To set LOG-LEVEL to DEBUG for a particular storage unit,

kadalu pool set pool1 /exports/vol1/s1.log-level DEBUG

Reset pool options:

kadalu pool reset pool1 performance.write-behind performance.quick-read

For more documentation please refer Kadalu Documentation.

For any queries please feel free to contact:
Mail: hello@kadalu.tech
Or raise any issues at Kadalu Storage Manager Upstream & Kadalu Storage K8's Upstream.

11
Subscribe to my newsletter

Read articles from Shree Vatsa N directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Shree Vatsa N
Shree Vatsa N

Hi! I'm Shree Vatsa, Sofware Engineer @kadalu-tech with a passion for creating highly available, scalable and reliable storage systems. My experience lies in developing & contributing widely used software defined distributed storage systems, orchestration of storage within the Kubernetes ecosystem and developing user-friendly storage system monitoring dashboards. Those are Kadalu, GlusterFS, Moana, NFS Ganesha, Kadalu Storage Console & many more. You can find more about them in the projects section. I also do have experience in developing full-stack end-to-end encrypted real time applications, debian/RPM/fedora/python-pypi packaging etc. As a passionate software engineer, I am dedicated to learning more technologies and contributing to open source projects. My love for technology and problem solving drives me to continuously evolve and grow in my career. I am excited to be a part of the open source community and make meaningful contributions to different projects. Feel free to reach out to me on LinkedIn to discuss anything. Work : vatsa@kadalu.tech Personal : i.mnshreevatsa@gmail.com