systemd
Daemonjournalctl
: Query the systemd
Journaludev
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 ceratin 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.
autofs
is not installed on openSUSE Leap by
default. To use its auto-mounting capabilities, first install it
with
sudo zypper install autofs
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.
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 openSUSE Leap:
# # 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
The base location where to mount the autofs
file system, such as /home
.
The name of a map source to use for mounting. For the syntax of the maps files, see Section 23.2.2, “Map Files”.
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
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 at 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
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 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
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 23.2.1.1, “Direct Mounts”).
Specifies optional comma-separated list of mount options for the
relevant entries. If auto.master
contains
options for this map file as well, theses are appended.
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 /dev
entries or smbfs shares), a colon symbol ':' needs to be prefixed,
such as :/dev/sda1
.
This section introduces information on how to control the
autofs
service operation, and how to view more
debugging information when tuning the automounter operation.
autofs
Service #
The operation of the autofs
service is
controlled by systemd
. The general syntax of the
systemctl
command for autofs
is
sudo systemctl sub-command autofs
where sub-command is one of:
Starts the automounter daemon at boot.
Starts the automounter daemon.
Stops the automounter daemon. Automatic mount points are not accessible.
Prints the current status of the autofs
service together with a part of a relevant log file.
Stops and starts the automounter, terminating all running daemons and starting new ones.
Checks the current auto.master
map, restarts
those daemons whose entries have changed, and starts new ones for new
entries.
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
.
sudo systemctl stop autofs
From one terminal, run automount
manually in the
foreground, producing verbose output.
sudo automount -f -v
From another terminal, try to mount the auto-mounting file systems by
accessing the mount points (for example by cd
or
ls
).
Check the output of automount
from the first
terminal for more information why the mount failed, or why it
was not even attempted.
The following procedure illustrates how to configure
autofs
to auto-mount an NFS share available on
your network. It makes use of the information mentioned above, and
assumes you are familiar with NFS exports. For more information on NFS,
see Chapter 22, Sharing File Systems with NFS.
Edit the master map file /etc/auto.master
:
sudo vim /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
It tells autofs
that the base mount point is
/nfs
, the NFS shares are specified in the
/etc/auto.nfs
map, and that all shares in this map
will be automatically unmounted after 10 seconds of inactivity.
Create a new map file for NFS shares:
sudo vim /etc/auto.nfs
/etc/auto.nfs
normally contains a separate line
for each NFS share. Its format is described in
Section 23.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/export
directory on the
jupiter.com
host will be auto-mounted to the
/nfs/export
directory on the local host
(/nfs
is taken from the
auto.master
map) when requested. The
/nfs/export
directory will be created
automatically by autofs
.
Optionally comment out the related line in
/etc/fstab
if 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 autofs
and check if it works:
sudo systemctl restart autofs
# ls -l /nfs/export total 20 drwxr-xr-x 6 1001 users 4096 Oct 25 08:56 ./ drwxr-xr-x 3 root root 0 Apr 1 09:47 ../ drwxr-xr-x 5 1001 users 4096 Jan 14 2013 .images/ drwxr-xr-x 10 1001 users 4096 Aug 16 2013 .profiled/ drwxr-xr-x 3 1001 users 4096 Aug 30 2013 .tmp/ drwxr-xr-x 4 1001 users 4096 Oct 25 08:56 SLE-12-manual/
If you can see the list of files on the remote share, then
autofs
is functioning.
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.
/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
systemctl restart autofs
For example, if you have a server named jupiter
with
an NFS share called /export
, you can mount it by
typing
# cd /net/jupiter/export
on the command line.
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—then
autofs
has a handy solution for you.
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/&
If you want to auto-mount an SMB/CIFS share (see
Chapter 21, 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