* [gentoo-user] [~amd64] NFS server broken again :( @ 2014-10-27 19:38 walt 2014-10-27 19:56 ` Canek Peláez Valdés 2014-10-28 0:56 ` [gentoo-user] " Tom H 0 siblings, 2 replies; 17+ messages in thread From: walt @ 2014-10-27 19:38 UTC (permalink / raw To: gentoo-user 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) Process: 936 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) Main PID: 939 (code=exited, status=1/FAILURE) Oct 27 11:50:38 a6 rpc.nfsd[939]: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused) Oct 27 11:50:38 a6 rpc.nfsd[939]: rpc.nfsd: unable to set any sockets for nfsd Oct 27 11:50:38 a6 systemd[1]: nfs-server.service: main process exited, code=exited, status=1/FAILURE Oct 27 11:50:38 a6 systemd[1]: Failed to start NFS server and services. Oct 27 11:50:38 a6 systemd[1]: Unit nfs-server.service entered failed state. #rpc.nfsd -d rpc.nfsd: Checking netconfig for visible protocols. rpc.nfsd: Enabling inet udp. rpc.nfsd: Enabling inet tcp. rpc.nfsd: Enabling inet6 udp. rpc.nfsd: Enabling inet6 tcp. rpc.nfsd: knfsd is currently down rpc.nfsd: Writing version string to kernel: -2 +3 +4 rpc.nfsd: Creating inet TCP socket. rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused) rpc.nfsd: Creating inet6 TCP socket. rpc.nfsd: writing fd to kernel failed: errno 97 (Address family not supported by protocol) rpc.nfsd: unable to set any sockets for nfsd Same kernel (3.16.6-gentoo) and nfs-utils-1.3.0-r1 I've been using for weeks with no trouble, so why today? Packages updated yesterday have (I think) nothing to do with nfs: #qlop -l |grep 'Oct 26' Fri Oct 26 03:07:58 2012 >>> app-text/calibre-0.9.4 Fri Oct 26 03:08:13 2012 >>> app-mobilephone/obexd-0.46 Fri Oct 26 13:41:39 2012 >>> sys-fs/fuse-2.9.1-r1 Fri Oct 26 13:41:47 2012 >>> sys-fs/mtpfs-1.1 Sat Oct 26 15:34:57 2013 >>> media-video/avidemux-2.5.6-r2 Sun Oct 26 07:09:51 2014 >>> sys-libs/timezone-data-2014i-r1 Sun Oct 26 07:10:10 2014 >>> dev-python/py-1.4.26 Sun Oct 26 07:10:25 2014 >>> dev-python/pytest-2.6.4 Sun Oct 26 07:14:05 2014 >>> dev-lang/perl-5.20.1-r2 Sun Oct 26 07:14:28 2014 >>> dev-perl/DBI-1.631.0 Sun Oct 26 07:14:49 2014 >>> net-libs/polarssl-1.3.9 Sun Oct 26 07:15:25 2014 >>> dev-python/pillow-2.5.3-r1 Sun Oct 26 08:41:38 2014 >>> net-libs/webkit-gtk-2.4.7 Any ideas on how to debug this? Thanks. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] [~amd64] NFS server broken again :( 2014-10-27 19:38 [gentoo-user] [~amd64] NFS server broken again :( walt @ 2014-10-27 19:56 ` Canek Peláez Valdés 2014-10-27 23:46 ` [gentoo-user] " walt 2014-10-28 0:56 ` [gentoo-user] " Tom H 1 sibling, 1 reply; 17+ messages in thread From: Canek Peláez Valdés @ 2014-10-27 19:56 UTC (permalink / raw To: gentoo-user On Mon, Oct 27, 2014 at 1:38 PM, walt <w41ter@gmail.com> 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) > Process: 936 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) > Main PID: 939 (code=exited, status=1/FAILURE) > > Oct 27 11:50:38 a6 rpc.nfsd[939]: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused) > Oct 27 11:50:38 a6 rpc.nfsd[939]: rpc.nfsd: unable to set any sockets for nfsd > Oct 27 11:50:38 a6 systemd[1]: nfs-server.service: main process exited, code=exited, status=1/FAILURE > Oct 27 11:50:38 a6 systemd[1]: Failed to start NFS server and services. > Oct 27 11:50:38 a6 systemd[1]: Unit nfs-server.service entered failed state. > > #rpc.nfsd -d > rpc.nfsd: Checking netconfig for visible protocols. > rpc.nfsd: Enabling inet udp. > rpc.nfsd: Enabling inet tcp. > rpc.nfsd: Enabling inet6 udp. > rpc.nfsd: Enabling inet6 tcp. > rpc.nfsd: knfsd is currently down > rpc.nfsd: Writing version string to kernel: -2 +3 +4 > rpc.nfsd: Creating inet TCP socket. > rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused) > rpc.nfsd: Creating inet6 TCP socket. > rpc.nfsd: writing fd to kernel failed: errno 97 (Address family not supported by protocol) > rpc.nfsd: unable to set any sockets for nfsd > > Same kernel (3.16.6-gentoo) and nfs-utils-1.3.0-r1 I've been using for weeks > with no trouble, so why today? > > Packages updated yesterday have (I think) nothing to do with nfs: > > #qlop -l |grep 'Oct 26' > Fri Oct 26 03:07:58 2012 >>> app-text/calibre-0.9.4 > Fri Oct 26 03:08:13 2012 >>> app-mobilephone/obexd-0.46 > Fri Oct 26 13:41:39 2012 >>> sys-fs/fuse-2.9.1-r1 > Fri Oct 26 13:41:47 2012 >>> sys-fs/mtpfs-1.1 > Sat Oct 26 15:34:57 2013 >>> media-video/avidemux-2.5.6-r2 > Sun Oct 26 07:09:51 2014 >>> sys-libs/timezone-data-2014i-r1 > Sun Oct 26 07:10:10 2014 >>> dev-python/py-1.4.26 > Sun Oct 26 07:10:25 2014 >>> dev-python/pytest-2.6.4 > Sun Oct 26 07:14:05 2014 >>> dev-lang/perl-5.20.1-r2 > Sun Oct 26 07:14:28 2014 >>> dev-perl/DBI-1.631.0 > Sun Oct 26 07:14:49 2014 >>> net-libs/polarssl-1.3.9 > Sun Oct 26 07:15:25 2014 >>> dev-python/pillow-2.5.3-r1 > Sun Oct 26 08:41:38 2014 >>> net-libs/webkit-gtk-2.4.7 > > Any ideas on how to debug this? 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? Regards. -- Canek Peláez Valdés Profesor de asignatura, Facultad de Ciencias Universidad Nacional Autónoma de México ^ permalink raw reply [flat|nested] 17+ messages in thread
* [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-27 19:56 ` Canek Peláez Valdés @ 2014-10-27 23:46 ` walt 2014-10-28 1:05 ` Canek Peláez Valdés 2014-10-28 2:49 ` Tom H 0 siblings, 2 replies; 17+ messages in thread From: walt @ 2014-10-27 23:46 UTC (permalink / raw To: gentoo-user On 10/27/2014 12:56 PM, Canek Peláez Valdés wrote: > On Mon, Oct 27, 2014 at 1:38 PM, walt <w41ter@gmail.com> 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! ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-27 23:46 ` [gentoo-user] " walt @ 2014-10-28 1:05 ` Canek Peláez Valdés 2014-10-28 2:49 ` Tom H 1 sibling, 0 replies; 17+ messages in thread From: Canek Peláez Valdés @ 2014-10-28 1:05 UTC (permalink / raw To: gentoo-user On Mon, Oct 27, 2014 at 5:46 PM, walt <w41ter@gmail.com> wrote: > On 10/27/2014 12:56 PM, Canek Peláez Valdés wrote: >> On Mon, Oct 27, 2014 at 1:38 PM, walt <w41ter@gmail.com> 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'. Gentoo nfs-utils package still doesn't include a systemd unit file, really? With a perfunctory look at /usr/portage/net-fs/nfs-utils/files, I see several *.service files. I highly recommend using the unit files provided by the Gentoo devs. > 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). I have no idea; I haven't set an NFS server in years. However, most target units usually are kinda "virtuals"; the bring other units up. > BTW, /etc/conf.d/nfs doesn't define RPCNFSDARGS because it is intended > for use by openrc (another bug?): Something should define RPCNFSDARGS; perhaps a drop-in? > #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! Walt, from time to time run "systemd-delta" and see what configurations of yours differ from upstream (either systemd and/or Gentoo). I think you should be using nfs-utils' included unit files. Regards. -- Canek Peláez Valdés Profesor de asignatura, Facultad de Ciencias Universidad Nacional Autónoma de México ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-27 23:46 ` [gentoo-user] " walt 2014-10-28 1:05 ` Canek Peláez Valdés @ 2014-10-28 2:49 ` Tom H 2014-10-28 3:22 ` Tom H 1 sibling, 1 reply; 17+ messages in thread From: Tom H @ 2014-10-28 2:49 UTC (permalink / raw To: Gentoo User On Mon, Oct 27, 2014 at 7:46 PM, walt <w41ter@gmail.com> wrote: > On 10/27/2014 12:56 PM, Canek Peláez Valdés wrote: >> On Mon, Oct 27, 2014 at 1:38 PM, walt <w41ter@gmail.com> 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'. Both RH and Gentoo have now adopted the upstream systemd units, which don't include "nfs.service". But RH creates an "nfs.service" alias to "nfs-server.service" so as not to upset RHEL sysadmin muscle memory and scripts. > 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). Does rpcbind.target exist? Does rpcbind.service have a "Requires" or "Wants" for rpcbind.target? Is rpcbind.service enabled? > #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?): I don't have access to a Gentoo box with nfs at the moment in order to check this but IIRC Gentoo used to use OPTS_RPC_NFSD, OPTS_RPC_MOUNTD, OPTS_RPC_STATD but it's now using upstream's RPCNFSDARGS, RPCMOUNTDARGS, STATDARGS, at least in its systemd units. Again IIRC the ebuild only changes the upstream "EnvironmentFile=" value and deep-sixes nfs-config.service. > #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" ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-28 2:49 ` Tom H @ 2014-10-28 3:22 ` Tom H 2014-10-28 22:18 ` walt 0 siblings, 1 reply; 17+ messages in thread From: Tom H @ 2014-10-28 3:22 UTC (permalink / raw To: Gentoo User On Mon, Oct 27, 2014 at 10:49 PM, Tom H <tomh0665@gmail.com> wrote: > Does rpcbind.target exist? Does rpcbind.service have a "Requires" or > "Wants" for rpcbind.target? Is rpcbind.service enabled? ... > I don't have access to a Gentoo box with nfs at the moment in order to > check this but IIRC Gentoo used to use OPTS_RPC_NFSD, OPTS_RPC_MOUNTD, > OPTS_RPC_STATD but it's now using upstream's RPCNFSDARGS, > RPCMOUNTDARGS, STATDARGS, at least in its systemd units. Again IIRC > the ebuild only changes the upstream "EnvironmentFile=" value and > deep-sixes nfs-config.service. I've just had the unoriginal idea of looking at my portage tree's nfs-utils and rpcbind ebuilds and files... The 1.2.9 nfs-utils ebuild has "systemd_dounit "${FILESDIR}"/nfsd.service" where nfsd.service has "Requires=rpcbind.service" and "After=rpcbind.service". The 1.3.0 nfs-utils ebuild has "systemd_dounit systemd/*.{mount,service,target}" where nfs-server.service has "Requires=rpcbind.target" and After=rpcbind.target". The rpcbind ebuild has "systemd_dounit "${FILESDIR}"/${PN}.service" so there's no "${PN}.target" (and there isn't a ".target" unit in $FILESDIR). And, I was wrong: cat $FILESDIR/nfs.confd # /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="" # 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" so if you're using the 1.3.0 nfs-utils ebuild, you have to set up the variables yourself, if you need to pass different values to the daemons. ^ permalink raw reply [flat|nested] 17+ messages in thread
* [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-28 3:22 ` Tom H @ 2014-10-28 22:18 ` walt 2014-10-29 1:36 ` Tom H 0 siblings, 1 reply; 17+ messages in thread From: walt @ 2014-10-28 22:18 UTC (permalink / raw To: gentoo-user On 10/27/2014 08:22 PM, Tom H wrote: > The 1.2.9 nfs-utils ebuild has "systemd_dounit > "${FILESDIR}"/nfsd.service" where nfsd.service has > "Requires=rpcbind.service" and "After=rpcbind.service". > > The 1.3.0 nfs-utils ebuild has "systemd_dounit > systemd/*.{mount,service,target}" where nfs-server.service has > "Requires=rpcbind.target" and After=rpcbind.target". Yes, and that little change caused the breakage that inspired this thread in the first place :) I have a Fedora 20 machine running in VirtualBox and I see they've already fixed the same breakage by going back to 'rpcbind.service' in their nfs-server.service file. I see they also define all those $RPCFOO variables in /etc/sysconfig/nfs, which are mostly null-strings anyway, which is why my nfs server is working correctly without those variables. (Working correctly *after* "systemctl enable rpcbind", that is.) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-28 22:18 ` walt @ 2014-10-29 1:36 ` Tom H 2014-10-29 1:50 ` Rich Freeman 0 siblings, 1 reply; 17+ messages in thread From: Tom H @ 2014-10-29 1:36 UTC (permalink / raw To: Gentoo User On Tue, Oct 28, 2014 at 6:18 PM, walt <w41ter@gmail.com> wrote: > On 10/27/2014 08:22 PM, Tom H wrote: >> >> The 1.2.9 nfs-utils ebuild has "systemd_dounit >> "${FILESDIR}"/nfsd.service" where nfsd.service has >> "Requires=rpcbind.service" and "After=rpcbind.service". >> >> The 1.3.0 nfs-utils ebuild has "systemd_dounit >> systemd/*.{mount,service,target}" where nfs-server.service has >> "Requires=rpcbind.target" and After=rpcbind.target". > > Yes, and that little change caused the breakage that inspired this > thread in the first place :) > > I have a Fedora 20 machine running in VirtualBox and I see they've > already fixed the same breakage by going back to 'rpcbind.service' > in their nfs-server.service file. > > I see they also define all those $RPCFOO variables in /etc/sysconfig/nfs, > which are mostly null-strings anyway, which is why my nfs server is > working correctly without those variables. > > (Working correctly *after* "systemctl enable rpcbind", that is.) "systemctl enable rpcbind" or "systemctl start rpcbind"? (Or "systemctl enable rpcbind" and reboot?) I've been wondering about "rpcbind.target". I'm not using systemd on Gentoo but on my laptop running Ubuntu 15.04 (yes, 15 with systemd 215), "/lib/systemd/system/rpcbind.target" is provided by systemd. It's also part of the upstream tarball so it must be part of the Gentoo package - and, I have to assume, part of the Fedora systemd package since Lennart's its maintainer there. Since Gentoo's rpcbind.service has "Wants=rpcbind.target" and "Before=rpcbind.target"", having nfs-server.service depend on rpcbind.target rather than rpcbind.service should work as long as rpcbind.service is enabled. But having "Requires=rpcbind.service" and "After=rpcbind.service", like nfsd.service has/had, means that you don't have to enable rpcbind.service. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-29 1:36 ` Tom H @ 2014-10-29 1:50 ` Rich Freeman 2014-10-31 17:34 ` Tom H 0 siblings, 1 reply; 17+ messages in thread From: Rich Freeman @ 2014-10-29 1:50 UTC (permalink / raw To: gentoo-user On Tue, Oct 28, 2014 at 9:36 PM, Tom H <tomh0665@gmail.com> wrote: > Since Gentoo's rpcbind.service has "Wants=rpcbind.target" and > "Before=rpcbind.target"", having nfs-server.service depend on > rpcbind.target rather than rpcbind.service should work as long as > rpcbind.service is enabled. > > But having "Requires=rpcbind.service" and "After=rpcbind.service", > like nfsd.service has/had, means that you don't have to enable > rpcbind.service. > I was just looking at that and thinking the same thing. Nothing is really forcing rpcbind to load the way things are specified right now. If a service really requires another service to operate, it should say that. There is no problem doing that via a target, but then the target still needs to pull it in. There seems a general tendency in systemd to express dependencies as "after" instead of "requires." That is fine if the service doesn't really require something else, but if there really is a true dependency then it just causes problems when somebody doesn't notice and fails to enable the other unit. -- Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-29 1:50 ` Rich Freeman @ 2014-10-31 17:34 ` Tom H 2014-10-31 18:27 ` Rich Freeman 0 siblings, 1 reply; 17+ messages in thread From: Tom H @ 2014-10-31 17:34 UTC (permalink / raw To: Gentoo User On Tue, Oct 28, 2014 at 9:50 PM, Rich Freeman <rich0@gentoo.org> wrote: > On Tue, Oct 28, 2014 at 9:36 PM, Tom H <tomh0665@gmail.com> wrote: >> Since Gentoo's rpcbind.service has "Wants=rpcbind.target" and >> "Before=rpcbind.target"", having nfs-server.service depend on >> rpcbind.target rather than rpcbind.service should work as long as >> rpcbind.service is enabled. >> >> But having "Requires=rpcbind.service" and "After=rpcbind.service", >> like nfsd.service has/had, means that you don't have to enable >> rpcbind.service. > > I was just looking at that and thinking the same thing. Nothing is > really forcing rpcbind to load the way things are specified right now. > If a service really requires another service to operate, it should say > that. There is no problem doing that via a target, but then the > target still needs to pull it in. Wouldn't the solution to this problem to have a news item to let the user know that rpcbind was being started as a dependency of nfsd.service but that it now needs to be enabled in order to be started by nfs-server.service? > There seems a general tendency in systemd to express dependencies as > "after" instead of "requires." That is fine if the service doesn't > really require something else, but if there really is a true > dependency then it just causes problems when somebody doesn't notice > and fails to enable the other unit. AFAIK they're completely different and you can have service1 have a "Requires" on service2 but have service2 start before service1. So if someone's using "After" and expecting "Requires", he/she is bound to be surprised by the result. Is "After" really necessary as an option? I've never come across a service that uses "After" without a "Requires" or a Wants" but I've never taken the time to look. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-31 17:34 ` Tom H @ 2014-10-31 18:27 ` Rich Freeman 2014-10-31 23:01 ` Tom H 0 siblings, 1 reply; 17+ messages in thread From: Rich Freeman @ 2014-10-31 18:27 UTC (permalink / raw To: gentoo-user On Fri, Oct 31, 2014 at 1:34 PM, Tom H <tomh0665@gmail.com> wrote: > Is "After" really necessary as an option? I've never come across a > service that uses "After" without a "Requires" or a Wants" but I've > never taken the time to look. > Hmm, I found After more common that Wants, but maybe I only look at units that have problems. :) I think the intent is to handle optional dependencies, but in practice I don't know that it works well. It would almost be better to have some kind of cluster config file that specifies all the actual dependencies (possibly including cross-host) and have it spit out all the unit dependencies automatically. That is a bit much to ask for now, and probably a bit much for somebody who just wants their laptop to launch kde after all their mounts are ready. Specifying After vs Wants separately does make sense. Dependency doesn't have to imply sequential. -- Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-31 18:27 ` Rich Freeman @ 2014-10-31 23:01 ` Tom H 2014-10-31 23:52 ` Rich Freeman 2014-11-01 3:18 ` Jc García 0 siblings, 2 replies; 17+ messages in thread From: Tom H @ 2014-10-31 23:01 UTC (permalink / raw To: Gentoo User On Fri, Oct 31, 2014 at 2:27 PM, Rich Freeman <rich0@gentoo.org> wrote: > On Fri, Oct 31, 2014 at 1:34 PM, Tom H <tomh0665@gmail.com> wrote: >> Is "After" really necessary as an option? I've never come across a >> service that uses "After" without a "Requires" or a Wants" but I've >> never taken the time to look. > > Hmm, I found After more common that Wants, but maybe I only look at > units that have problems. :) LOL. Which supports the thesis that "After" might not be a useful setting within a service unit. But it's just occured to me that target units use "After" without "Requires" or "Wants", for example network-online.target has "After=network.target". > I think the intent is to handle optional dependencies, but in practice > I don't know that it works well. It would almost be better to have > some kind of cluster config file that specifies all the actual > dependencies (possibly including cross-host) and have it spit out all > the unit dependencies automatically. That is a bit much to ask for > now, and probably a bit much for somebody who just wants their laptop > to launch kde after all their mounts are ready. Optional dependencies are handled by "Wants" like openrc's "use". IIUC you're referring to a BSD-like rc daemon config file. WOuldn't that have to be maintained by a sysadmin rather than by a package maintainer? > Specifying After vs Wants separately does make sense. Dependency > doesn't have to imply sequential. Do you have an example of a service that uses "After=" but doesn't need a "Requires=" or a "Wants="? I'm either being unimaginative or plain dumb, but I can't think of any. I wonder whether, if Lennart and co removed "After=" from service units and turned "Requires=" into the equivakent of the current "Requires=" and "After=" setup, someone would raise a storm over the change because it would've broken something. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-31 23:01 ` Tom H @ 2014-10-31 23:52 ` Rich Freeman 2014-11-03 1:37 ` Tom H 2014-11-01 3:18 ` Jc García 1 sibling, 1 reply; 17+ messages in thread From: Rich Freeman @ 2014-10-31 23:52 UTC (permalink / raw To: gentoo-user On Fri, Oct 31, 2014 at 7:01 PM, Tom H <tomh0665@gmail.com> wrote: > > Do you have an example of a service that uses "After=" but doesn't > need a "Requires=" or a "Wants="? I'm either being unimaginative or > plain dumb, but I can't think of any. Some examples I found: smbd.service sshd.service mythbackend.service ntpd.service -- Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-31 23:52 ` Rich Freeman @ 2014-11-03 1:37 ` Tom H 2014-11-03 3:47 ` Rich Freeman 0 siblings, 1 reply; 17+ messages in thread From: Tom H @ 2014-11-03 1:37 UTC (permalink / raw To: Gentoo User On Fri, Oct 31, 2014 at 7:52 PM, Rich Freeman <rich0@gentoo.org> wrote: > On Fri, Oct 31, 2014 at 7:01 PM, Tom H <tomh0665@gmail.com> wrote: >> >> Do you have an example of a service that uses "After=" but doesn't >> need a "Requires=" or a "Wants="? I'm either being unimaginative or >> plain dumb, but I can't think of any. > > sshd.service Thanks. I've just looked at this one and it has "After=syslog.target network.target auditd.service". AIUI, "After=network.target" (and similarly "After=syslog.target") is equivalent to having "Wants=network.service NetworkManager.service <other_network_managers>" and "After=network.service NetworkManager.service <other_network_managers>". But "After=auditd.service" is clearly an example of an "After=" without a "Requires=" or a "Wants=". Thanks again. PS: You'd expressed an desire for a dependency chain file in an earlier email. "systemctl list-dependencies" shows you the current dependency resolution. It's not what you were looking for but possibly something of interest (it has modifiers like "--after" and "--before"). ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-11-03 1:37 ` Tom H @ 2014-11-03 3:47 ` Rich Freeman 0 siblings, 0 replies; 17+ messages in thread From: Rich Freeman @ 2014-11-03 3:47 UTC (permalink / raw To: gentoo-user On Sun, Nov 2, 2014 at 8:37 PM, Tom H <tomh0665@gmail.com> wrote: > > AIUI, "After=network.target" (and similarly "After=syslog.target") is > equivalent to having "Wants=network.service NetworkManager.service > <other_network_managers>" and "After=network.service > NetworkManager.service <other_network_managers>". Actually, as far as I understand things, if you don't enable something that wants network.target, then you won't get it. You need to enable something like dhcpcd or networkd to get it. It works this way so that every package that needs the network doesn't try to run every network manager you have installed as many are mutually exclusive. Presumably if you don't run one of those services and start sshd, it will just end up listening on localhost (I assume something sets up the lo interface even if a network manager isn't running). -- Rich ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] Re: [~amd64] NFS server broken again :( 2014-10-31 23:01 ` Tom H 2014-10-31 23:52 ` Rich Freeman @ 2014-11-01 3:18 ` Jc García 1 sibling, 0 replies; 17+ messages in thread From: Jc García @ 2014-11-01 3:18 UTC (permalink / raw To: gentoo-user 2014-10-31 17:01 GMT-06:00 Tom H <tomh0665@gmail.com>: > On Fri, Oct 31, 2014 at 2:27 PM, Rich Freeman <rich0@gentoo.org> wrote: >> On Fri, Oct 31, 2014 at 1:34 PM, Tom H <tomh0665@gmail.com> wrote: > > >>> Is "After" really necessary as an option? I've never come across a >>> service that uses "After" without a "Requires" or a Wants" but I've >>> never taken the time to look. >> >> Hmm, I found After more common that Wants, but maybe I only look at >> units that have problems. :) > > LOL. Which supports the thesis that "After" might not be a useful > setting within a service unit. But it's just occured to me that target > units use "After" without "Requires" or "Wants", for example > network-online.target has "After=network.target". > I think the manuals are pretty clear about the working of these. From the systemd.unit manual: """ .... Requires= .... If a unit foo.service requires a unit bar.service as configured with Requires= and no ordering is configured with After= or Before=, then both units will be started simultaneously and without any delay between them if foo.service is activated. Before,After= ... Note that this setting is independent of and orthogonal to the requirement dependencies as configured by Requires=. .... If two units have no ordering dependencies between them, they are shut down or started up simultaneously, and no ordering takes place. """ From sytemd.service manual """ Unless DefaultDependencies= is set to false, service units will implicitly have dependencies of type Requires= and After= on basic.target as well as dependencies of type Conflicts= and Before= on shutdown.target. These ensure that normal service units pull in basic system initialization, and are terminated cleanly prior to system shutdown. """ I think it's about flexibility and the fact that systemd uses parallelization at boot, when having these options makes sense ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-user] [~amd64] NFS server broken again :( 2014-10-27 19:38 [gentoo-user] [~amd64] NFS server broken again :( walt 2014-10-27 19:56 ` Canek Peláez Valdés @ 2014-10-28 0:56 ` Tom H 1 sibling, 0 replies; 17+ messages in thread From: Tom H @ 2014-10-28 0:56 UTC (permalink / raw To: Gentoo User On Mon, Oct 27, 2014 at 3:38 PM, walt <w41ter@gmail.com> 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) > Process: 936 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) > Main PID: 939 (code=exited, status=1/FAILURE) > > Oct 27 11:50:38 a6 rpc.nfsd[939]: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused) > Oct 27 11:50:38 a6 rpc.nfsd[939]: rpc.nfsd: unable to set any sockets for nfsd > Oct 27 11:50:38 a6 systemd[1]: nfs-server.service: main process exited, code=exited, status=1/FAILURE > Oct 27 11:50:38 a6 systemd[1]: Failed to start NFS server and services. > Oct 27 11:50:38 a6 systemd[1]: Unit nfs-server.service entered failed state. > > #rpc.nfsd -d > rpc.nfsd: Checking netconfig for visible protocols. > rpc.nfsd: Enabling inet udp. > rpc.nfsd: Enabling inet tcp. > rpc.nfsd: Enabling inet6 udp. > rpc.nfsd: Enabling inet6 tcp. > rpc.nfsd: knfsd is currently down > rpc.nfsd: Writing version string to kernel: -2 +3 +4 > rpc.nfsd: Creating inet TCP socket. > rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused) > rpc.nfsd: Creating inet6 TCP socket. > rpc.nfsd: writing fd to kernel failed: errno 97 (Address family not supported by protocol) > rpc.nfsd: unable to set any sockets for nfsd Is rpcbind.service running? Does "rpcbind -p" output the usual programs/ports/...? Are the nfs-api-filesystems mounted? ("/var/lib/nfs/rpc_pipefs" and "/proc/fs/nfsd") ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2014-11-03 3:47 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-10-27 19:38 [gentoo-user] [~amd64] NFS server broken again :( walt 2014-10-27 19:56 ` Canek Peláez Valdés 2014-10-27 23:46 ` [gentoo-user] " walt 2014-10-28 1:05 ` Canek Peláez Valdés 2014-10-28 2:49 ` Tom H 2014-10-28 3:22 ` Tom H 2014-10-28 22:18 ` walt 2014-10-29 1:36 ` Tom H 2014-10-29 1:50 ` Rich Freeman 2014-10-31 17:34 ` Tom H 2014-10-31 18:27 ` Rich Freeman 2014-10-31 23:01 ` Tom H 2014-10-31 23:52 ` Rich Freeman 2014-11-03 1:37 ` Tom H 2014-11-03 3:47 ` Rich Freeman 2014-11-01 3:18 ` Jc García 2014-10-28 0:56 ` [gentoo-user] " Tom H
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox