Bug#768006: nfs-common: systemd fails to start nfs-common daemons before attmpting NFS mounts (NFSv3)
Package: nfs-common
Version: 1:1.2.8-9
Severity: important
Dear Maintainer,
I am the administrator of a network of systems which use kerberized NFSv3 to mount user
homedirs across systems. On one particular machine, we were running jessie but had not yet
switched to systemd. After switching to systemd, I discovered that it failed to mount
critical mounts on startup. They mounted fine manually. Investigating the journal
(attached), I discovered that NFS failed to mount because statd was not available, but
systemd did not start statd until after attempting to mount the NFS shares, which is why
the manual mount worked fine.
The nfs-common systemd configuration should ensure that any nfs-common daemons are started
before attempting to mount NFS shares, or ensure that if the mount call occurs first, that
the system is able to gracefully recover by mounting them properly once the daemons are
started, rather than by failing entirely.
Please note that I have sanitized the fstab and mounts files below, so as not to expose
system details. To the best of my knowledge, they bear no relevance to the bug.
Attached is the relevant excerpt from the journal. Again I have sanitized the mount points;
both kerberized mount points failed (sec=krb5 below).
-- Package-specific info:
-- rpcinfo --
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
100021 1 udp 47679 nlockmgr
100021 3 udp 47679 nlockmgr
100021 4 udp 47679 nlockmgr
100021 1 tcp 44079 nlockmgr
100021 3 tcp 44079 nlockmgr
100021 4 tcp 44079 nlockmgr
100024 1 udp 58446 status
100024 1 tcp 37018 status
-- /etc/default/nfs-common --
NEED_STATD=yes
STATDOPTS=
NEED_IDMAPD=
NEED_GSSD=yes
RPCGSSDOPTS=
-- /etc/idmapd.conf --
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
-- /etc/fstab --
<host>:<export> <mountpoint> nfs bg,vers=3,sec=krb5,nosuid,nodev 0 0
<host>:<export> <mountpoint> nfs bg,vers=3,sec=sys,nosuid,nolock,noatime,nodev 0 0
<host>:<export> <mountpoint> nfs bg,vers=3,sec=sys,nosuid,nodev 0 0
-- /proc/mounts --
<host>:<export> <mountpoint> nfs rw,nosuid,nodev,noatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=129.97.134.115,mountvers=3,mountport=53011,mountproto=udp,local_lock=all,addr=129.97.134.115 0 0
<host>:<export> <mountpoint> nfs rw,nosuid,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,mountaddr=129.97.134.115,mountvers=3,mountport=53011,mountproto=udp,local_lock=none,addr=129.97.134.115 0 0
<host>:<export> <mountpoint> nfs rw,nosuid,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=129.97.134.72,mountvers=3,mountport=52732,mountproto=udp,local_lock=none,addr=129.97.134.72 0 0
-- System Information:
Debian Release: jessie/sid
APT prefers testing-updates
APT policy: (500, 'testing-updates'), (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 3.16-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages nfs-common depends on:
ii adduser 3.113+nmu3
ii initscripts 2.88dsf-53.4
ii libc6 2.19-12
ii libcap2 1:2.24-6
ii libcomerr2 1.42.12-1
ii libdevmapper1.02.1 2:1.02.90-2
ii libevent-2.0-5 2.0.21-stable-1.1
ii libgssapi-krb5-2 1.12.1+dfsg-11
ii libk5crypto3 1.12.1+dfsg-11
ii libkeyutils1 1.5.9-5
ii libkrb5-3 1.12.1+dfsg-11
ii libmount1 2.25.1-5
ii libnfsidmap2 0.25-5
ii libtirpc1 0.2.5-1
ii libwrap0 7.6.q-25
ii lsb-base 4.1+Debian13+nmu1
ii rpcbind 0.2.1-6
ii ucf 3.0030
Versions of packages nfs-common recommends:
ii python 2.7.8-1
Versions of packages nfs-common suggests:
pn open-iscsi <none>
pn watchdog <none>
-- Configuration Files:
/etc/default/nfs-common changed:
NEED_STATD=yes
STATDOPTS=
NEED_IDMAPD=
NEED_GSSD=yes
RPCGSSDOPTS=
-- no debconf information
Nov 03 21:50:50 nullsleep lvm[354]: 2 logical volume(s) in volume group "nullsleep" now active
Nov 03 21:50:50 nullsleep lvm[358]: 2 logical volume(s) in volume group "nullsleep" now active
Nov 03 21:50:50 nullsleep lvm[360]: 2 logical volume(s) in volume group "nullsleep" monitored
Nov 03 21:50:50 nullsleep ufw[363]: Skip starting firewall: ufw (not enabled)...done.
Nov 03 21:50:50 nullsleep networking[366]: Configuring network interfaces...done.
Nov 03 21:50:50 nullsleep kernel: FS-Cache: Loaded
Nov 03 21:50:50 nullsleep systemd-udevd[202]: Network interface NamePolicy= disabled on kernel commandline, ignoring.
Nov 03 21:50:50 nullsleep rpc.statd[493]: Version 1.2.8 starting
Nov 03 21:50:50 nullsleep rpc.statd[493]: Flags: TI-RPC
Nov 03 21:50:50 nullsleep rpc.statd[495]: Version 1.2.8 starting
Nov 03 21:50:50 nullsleep rpc.statd[495]: Flags: TI-RPC
Nov 03 21:50:50 nullsleep kernel: RPC: Registered named UNIX socket transport module.
Nov 03 21:50:50 nullsleep kernel: RPC: Registered udp transport module.
Nov 03 21:50:50 nullsleep kernel: RPC: Registered tcp transport module.
Nov 03 21:50:50 nullsleep kernel: RPC: Registered tcp NFSv4.1 backchannel transport module.
Nov 03 21:50:50 nullsleep rpc.statd[493]: failed to create RPC listeners, exiting
Nov 03 21:50:50 nullsleep kernel: FS-Cache: Netfs 'nfs' registered for caching
Nov 03 21:50:50 nullsleep rpc.statd[495]: failed to create RPC listeners, exiting
Nov 03 21:50:50 nullsleep mount[476]: mount.nfs: rpc.statd is not running but is required for remote locking.
Nov 03 21:50:50 nullsleep mount[476]: mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
Nov 03 21:50:50 nullsleep mount[476]: mount.nfs: an incorrect mount option was specified
Nov 03 21:50:50 nullsleep systemd[1]: <mountpoint>.mount mount process exited, code=exited status=32
Nov 03 21:50:50 nullsleep systemd[1]: Failed to mount /<mountpoint>.
Nov 03 21:50:50 nullsleep systemd[1]: Dependency failed for Remote File Systems.
Nov 03 21:50:50 nullsleep systemd[1]: Unit <mountpoint>.mount entered failed state.
Nov 03 21:50:50 nullsleep systemd[1]: <mountpoint>.mount mount process exited, code=exited status=32
Nov 03 21:50:50 nullsleep systemd[1]: Failed to mount /<mountpoint>.
Nov 03 21:50:50 nullsleep systemd[1]: Unit <mountpoint>.mount entered failed state.
Nov 03 21:50:50 nullsleep mount[480]: mount.nfs: rpc.statd is not running but is required for remote locking.
Nov 03 21:50:50 nullsleep mount[480]: mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
Nov 03 21:50:50 nullsleep mount[480]: mount.nfs: an incorrect mount option was specified
Nov 03 21:50:50 nullsleep systemd-journal[182]: Runtime journal is using 4.3M (max allowed 35.1M, trying to leave 52.6M free of 346.3M available → current limit 35.1M).
Nov 03 21:50:50 nullsleep rpcbind[481]: Starting rpcbind daemon....
Nov 03 21:50:51 nullsleep rpc.statd[517]: Version 1.2.8 starting
Nov 03 21:50:51 nullsleep sm-notify[518]: Version 1.2.8 starting
Nov 03 21:50:51 nullsleep kernel: Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
Nov 03 21:50:51 nullsleep nfs-common[508]: Starting NFS common utilities: statd idmapd gssd.
Reply to: