Autofs is an automounter utility that helps you to automatically mount NFS share when a file or directory is requested on the NFS mount point. Auto-mounts are mounted only when they are accessed and are unmounted after a period of inactivity.
In the last tutorial we used /etc/fstab to mount a filesystem automatically across the system reboot, but here we will use autofs to mount the same NFS share.
AutoFS very useful in case if the client machine has to mount many mounts at one time, overall boot up time will be increased; with the autofs we can speed up the bootup time.
When the static mount (/etc/fstab) is used, regardless of how infrequently a user accesses the NFS mounted file system, the system must dedicate resources to keep the mounted file system in place. Autofs solves the problem of keeping the filesystem mounted that are not frequently accessed by the users by unmounting it after a period of inactivity. Because of this, automounting NFS/Samba shares conserves bandwidth and offers better overall performance compared to static mounts via fstab.
Autofs can also be used to mount other file systems including AFS, SMBFS, CIFS, and local file systems.
This guide helps you to install and configure Autofs on CentOS 7 / Fedora 27 / Ubuntu 16.04 / Debian 9. The same steps will apply to previous versions of CentOS, Fedora, Ubuntu, and Debian.
Environment
Here are my demo nodes detail, I have both NFS and Client server in the same distribution.
NFS Server Hostname: server.itzgeek.local (CentOS 7 / Fedora 27 / Ubuntu 16.04)
NFS Server IP Address: 192.168.12.5/24
Share Path: /nfsfileshare
NFS Client Hostname: client.itzgeek.local (CentOS 7 / Fedora 27 / Ubuntu 16.04)
NFS Client IP Address: 192.168.12.7/24
Autofs mount path: /autofs/nfsfileshare
Prerequisites
You need to have a working NFS server.
READ: How to setup NFS Server on CentOS 7 / RHEL 7 / Fedora 27
READ: How to setup NFS Server on Debian 9 / Ubuntu 16.04
Install Autofs
Let’s install autofs package available from the base repository. Install it using the following command on terminal.
### CentOS 7 / RHEL 7 & Fedora 27/26 ### # yum -y install autofs ### Debain 9 / Ubuntu 16.04 / 14.04 ### $ sudo apt-get install autofs
Configure Autofs
The main configuration file for Autofs is the /etc/auto.master file, referred as the master map. The master map file contains a list of mounts and the location of its map.
Sample output of /etc/auto.master, you can see the mount and its map shown in “Green“.
#
# Sample auto.master file
# This is a 'master' automounter map and it has the following format:
# mount-point [map-type[,format]:]map [options]
# For details of the format look at auto.master(5).
#
/misc /etc/auto.misc
#
# NOTE: mounts done from a hosts map will be mounted with the
# "nosuid" and "nodev" options unless the "suid" and "dev"
# options are explicitly given.
#
/net -hosts
#
# Include /etc/auto.master.d/*.autofs
# The included files must conform to the format of this file.
#
+dir:/etc/auto.master.d
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master
Edit /etc/auto.master
As per our scenario, we are going to mount NFS share on /autofs/nfsfileshare using Autofs. The following step creates a mount point at /autofs and configures it according to the settings specified in /etc/auto.nfs (which we will create in the next step).
### CentOS 7 / RHEL 7 & Fedora 27/26 ### # vi /etc/auto.master ### Debian 9 / Ubuntu 16.04 / 14.04 ### $ sudo nano /etc/auto.master
Add the following line at the end of /etc/auto.master file. The default timeout for autofs is 300 seconds (5 minutes). After five minutes of inactivity, a filesystem that is mounted will be automatically unmounted.
Note: It is optional to define the timeout in /etc/auto.master file.
/autofs /etc/auto.nfs --timeout=60
Create /etc/auto.nfs
Now, we will create the file which contains our automounter map.
### CentOS 7 / CentOS 7 & Fedora 27/26 ### # vi /etc/auto.nfs ### Debian 9 / Ubuntu 16.04 / 14.04 ## $ sudo nano /etc/auto.nfs
This file should contain a separate line for each NFS share. The format for a line is {mount point} [{mount options}] {location}. The mount points specified here will be relative to the mount point given in /etc/auto.master.
nfsfileshare -fstype=nfs4,rw,soft,intr 192.168.12.5:/nfsfileshare
Where,
nfsfileshare : Mount Point
-fstype=nfs4,rw,soft,intr : Mount options
192.168.12.5:/nfsfileshare : Share location
This creates a new mount point at /autofs/nfsfileshare/ and mounts the NFS “/nfsfileshare” directory exported by “192.168.12.5”
Restart the autofs service and enable it to start at system startup.
### CentOS 7 / RHEL 7 & Fedora 27/26 ### # systemctl restart autofs # systemctl enable autofs ### Debian 9 / Ubuntu 16.04 / 14.04 ## $ sudo service autofs restart $ sudo update-rc.d autofs defaults
Test AutoFS
Now, try accessing “/autofs/nfsfileshare” directory.
Note: Make sure you unmount the static mounts and remove the entry from /etc/fstab file.
$ ll /autofs/nfsfileshare total 0 drwxrwxrwx 4 root root 33 Sep 17 17:47 ./ drwxr-xr-x 3 root root 0 Sep 19 01:23 ../ drwxr-xr-x 2 root root 6 Sep 17 17:39 1/ drwxrwxr-x 2 raj raj 6 Sep 17 17:45 2/ -rw-rw-r-- 1 raj raj 0 Sep 17 17:47 test
You would see the content of NFS shared directory. Also, use “df” command to see the mounted file systems, you could see the NFS share that is mounted automatically.
Note: Below is the sample out of “df” command (Ubuntu 16.04).
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 98G 3.7G 89G 4% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
udev devtmpfs 478M 4.0K 478M 1% /dev
tmpfs tmpfs 98M 1.5M 97M 2% /run
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 489M 144K 489M 1% /run/shm
none tmpfs 100M 32K 100M 1% /run/user
192.168.12.5:/nfsfileshare nfs4 50G 858M 50G 2% /autofs/nfsfileshare
To test the unmount, do not perform any action on the mounted file system for 5 minutes (In my case 1 minute as I set –timeout=60). The autofs will automatically unmount the filesystem once the inactivity time has passed.
Note: Please do not even try to use “df” command to check the mounted filesystems as “df” command may access the mounted filesystems which will cause a delay in unmount.
Debugging and Troubleshooting AutoFS
CentOS 7 / Fedora 27
Note: Make sure you have LOGGING=”debug” in “/etc/sysconfig/autofs”
# cat /var/log/messages
Sep 19 13:14:20 client automount[1891]: expire_proc_indirect: expire /autofs/nfsfileshare
Sep 19 13:14:20 client automount[1891]: handle_packet: type = 4
Sep 19 13:14:20 client automount[1891]: handle_packet_expire_indirect: token 4, name nfsfileshare
Sep 19 13:14:20 client automount[1891]: expiring path /autofs/nfsfileshare
Sep 19 13:14:20 client automount[1891]: umount_multi: path /autofs/nfsfileshare incl 1
Sep 19 13:14:20 client automount[1891]: umount_subtree_mounts: unmounting dir = /autofs/nfsfileshare
If you see the output marked in “Green“, autofs unmounted the NFS share after the timeout.
Ubuntu 16.04 / 14.04 / Debian
$ sudo service autofs stop $ sudo automount -f -v
Try to access the share in another terminal, and go through the output of the above command on the first terminal.
Starting automounter version 5.0.7, master map /etc/auto.master using kernel protocol version 5.02 lookup(dir): dir map /etc/auto.master.d missing or not readable lookup(file): failed to read included master map dir:/etc/auto.master.d lookup(file): failed to read included master map auto.master mounted indirect on /autofs with timeout 60, freq 15 seconds attempting to mount entry /autofs/nfsfileshare mounted /autofs/nfsfileshare 1 remaining in /autofs 1 remaining in /autofs 1 remaining in /autofs 1 remaining in /autofs expiring path /autofs/nfsfileshare expired /autofs/nfsfileshare
If you see the output marked in “Green“, autofs automatically mounted the filesystem on your access and unmounted it after the timeout.
That’s All. You have successfully mounted NFS mount points via autofs.
You should probably make a note to install nfs-common first for those connecting for the first time.
good point, noted
is autos good for a share that you want to always be mounted? including if the share goes offline having it automatically remounted when it comes back online?
Autofs is used for auto mounting shared filesystem when it has been accessed. It never do remount on due to offline. There is no option in linux to remount when share comes online.
You can run crontab to remount in period lol
Yes, ofcourse you can do that. I mean there is no inbuilt option.