---
name: "ganesha_conf"
section: "8"
platform: "linux"
package: "python3-nfs-ganesha"
version: "6.5-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ganesha_conf"
---

# ganesha\_conf(8)

Ganesha configuration editor

## NAME

ganesha\_conf - Ganesha configuration editor

## SYNOPSIS

**ganesha\_conf set** *\<block-description\>* **\[--key1 value1 \[--key2 value2\]...\]**\
 **ganesha\_conf del** *\<block-description\>* **\[--key1 \[--key2 \]...\]**

## DESCRIPTION

The **set** command adds or changes the given key value parameters in the block. It also creates the block if the block corresponding to the given *block description* (see section **BLOCK DESCRIPTION** below) is not present in the configuration.

The **del** command deletes given keys from the ganesha configuration block described by the block description. It will delete the block itself if no keys are provided.

## BLOCK DESCRIPTION:

*Block description* is a list of block names and possibly some key value parameters that uniquely identify a ganesha configuration block.

NFS Ganesha configuration file contains a list of blocks. Each block starts with a block **name** followed by a **left brace,** then a list of **key = value;** entries. The block may optionally have **sub blocks** (note the recursive definition!).  Finally, the block ends with a **right brace.** (Note that **key = value;** entries can come after a sub block as well, but we don't allow this with ganesha\_conf editor! All key value entries should come before any sub blocks.)

An example of a ganesha configuration block:

```
nfs_core_param {
    Nb_Worker = 256;
    Clustered = TRUE;
    NFS_Protocols = 3,4;
}
```

Since there should be only one **nfs\_core\_param** block, we just need the name of the block to uniquely identify it. So "nfs\_core\_param" would be its block description!

An example of a ganesha configuration block with a couple sub blocks:

```
log {
    default_log_level = EVENT;
    format {
        date_format = ISO-8601;
        time_format = ISO-8601;
        thread_name = TRUE;
    }
    components {
        all = EVENT;
    }
}
```

Ganesha configuration should have only one **log** block as well, so "log" would identify the log block. To identify **format** sub block inside the **log** block, "log format" would be the block description for the above **format** sub block. Similarly "log components" would be the block description for the above **components** sub block.

An **export** block is special in that there can be many export blocks, one for each export. A **client** block is also special. There can be many **client** blocks and they are always sub blocks inside **export** blocks. *export\_id* key value uniquely identifies an **export** block. *clients* key value uniquely identifies a **client** block inside a given **export** block.

Here are couple **export** blocks with couple **client** blocks in them:

```
export {
    export_id = 1;
    path = /fs1/export1;
    pseudo = /fs1/export1;
    manage_gids = true;
    client {
        clients = 192.168.122.31;
        access_type = RW;
    }
    client {
        clients = *;
        access_type = RO;
    }
}
export {
    export_id = 2;
    path = /fs1/export2;
    pseudo = /fs1/export2;
    manage_gids = true;
    client {
        clients = 192.168.122.31;
        access_type = RW;
    }
    client {
        clients = 192.168.122.32;
        access_type = RO;
    }
}
```

To identify the correct **export** block, we need to supply its *export\_id.* For example "export export\_id 2" identifies the second **export** block above. **export** blocks can be uniquely identified by *pseudo* or *path* keys in some environments. One could specify "export path /fs1/export2" to identify the second **export** block as well.  Similarly, a **client** block needs additional *clients* key value to identify the correct **client** block. For example, "export export\_id 2 client clients 192.168.122.31" identifies the first **client** block in the second **export** block above!

## EXAMPLES:

1\. To change number of ganesha worker threads:

ganesha\_conf set nfs\_core\_param --nb\_worker 256

2\. To change the date and time format of ganesha log messages:

ganesha\_conf set log format --date\_format ISO-8601 --time\_format ISO-8601

3\. Create an export and allow client with IP address 192.168.122.31 to be able to do read write and all other clients to do read only:

ganesha\_conf set export path /fs1/export2 --export\_id 2 --pseudo /fs1/export2 --manage\_gids true\
 ganesha\_conf set export path /fs1/export2 client clients 192.168.122.31 --access\_type RW\
 ganesha\_conf set export path /fs1/export2 client clients 192.168.122.32 --access\_type RO

## NOTES:

**ganesha\_conf** by default uses /etc/ganesha/ganesha.conf file as the configuration file. If your environment uses a different file (or set of files), you can use **CONFFILE** environment variable to override the default configuration file. For example, "CONFFILE=/etc/ganesha/ganesha.main.conf ganesha\_conf set nfs\_core\_param --nb\_worker 256" will use /etc/ganesha/ganesha.main.conf file for changing the worker threads.

**ganesha\_conf** can't handle comments within a block at this point.

Neither block descriptions nor key value parameters are verified to be valid ganesha configuration blocks or parameter values currently.
