On 10/27/2014 12:56 PM, Canek Peláez Valdés wrote: > On Mon, Oct 27, 2014 at 1:38 PM, walt <[email protected]> wrote: >> Last night when I powered off my machines NFS was working perfectly. Today >> it's broken again for the nth time: >> >> #systemctl status nfs-server >> ● nfs-server.service - NFS server and services >> Loaded: loaded (/usr/lib64/systemd/system/nfs-server.service; enabled) >> Active: failed (Result: exit-code) since Mon 2014-10-27 11:50:38 PDT; >> 25min ago >> Process: 896 ExecStopPost=/usr/sbin/exportfs -f (code=exited, >> status=0/SUCCESS) >> Process: 893 ExecStopPost=/usr/sbin/exportfs -au (code=exited, >> status=0/SUCCESS) >> Process: 939 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, >> status=1/FAILURE) > I think I know the answer. Some days ago you moved /etc/conf.d for > NetworkManager to work, right? Where does the environment variable > RPCNFSDARGS is defined? I'm willing to bet that is in a /etc/conf.d > file. > > Could you please post here the contents of nfs-server.service, and if > it exists, the files inside /etc/systemd/system/nfs-server.service.d > and their contents?
Bingo again :) Your question led me to the answer, which I think is a bug in /usr/lib64/systemd/system/nfs-server.service. Here's why the bug showed up just this morning: way back at the beginning of systemd I stole some .service files from RedHat Fedora, including one named 'nfs.service'. Turns out the foreign RedHat file was starting rpcbind for me all those months and, when I deleted it last night, rpcbind didn't get started this morning by nfs-server.service from gentoo (which I think is a bug). #cat nfs-server.service [Unit] Description=NFS server and services Requires= network.target proc-fs-nfsd.mount rpcbind.target Requires= nfs-mountd.service Wants=rpc-statd.service nfs-idmapd.service rpc-gssd.service rpc-svcgssd.service Wants=rpc-statd-notify.service After= network.target proc-fs-nfsd.mount rpcbind.target nfs-mountd.service After= nfs-idmapd.service rpc-statd.service After= rpc-gssd.service rpc-svcgssd.service Before= rpc-statd-notify.service [Service] EnvironmentFile=/etc/conf.d/nfs Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/sbin/exportfs -r ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS ExecStop=/usr/sbin/rpc.nfsd 0 ExecStopPost=/usr/sbin/exportfs -au ExecStopPost=/usr/sbin/exportfs -f ExecReload=/usr/sbin/exportfs -r [Install] WantedBy=multi-user.target I can see that rpcbind.target is Required, but NOT rpcbind.service. AFAICT rpc.target does nothing (please explain if I'm wrong about that). BTW, /etc/conf.d/nfs doesn't define RPCNFSDARGS because it is intended for use by openrc (another bug?): #cat /etc/conf.d/nfs # /etc/conf.d/nfs # If you wish to set the port numbers for lockd, # please see /etc/sysctl.conf # Optional services to include in default `/etc/init.d/nfs start` # For NFSv4 users, you'll want to add "rpc.idmapd" here. NFS_NEEDED_SERVICES="rpc.idmapd" # Number of servers to be started up by default OPTS_RPC_NFSD="8" # Options to pass to rpc.mountd # ex. OPTS_RPC_MOUNTD="-p 32767" OPTS_RPC_MOUNTD="" # Options to pass to rpc.statd # ex. OPTS_RPC_STATD="-p 32765 -o 32766" OPTS_RPC_STATD="" # Options to pass to rpc.idmapd OPTS_RPC_IDMAPD="" # Options to pass to rpc.gssd OPTS_RPC_GSSD="" # Options to pass to rpc.svcgssd OPTS_RPC_SVCGSSD="" # Options to pass to rpc.rquotad (requires sys-fs/quota) OPTS_RPC_RQUOTAD="" # Timeout (in seconds) for exportfs EXPORTFS_TIMEOUT=30 # Options to set in the nfsd filesystem (/proc/fs/nfsd/). # Format is <option>=<value>. Multiple options are allowed. #OPTS_NFSD="nfsv4leasetime=30 max_block_size=4096" Thanks Canek!

