cancel
Showing results for 
Search instead for 
Did you mean: 
vsolodkyi
Sisense Team Member
Sisense Team Member

Introduction

Multi-node(cluster) implementation of Sisense requires shared storage to be supplied externally for the solution to work. One of the options for the shared storage is NFS.
This guide provides step-by-step instructions on how to configure a basic NFS storage as a single NFS server on an Ubuntu Server instance. This information, also, can serve as a solid foundation, primed for further expansion of your NFS utilization with Sisense. 

Prerequisites

  • Ubuntu Server 20.04 (or higher)
  • Server located within the same network as the clients to ensure best performance and network connectivity.
  • A secondary partition with a minimum of 400GB available or free space on the primary partition. (Note: This requirement can be disregarded if you are configuring the NFS server for testing purposes.)

Steps

1. On the prepared instance update repositories and  install nfs-kernel-server package which allows configure an NFS share: 

 

sudo apt update
sudo apt install nfs-kernel-server

 

2. Prepare a directory for NFS sharing. In our example, we are going to configure a shared storage at /opt/storage/. Use the following commands to set the appropriate permissions:

 

sudo chown nobody:nogroup /opt/storage/
sudo chmod 775 /opt/storage/​

 

3. Edit the /etc/exports file to define a shared directory and specify the allowed clients. Use the following command to open the file in a text editor:

 

sudo vi /etc/exports

 

 

An example configuration in the file as shown below:

# /etc/exports: the access control list for filesystems which may be exported

# to NFS clients.  See exports(5).

#

# Example for NFSv2 and NFSv3:

# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)

#

# Example for NFSv4:

# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)

# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)

/opt/storage 10.50.0.0/16(rw,sync,no_root_squash,no_all_squash)

  • In this configuration:
    • - `/opt/storage` is the directory to be shared.
    • - `10.50.0.0/16` is the subnet where the client is hosted. You can also define specific IP addresses. 
  • Parameters in brackets:
    • - `rw`: Allows read and write access.
    • - `sync`: Writes are carried out synchronously on the server.
    • - `no_root_squash`: Allows the root user on the client to have root access on the server.
    • - `no_all_squash`: Prevents squashing all UIDs and GIDs to the anonymous user.

To apply the changes, restart the NFS server using the following command:

 

 

systemctl restart nfs-kernel-server.service

 

 

4. To verify the NFS server's status and see detailed information, use the following command:

 

systemctl status nfs-kernel-server.service && nfsstat -o all

 

 

5. Sisense is recommended to be used with NFSv4, however, base installation of NFS-server is configured to use both NFSv3 and NFSv4 which may cause issues in future. To determine which NFS versions are currently enabled, execute the following command:

 

 

rpcinfo -p localhost

 

 

Example output:

  program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100005    1   udp  40086  mountd

    100005    1   tcp  37397  mountd

    100005    2   udp  49598  mountd

    100005    2   tcp  36581  mountd

    100005    3   udp  43194  mountd

    100005    3   tcp  52629  mountd

    100003    3   tcp   2049  nfs

    100003    4   tcp   2049  nfs

    100227    3   tcp   2049

    100003    3   udp   2049  nfs

    100227    3   udp   2049

    100021    1   udp  49651  nlockmgr

    100021    3   udp  49651  nlockmgr

    100021    4   udp  49651  nlockmgr

    100021    1   tcp  46377  nlockmgr

    100021    3   tcp  46377  nlockmgr

    100021    4   tcp  46377  nlockmgr

In this output, if you see lines like 100003 3 tcp 2049 nfs or 100003 4 tcp 2049 nfs, it means both NFSv3 and NFSv4 are enabled.

6. To disable NFSv3, you need to update the configuration file. Open the /etc/default/nfs-kernel-server file and add the following line at the end:

 

RPCNFSDOPTS="--no-nfs-version 2 --no-nfs-version 3"

 

7. To verify that only NFSv4 is now enabled, re-run the command:

 

rpcinfo -p localhost

 

 

Example output:

  program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100005    1   udp  43740  mountd

    100005    1   tcp  59499  mountd

    100005    2   udp  52291  mountd

    100005    2   tcp  51011  mountd

    100005    3   udp  58003  mountd

    100005    3   tcp  44191  mountd

    100003    4   tcp   2049  nfs

Now, you should only see NFSv4 enabled in the output.

Conclusion 

In summary, by following the step-by-step instructions outlined in this article, you will establish a basic NFS server. Additionally, there are ways to achieve high availability within production storage, it's worth noting that there are methods for configuring NFS server redundancy with disk replicas. However, these advanced configurations are beyond the scope of this article, as they warrant separate research and individual consideration, tailored to the specific infrastructure requirements.

Version history
Last update:
‎09-14-2023 09:26 AM
Updated by:
Contributors
Community Toolbox

Recommended quick links to assist you in optimizing your community experience:

Developers Group:

Product Feedback Forum:

Need additional support?:

Submit a Support Request

The Legal Stuff

Have a question about the Sisense Community?

Email community@sisense.com