21 On-demand mounting with autofs #
    autofs is a program that automatically mounts
    specified directories on an on-demand basis. It is based on a kernel module
    for high efficiency, and can manage both local directories and network
    shares. These automatic mount points are mounted only when they are
    accessed, and unmounted after a certain period of inactivity. This
    on-demand behavior saves bandwidth and results in better performance than
    static mounts managed by /etc/fstab. While
    autofs is a control script,
    automount is the command (daemon) that does the actual
    auto-mounting.
   
21.1 Installation #
   autofs is not installed on SUSE Linux Enterprise Server by
   default. To use its auto-mounting capabilities, first install it with
  
>sudozypper install autofs
21.2 Configuration #
   You need to configure autofs manually by editing
   its configuration files with a text editor, such as vim.
   There are two basic steps to configure
   autofs—the master map
   file, and specific map files.
  
21.2.1 The master map file #
    The default master configuration file for autofs
    is /etc/auto.master. You can change its location by
    changing the value of the DEFAULT_MASTER_MAP_NAME option
    in /etc/sysconfig/autofs. Here is the content of the
    default one for SUSE Linux Enterprise Server:
   
# # Sample auto.master file # This is an automounter map and it has the following format # key [ -mount-options-separated-by-comma ] location # For details of the format look at autofs(5).1 # #/misc /etc/auto.misc2 #/net -hosts # # Include /etc/auto.master.d/*.autofs3 # #+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.master4
| 
      The  | |
| Although commented out (#) by default, this is an example of a simple automounter mapping syntax. | |
| 
      In case you need to split the master map into several files, uncomment
      the line, and put the mappings (suffixed with  | |
| 
       | 
    Entries in auto.master have three fields with the
    following syntax:
   
mount point map name options
- mount point
- The base location where to mount the - autofsfile system, such as- /home.
- map name
- The name of a map source to use for mounting. For the syntax of the map files, see Section 21.2.2, “Map files”. 
- options
- These options (if specified) will apply as defaults to all entries in the given map. 
     For more detailed information on the specific values of the optional
     map-type, format, and
     options, see the  manual
     page (man 5 auto.master).
    
    The following entry in auto.master tells
    autofs to look in
    /etc/auto.smb, and create mount points in the
    /smb directory:
   
/smb /etc/auto.smb
21.2.1.1 Direct mounts #
     Direct mounts create a mount point at the path specified inside the
     relevant map file. Instead of specifying the mount point in
     auto.master, replace the mount point field with
     /-. For example, the following line tells
     autofs to create a mount point in the place
     specified in auto.smb:
    
/- /etc/auto.smb
If the map file is not specified with its full local or network path, it is located using the Name Service Switch (NSS) configuration:
/- auto.smb
21.2.2 Map files #
     Although files are the most common types of maps for
     auto-mounting with autofs, there are other types
     as well. A map specification can be the output of a command, or a result
     of a query in LDAP or a database. For more detailed information on map
     types, see the manual page man 5 auto.master.
    
Map files specify the (local or network) source location, and the mount point where to mount the source locally. The general format of maps is similar to the master map. The difference is that the options appear between the mount point and the location instead of at the end of the entry:
mount point options location
    Make sure that map files are not marked as executable. You can remove
    the executable bits by executing chmod -x MAP_FILE.
   
- mount point
- Specifies where to mount the source location. This can be either a single directory name (so-called indirect mount) to be added to the base mount point specified in - auto.master, or the full path of the mount point (direct mount, see Section 21.2.1.1, “Direct mounts”).
- options
- Specifies an optional comma-separated list of mount options for the relevant entries. If - auto.mastercontains options for this map file as well, these are appended.
- location
- Specifies from where the file system is to be mounted. It is usually an NFS or SMB volume in the usual notation - host_name:path_name. If the file system to be mounted begins with a '/' (such as local- /deventries or smbfs shares), a colon symbol ':' needs to be prefixed, such as- :/dev/sda1.
21.3 Operation and debugging #
   This section introduces information on how to control the
   autofs service operation, and how to view more
   debugging information when tuning the automounter operation.
  
21.3.1 Controlling the autofs service #
    The operation of the autofs service is controlled
    by systemd. The general syntax of the systemctl
    command for autofs is
   
>sudosystemctl SUB_COMMAND autofs
where SUB_COMMAND is one of:
- enable
- Starts the automounter daemon at boot. 
- start
- Starts the automounter daemon. 
- stop
- Stops the automounter daemon. Automatic mount points are not accessible. 
- status
- Prints the current status of the - autofsservice together with a part of a relevant log file.
- restart
- Stops and starts the automounter, terminating all running daemons and starting new ones. 
- reload
- Checks the current - auto.mastermap, restarts those daemons whose entries have changed, and starts new ones for new entries.
21.3.2 Debugging automounter problems #
    If you experience problems when mounting directories with
    autofs, it is useful to run the
    automount daemon manually and watch its output messages:
   
- Stop - autofs.- >- sudosystemctl stop autofs
- From one terminal, run - automountmanually in the foreground, producing verbose output.- >- sudoautomount -f -v
- From another terminal, try to mount the auto-mounting file systems by accessing the mount points (for example by - cdor- ls).
- Check the output of - automountfrom the first terminal for more information on why the mount failed, or why it was not even attempted.
21.4 Auto-mounting an NFS share #
   The following procedure illustrates how to configure
   autofs to auto-mount an NFS share available on your
   network. It uses the information mentioned above, and assumes you
   are familiar with NFS exports. For more information on NFS, see
   Chapter 19, Sharing file systems with NFS.
  
- Edit the master map file - /etc/auto.master:- >- sudovim /etc/auto.master- Add a new entry for the new NFS mount at the end of - /etc/auto.master:- /nfs /etc/auto.nfs --timeout=10 - This tells - autofsthat the base mount point is- /nfs, the NFS shares are specified in the- /etc/auto.nfsmap, and that all shares in this map will be automatically unmounted after 10 seconds of inactivity.
- Create a new map file for NFS shares: - >- sudovim /etc/auto.nfs- /etc/auto.nfsnormally contains a separate line for each NFS share. Its format is described in Section 21.2.2, “Map files”. Add the line describing the mount point and the NFS share network address:- export jupiter.com:/home/geeko/doc/export - The above line means that the - /home/geeko/doc/exportdirectory on the- jupiter.comhost will be auto-mounted to the- /nfs/exportdirectory on the local host (- /nfsis taken from the- auto.mastermap) when requested. The- /nfs/exportdirectory will be created automatically by- autofs.
- Optionally comment out the related line in - /etc/fstabif you previously mounted the same NFS share statically. The line should look similar to this:- #jupiter.com:/home/geeko/doc/export /nfs/export nfs defaults 0 0 
- Reload - autofsand check if it works:- >- sudosystemctl restart autofs- # ls -l /nfs/export total 20 drwxr-xr-x 5 1001 users 4096 Jan 14 2017 .images/ drwxr-xr-x 10 1001 users 4096 Aug 16 2017 .profiled/ drwxr-xr-x 3 1001 users 4096 Aug 30 2017 .tmp/ drwxr-xr-x 4 1001 users 4096 Apr 25 08:56 manual/ - If you can see the list of files on the remote share, then - autofsis functioning.
21.5 Advanced topics #
   This section describes topics that are beyond the basic introduction to
   autofs—auto-mounting of NFS shares that are
   available on your network, using wild cards in map files, and information
   specific to the CIFS file system.
  
21.5.1 /net mount point #
    This helper mount point is useful if you use a lot of NFS shares.
    /net auto-mounts all NFS shares on your local network
    on demand. The entry is already present in the
    auto.master file, so all you need to do is uncomment
    it and restart autofs:
   
/net -hosts
>sudosystemctl restart autofs
    For example, if you have a server named jupiter with an
    NFS share called /export, you can mount it by typing
   
>sudocd /net/jupiter/export
on the command line.
21.5.2 Using wild cards to auto-mount subdirectories #
    If you have a directory with subdirectories that you need to auto-mount
    individually—the typical case is the /home
    directory with individual users' home directories
    inside—autofs offers a clever solution.
   
    In case of home directories, add the following line in
    auto.master:
   
/home /etc/auto.home
    Now you need to add the correct mapping to the
    /etc/auto.home file, so that the users' home
    directories are mounted automatically. One solution is to create separate
    entries for each directory:
   
wilber jupiter.com:/home/wilber penguin jupiter.com:/home/penguin tux jupiter.com:/home/tux [...]
    This is very awkward as you need to manage the list of users inside
    auto.home. You can use the asterisk '*' instead of the
    mount point, and the ampersand '&' instead of the directory to be
    mounted:
   
* jupiter:/home/&
21.5.3 Auto-mounting CIFS file system #
    If you want to auto-mount an SMB/CIFS share (see
    Chapter 20, Samba for more information on the SMB/CIFS protocol),
    you need to modify the syntax of the map file. Add
    -fstype=cifs in the option field, and prefix the share
    location with a colon ':'.
   
mount point -fstype=cifs ://jupiter.com/export