IBM Cloud Docs
Mounting File Storage for Classic on Red Hat Linux

Mounting File Storage for Classic on Red Hat Linux

Use these instructions to connect a Red Hat Enterprise Linux®-based IBM Cloud® Compute instance to a Network File System (NFS) share. For more information about how to order IBM Cloud® File Storage for Classic, see the Getting started tutorial.

Before you begin, make sure that the host that is to access the File Storage for Classic volume is authorized. For more information, see Authorizing the host in the console Authorizing the host from the CLIAuthorizing the host with Terraform.

Mounting the File Storage for Classic share

  1. Install the required tools.

    # yum install nfs-utils
    
  2. Create a directory in your instance.

    mkdir /mnt/test
    
  3. Mount the remote share.

    # mount -t nfs -o <options> <host:mount_point> /mnt
    

    Example for storage_as_a_service volumes.

    #mount -t nfs -o nfsvers=3 fsf-wdc0403a-fz.service.softlayer.com:/IBM02SEV1414935_66/data01 /mnt
    

    Example for enterprise volumes.

    # mount -t nfs -o nfsvers=3 nfshou0201d-fz.service.softlayer.com:/IBM01SEV1414935_2 /mnt
    

    The mount point information can be obtained from the File Storage for Classic Details page in the console, with an API call - SoftLayer_Network_Storage::getNetworkMountAddress(), or by looking at the ibm_storage_file resource in Terraform.

  4. Verify that the mount was successful by using the disk file system command.

    # df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/xvda2  25G  1.4G  22G    6%   /
    /tmpfs     1.9G     0 1.9G    0%   /dev/shm
    /dev/xvda1 97M    51M  42M   55%
    
  5. Go to the mount point, and read/write files.

    # touch /mnt/test
    # ls -la /mnt
    total 12
    drwxr-xr-x   2 nobody nobody 4096 Sep 8 15:52 .
    dr-xr-xr-x. 22 root   root   4096 Sep 8 14:30 ..
    -rw-r--r--   1 nobody nobody    0 Sep 8 15:52 test
    

    The files that are created by root have ownership of nobody:nobody. To display ownership correctly, the idmapd.conf needs to be updated with the correct domain settings. For more information, see the Implementing no_root_squash for NFS (optional) section.

  6. Mount the remote share on start. To complete the setup, edit the file systems table (/etc/fstab) to add the remote share to the list of entries that are automatically mounted on startup:

    (hostname):/(username) /mnt nfs_version options 0 0
    

    See the following examples.

    fsf-wdc0403a-fz.service.softlayer.com:/IBM02SEV1414935_66/data01 /mnt nfs nfsvers=3 0 0
    fsf-wdc0403a-fz.service.softlayer.com:/IBM02SEV1414935_66/data01 /mnt nfs options 0 0
    fsf-wdc0403a-fz.service.softlayer.com:/IBM02SEV1414935_66/data01 /mnt nfs4 options 0 0
    
  7. Verify that the configuration file has no errors.

    # mount -fav
    

    If the command completes with no errors, your setup is complete.

    If you're using NFS 4.1, add sec=sys to the mount command to prevent file ownership issues.

    If your host OS is CentOS, you can configure more options. For more information, see Mounting File Storage for Classic in CentOS.

Implementing no_root_squash for NFS (optional)

By default, NFS downgrades any files that were created with the root permissions to the nobody user. This security feature prevents privileges from being shared unless they are requested.

Configuring no_root_squash allows root clients to retain root permissions on the remote NFS share.

  • For NFSv3, clients don't need to do anything; the no_root_squash simply works.
  • For NFSv4.1, you need to set the nfsv4 domain to: slnfsv4.com and start rpcidmapd, or a similar service that is used by your OS.

Example

  1. From the host, set the domain setting in /etc/idmapd.conf.

    #vi /etc/idmapd.conf
    [General]
    #Verbosity = 0
    #The following should be set to the local NFSv4 domain name
    #The default is the host's DNS domain name.
    Domain = slnfsv4.com
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nobody
    
  2. Run nfsidmap -c.

  3. Start rpcidmapd.

    systemctl start rpcidmapd
    systemctl enable rpcidmapd
    

Unmounting the file system

To unmount any currently mounted file system on your host, run the umount command with disk name or mount point name.

umount /dev/sdb
umount /mnt