Configuring storage options in Kadalu
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.
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