NFS clients often need one server endpoint even when the files behind that endpoint live on a distributed GlusterFS volume. NFS-Ganesha can serve the volume through the GLUSTER FSAL, so Linux, Unix, and appliance clients mount a normal NFSv4 path without installing the GlusterFS FUSE client.

NFS-Ganesha reads export definitions from /etc/ganesha/ganesha.conf and any included export files. The GLUSTER FSAL uses libgfapi to reach a trusted-pool node and named volume, while the Pseudo path defines the NFSv4 location mounted by clients.

A production export needs a stable gateway address or a separately managed high-availability design, restricted client networks, and root squashing unless a documented workload requires root ownership writes. Examples use Fedora or RHEL-family dnf package names when a repository provides nfs-ganesha-gluster; RHEL-compatible hosts may need an additional storage repository before that package appears.

Steps to export GlusterFS volume as NFS share:

  1. Confirm that the GlusterFS volume exists and is started.
    $ sudo gluster volume info volume1
    
    Volume Name: volume1
    Type: Replicate
    Status: Started
    Number of Bricks: 1 x 2 = 2
    Transport-type: tcp
    Bricks:
    Brick1: node1:/srv/gluster/brick1/volume1
    Brick2: node2:/srv/gluster/brick1/volume1

    Run this from a trusted-pool node before configuring the NFS-Ganesha gateway.

  2. Install NFS-Ganesha with the GLUSTER FSAL package on the gateway host.
    $ sudo dnf install --assumeyes nfs-ganesha nfs-ganesha-gluster
    ##### snipped #####
    Installing:
     nfs-ganesha
     nfs-ganesha-gluster
    ##### snipped #####
    Complete!

    If dnf reports no match for nfs-ganesha-gluster, enable the GlusterFS or NFS-Ganesha repository supported by that distribution before continuing.

  3. Create a directory for dedicated NFS-Ganesha export files.
    $ sudo mkdir -p /etc/ganesha/exports
  4. Open a new export file for the volume.
    $ sudo vi /etc/ganesha/exports/volume1.conf
  5. Add an EXPORT block for the GlusterFS volume.
    EXPORT {
        Export_Id = 101;
        Path = "/";
        Pseudo = "/volume1";
        Protocols = 4;
        Transports = TCP;
        Access_Type = RW;
        Squash = Root_Squash;
        SecType = sys;
    
        FSAL {
            Name = GLUSTER;
            hostname = "node1";
            volume = "volume1";
        }
    
        CLIENT {
            Clients = 192.0.2.0/24;
            Access_Type = RW;
            Protocols = 4;
            Transports = TCP;
            Squash = Root_Squash;
        }
    }

    Keep Export_Id unique on this NFS-Ganesha instance. Pseudo is the path clients mount over NFSv4, and Squash = Root_Squash prevents client root from creating server-side root-owned files.

  6. Open the main NFS-Ganesha configuration file.
    $ sudo vi /etc/ganesha/ganesha.conf
  7. Include the volume export file near the end of /etc/ganesha/ganesha.conf.
    %include "/etc/ganesha/exports/volume1.conf"
  8. Enable the nfs-ganesha service for future boots.
    $ sudo systemctl enable nfs-ganesha
    Created symlink /etc/systemd/system/multi-user.target.wants/nfs-ganesha.service -> /usr/lib/systemd/system/nfs-ganesha.service.
  9. Restart NFS-Ganesha to load the export.
    $ sudo systemctl restart nfs-ganesha

    A restart interrupts clients already mounted through this gateway. Schedule the change or move clients before restarting a production export.

  10. Confirm the nfs-ganesha service is active.
    $ sudo systemctl status nfs-ganesha --no-pager
    * nfs-ganesha.service - NFS-Ganesha file server
         Loaded: loaded (/usr/lib/systemd/system/nfs-ganesha.service; enabled; preset: disabled)
         Active: active (running) since Tue 2026-06-16 10:08:21 UTC; 8s ago
    ##### snipped #####

    If the service fails to start, inspect the NFS-Ganesha log and check the export file for an invalid Export_Id, unreachable hostname, or wrong volume name.

  11. Allow the NFS service through firewalld on the gateway host.
    $ sudo firewall-cmd --zone=public --permanent --add-service=nfs
    success

    For an NFSv4-only export, client traffic uses TCP port 2049. NFSv3 exports require additional RPC services and firewall planning.

  12. Reload firewalld to apply the rule.
    $ sudo firewall-cmd --reload
    success
  13. Create a mount point on an NFS client.
    $ sudo mkdir -p /mnt/volume1
  14. Mount the NFSv4 pseudo path from the gateway host.
    $ sudo mount -t nfs4 files1:/volume1 /mnt/volume1

    Install the client-side NFS utilities package first if the host does not have the mount.nfs4 helper.

  15. Verify that the client mounted the export over NFSv4.
    $ findmnt -T /mnt/volume1
    TARGET       SOURCE         FSTYPE OPTIONS
    /mnt/volume1 files1:/volume1 nfs4   rw,relatime,vers=4.2,proto=tcp,sec=sys