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:
- 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.
- 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.
- Create a directory for dedicated NFS-Ganesha export files.
$ sudo mkdir -p /etc/ganesha/exports
- Open a new export file for the volume.
$ sudo vi /etc/ganesha/exports/volume1.conf
- 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.
- Open the main NFS-Ganesha configuration file.
$ sudo vi /etc/ganesha/ganesha.conf
- Include the volume export file near the end of /etc/ganesha/ganesha.conf.
%include "/etc/ganesha/exports/volume1.conf"
- 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.
- 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.
- 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.
- 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.
- Reload firewalld to apply the rule.
$ sudo firewall-cmd --reload success
- Create a mount point on an NFS client.
$ sudo mkdir -p /mnt/volume1
- 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.
- 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
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.