GANESHA-CONFIG(8)

✨ NAME ✨

ganesha-config β€” the NFS Ganesha Configuration File, aka the sacred text, aka where all the vibes live πŸ’–

(and yes bestie, this is a section of the NFS-Ganesha manual, section 8, we're doing sysadmin things today and we're slaying it)


πŸŽ€ SYNOPSIS πŸŽ€

/etc/ganesha/ganesha.conf

πŸ¦‹ DESCRIPTION πŸ¦‹

So here's the tea: NFS-Ganesha gets all of its configuration data from one (1) file, and that file is:

/etc/ganesha/ganesha.conf

That's the whole source of truth. And this file is made up of the following parts πŸ‘‡

πŸ’¬ Comments πŸ’¬

Empty lines? Comments. Lines that start with #? Also comments. Not me writing comments in my config like it's a diary:

# This whole line is a comment
Protocol = TCP; # The rest of this line is a comment

See how the # eats the rest of that second line? Yeah. Everything after it is gone. Poof. πŸ’€

🧱 Blocks 🧱

Options that are besties get grouped together into what we call a block. A block is a name, and then parameters wrapped up all cozy between { and }. And plot twist β€” a block can hold other sub blocks inside it too. Nested. Iconic.

EXPORT
{
    Export_ID = 1;
    FSAL {
        Name = VFS:
    }
}
NOTE: FSAL up there is a sub block, not a main character. For the full list of blocks and options, go check the BLOCKS section. ✨

πŸ“ Options πŸ“

Configuration options come in the following types, and yes there is a whole little taxonomy going on:

  1. Numeric. Numeric options can be defined in octal, decimal, or hexadecimal, and the format follows ANSI C syntax. Like, for example:
mode = 0755;  # This is octal 0755, 493 (decimal)

Numeric values can also be negated or logical NOT'd. For example:

anonymousuid = -2; # this is a negative
mask = ~0xff; # Equivalent to 0xffffff00 (for 32 bit integers)
  1. Boolean. The possible values are true, false, yes and no. And listen β€” 1 and 0 are not acceptable. Do not try it. Not today. πŸ™ˆ
  2. List. The option can contain a list of possible applicable values. Protocols = 3, 4, 9p;
  3. String. String options such as export Path need not be enclosed in quotes, but it's recommended. If special characters are included, particularly non-ASCII characters, using either single or double quotes may be required. Another set of strings that should be quoted are any strings that are a keyword, or if spaces are part of the string. Basically: when in doubt, quote it, bestie 🫢

πŸ“‚ Including other config files πŸ“‚

You can pull in additional files inside a configuration using the %include or %dir or %url directives:

%include <filename>
%dir <directory_name>
%url <url, e.g., rados://mypool/mynamespace/myobject>

The included file gets inserted into the configuration text in place of the %include or %dir or %url line. Sub-inclusions may be to any depth β€” yes, it can go as deep as it wants, main character energy fr fr.

Filenames or directory or URLs may optionally use ":

%include base.conf
%include "base.conf"
%dir /etc/ganesha/ganesha_config/
%dir "/etc/ganesha/ganesha_config/"
%url rados://mypool/mynamespace/myobject
%url "rados://mypool/mynamespace/myobject"
%url rados://mypool/myobject
%url "rados://mypool/myobject"

In the case of rados:// URLs, providing a two-component URL indicates that the default namespace should be used. πŸ‘‘

πŸ”„ Reloading Config πŸ”„

A config reload can be triggered by sending the ganesha.nfsd process a SIGHUP. That's it, that's the whole move.

Careful though β€” not all config options may be changed with reload. The ones that can will be documented in the individual sections. Read the fine print, bestie 😭

In general, currently dynamic config is supported for EXPORT and LOG options. Those two ate and left no crumbs. πŸ’…


πŸ‘‘ BLOCKS πŸ‘‘

NFS-Ganesha supports the following blocks:

🌸 EXPORT {} 🌸

Along with its configuration options, the EXPORT block supports FSAL and CLIENT sub-blocks. See ganesha-export-config(8) for usage of this block and its sub-blocks.

🌸 EXPORT_DEFAULTS {} 🌸

Refer to ganesha-export-config(8) for usage

🌸 MDCACHE {} 🌸

Refer to ganesha-cache-config(8) for usage

🌸 NFS_CORE_PARAM {} 🌸

Refer to ganesha-core-config(8) for usage

🌸 NFS_IP_NAME {} 🌸

Refer to ganesha-core-config(8) for usage

🌸 NFS_KRB5 {} 🌸

Refer to ganesha-core-config(8) for usage

🌸 NFSv4 {} 🌸

Refer to ganesha-core-config(8) for usage

🌸 _9P {} 🌸

Refer to ganesha-9p-config(8) for usage

🌸 LOG {} 🌸

Refer to ganesha-log-config(8) for usage

  1. LOG { FACILITY {} }
  2. LOG { FORMAT {} }

🌸 RADOS_KV {} 🌸

Refer to ganesha-core-config(8) for usage

🌸 RADOS_URLS {} 🌸

Refer to ganesha-core-config(8) for usage

🌸 FSAL_LIST {} 🌸

Refer to ganesha-core-config(8) for usage

🌸 CEPH {} 🌸

Refer to ganesha-ceph-config(8) for usage

🌸 GLUSTER {} 🌸

Refer to ganesha-gluster-config(8) for usage

🌸 GPFS {} 🌸

Refer to ganesha-gpfs-config(8) for usage

🌸 PROXY_V4 {} 🌸

Refer to ganesha-proxy-config(8) for usage

🌸 PROXY_V3 {} 🌸

Refer to ganesha-proxy-v3-config(8) for usage

🌸 RGW {} 🌸

Refer to ganesha-rgw-config(8) for usage

🌸 VFS {} 🌸

Refer to ganesha-vfs-config(8) for usage

🌸 XFS {} 🌸

Refer to ganesha-xfs-config(8) for usage

🌸 QOS_DEFAULT_CONFIG {} 🌸

Refer to ganesha-qos-config(8) for usage


🌈 EXAMPLE 🌈

Along with "ganesha.conf", for each installed FSAL, a sample config file is added at:

/etc/ganesha

Go look at them. They're free. They're right there. πŸŽ€


πŸ’œ SEE ALSO πŸ’œ

ganesha-log-config(8) ganesha-rgw-config(8) ganesha-vfs-config(8) ganesha-lustre-config(8) ganesha-xfs-config(8) ganesha-gpfs-config(8) ganesha-gluster-config(8) ganesha-9p-config(8) ganesha-proxy-config(8) ganesha-proxy-v3-config(8) ganesha-ceph-config(8) ganesha-core-config(8) ganesha-export-config(8) ganesha-qos-config(8)


okay that's the whole page bestie, you understood all of it, I'm so proud of you πŸ₯ΉπŸ’–

this was brought to you by NFS-Ganesha, dated Aug 11, 2026 β€” go forth and configure, you absolute legend πŸ‘‘βœ¨

πŸ“¦ where this page comes from