Configuring NFS Ganesha

New in gdeploy 2.0.1

gdeploy supports the deployment and configuration of NFS Ganesha from version 2.0.1

NFS Ganesha module in gdeploy allows user to perform the following actions:

1. create-cluster
2. destroy-cluster
3. add-node
4. delete-node
5. export-volume
6. unexport-volume
7. refresh-config

This document explains all the above actions with example configuration files.

create-cluster

This action will create a fresh NFS-Ganesha setup on a given volume. For this action nfs-ganesha section support the following variables:

1. ha-name
2. cluster-nodes
3. vip
4. volname
  • ha-name: This is optional variable. By default ganesha-ha-360 will be used.
  • cluster-nodes: This is a required argument, this variable expects comma
    separated values of cluster node names, which should be used to form the cluster.
  • vip: This is a required argument, this variable expects comma separated list
    of ip addresses. These will be the virtual ip addresses.
  • volname: This is a optional variable if the configuration contains [volume]
    section, else volname has to be mentioned and that volume should be present.

Example: Create a NFS-Ganesha cluster:

[hosts]
host-1.example.com
host-2.example.com

[backend-setup]
devices=/dev/vdb
vgs=vg1
pools=pool1
lvs=lv1
mountpoints=/mnt/brick

[firewalld]
action=add
ports=111/tcp,2049/tcp,54321/tcp,5900/tcp,5900-6923/tcp,5666/tcp,16514/tcp,662/tcp,662/udp
services=glusterfs,nlm,nfs,rpc-bind,high-availability,mountd,rquota

[volume]
action=create
volname=ganesha
transport=tcp
replica_count=2
force=yes

#Creating a high availability cluster and exporting the volume
[nfs-ganesha]
action=create-cluster
ha-name=ganesha-ha-360
cluster-nodes=host-1.example.com,host-2.example.com
vip=10.70.44.121,10.70.44.122
volname=ganesha

The above configuration file assumes, necessary packages are installed. Creates a volume and enables NFS-Ganesha on it. If the configuration file is saved in ganesha.conf, execute the configuration using the command:

  • gdeploy -c ganesha.conf

Example on how to subscribe and install necessary Ganesha packages can be found here.

destroy-cluster

Action destroy-cluster cluster will disable NFS Ganesha. It allows one variable ‘cluster-nodes’.

Example: Destroy NFS-Ganesha Cluster:

[hosts]
host-1.example.com
host-2.example.com

# To destroy the high availability cluster

[nfs-ganesha]
action=destroy-cluster
cluster-nodes=host-1.example.com,host-2.example.com

add-node

Action add-node allows two variables:

1. nodes
2. vip

Both the variables are mandatory. ‘nodes’ takes a list of comma separated hostnames that have to be added to the cluster and ‘vip’ takes a list of comma separated ip addresses.

Example:

[hosts]
host-1.example.com
host-2.example.com

[nfs-ganesha]
action=add-node
nodes=host-3.example.com
vip=10.0.0.33

delete-node

Action delete-node deletes a node from NFS Ganesha cluster. delete-node takes one variable ‘nodes’.

Example:

[hosts]
host-1.example.com
host-2.example.com

[nfs-ganesha]
action=delete-node
nodes=host-3.example.com

export-volume

Action export-volume exports a volume. export-volume action supports one variable ‘volname’.

Example:

[hosts]
host-1.example.com
host-2.example.com

[nfs-ganesha]
action=export-volume
volname=ganesha

unexport-volume

Action unexport-volume unexports a volume. unexport-volume action supports one variable ‘volname’.

Example:

[hosts]
host-1.example.com
host-2.example.com

[nfs-ganesha]
action=unexport-volume
volname=ganesha

refresh-config

Action refresh-config will add/delete or add a config block to the configuration file and runs –refresh-config on the cluster.

Action refresh-config supports the following variables:

1. add-config-lines
2. del-config-lines
3. update-config-lines
4. block-name
5. volname
6. ha-conf-dir

Example 1 - Add a client block and run-refresh config:

# config-block: is the variable containing lines (| separated) which will be
# added to the client block.
#
# The client block will look something like:
#   client {
# clients = 10.0.0.1;
# allow_root_access = true;
# access_type = "RO";
# Protocols = "3";
# anonymous_uid = 1440;
# anonymous_gid = 72;
# }
#

[hosts]
dhcp37-102.lab.eng.blr.redhat.com
dhcp37-103.lab.eng.blr.redhat.com

[nfs-ganesha]
action=refresh-config
# Default block name is `client'
block-name=client
config-block=clients = 10.0.0.1;|allow_root_access = true;|access_type = "RO";|Protocols = "2", "3";|anonymous_uid = 1440;|anonymous_gid = 72;
volname=ganesha

Example 2 - Add a line and run refresh-config:

[hosts]
dhcp37-102.lab.eng.blr.redhat.com
dhcp37-103.lab.eng.blr.redhat.com

[nfs-ganesha]
action=refresh-config
add-config-lines=clients = 10.0.0.1;|anonymous_gid = 72;
volname=ganesha

Example 3 - Delete a line and run refresh-config:

[hosts]
dhcp37-102.lab.eng.blr.redhat.com
dhcp37-103.lab.eng.blr.redhat.com

[nfs-ganesha]
action=refresh-config
del-config-lines=client
volname=ganesha

Example 4 - Update a line and run refresh-config:

[hosts]
dhcp37-102.lab.eng.blr.redhat.com
dhcp37-103.lab.eng.blr.redhat.com

[nfs-ganesha]
action=refresh-config
update-config-lines=access_type = "RW";|anonymous_gid = 72;
volname=ganesha

Example 5 - Run refresh-config on a volume:

[hosts]
dhcp37-102.lab.eng.blr.redhat.com
dhcp37-103.lab.eng.blr.redhat.com

[nfs-ganesha]
action=refresh-config
volname=ganesha