Nfs-ganesha is a user-mode file server for NFS (v3, 4.0,4.1 pNFS) and for 9P from the Plan9 operating system. It can support all these protocols concurrently.

This is an Open Source project with an active community of both company sponsored and independent developers.

In the current scenario NFS-GANESHA server is a single point of failure with no scope of  recovery . This can prove to a problem in a scenario where a lot of important data is being accessed and transferred to and from the server by the clients . If the server breaksdown due to some reason a lot of important data can be lost . The entire network will be halted and no fruitful work can be done until the server is up again . Currently there is an FSAL layer which sits on top of the shared file system to process the requets of the clients . We propose a design to impart clustering support to the existing NFS – GANESHA servers .

NFS-GANESHA is a NFS version 2-4 server that runs in the user address space instead of as part of the operating system kernel. Filesystem in Userspace (FUSE) lets you run a filesystem in the user address space instead of as part of the Linux kernel, but the FUSE support in the Linu kernel from many Linux distributions does not allow you to export FUSE through NFS. NFS GANESHA lets you expose FUSE through NFS without patching your kernel. NFS-GANESHA accesses the underlying data through a File System Abstraction Layer (FSAL), allowing you to plug in your own storage mechanism and access it from any NFS client. NFS-GANESHA provides a FUSE-compatible FSAL to allow you to quickly access a FUSE filesystem over NFS while avoiding the need for data to bounce through the kernel FUSE mechanism on the NFS server.

NFS-Ganesha Architecture





Cloning NFS-Ganesha From Source source

mkdir /root/
cd /root/
git clone --recursive git://
mkdir /home/gan1/build_dir 
cd /home/gan1/build_dir
cmake -DUSE_FSAL_GLUSTER=ON /root/nfs-ganesha/src 
make install

Configuration File source


   # Export Id (mandatory, each EXPORT must have a unique Export_Id)
   Export_Id = 77;

   # Exported path (mandatory)
   Path = "/home/gan1/gluster/nas"; # assuming 'testvol' is the Gluster volume name

   # Pseudo Path (required for NFS v4)
   Pseudo = "/home/gan1/gluster/nas";

   # Required for access (default is None)
   # Could use CLIENT blocks instead
   Access_Type = RW;

   # Allow root access
   Squash = No_Root_Squash;

   # Security flavor supported
   SecType = "sys";

   # Exporting FSAL
   FSAL {
     Name = "GLUSTER";
     Hostname = localhost;  # IP of one of the nodes in the trusted pool
     Volume = "nas";