延迟NIS和NFS启动,直到Fedora 17上的networking接口完全准备就绪

我最近为我们的networkingbuild立了一个Fedora 17服务器,而且我一直在启动NIS服务时遇到问题。 以下是系统中的一些日志:

Aug 21 12:57:12 cairnwell ypbind-pre-setdomain[718]: Setting NIS domain: 'indigo-nis' (environment variable) Aug 21 12:57:13 cairnwell ypbind: Binding NIS service Aug 21 12:57:13 cairnwell rpc.statd[730]: Unable to prune capability 0 from bounding set: Operation not permitted Aug 21 12:57:13 cairnwell systemd[1]: nfs-lock.service: control process exited, code=exited status=1 Aug 21 12:57:13 cairnwell systemd[1]: Unit nfs-lock.service entered failed state. Aug 21 12:57:14 cairnwell setroubleshoot: SELinux is preventing /usr/sbin/rpc.statd from using the setpcap capability. For complete SELinux messages. run sealert -l 024bba8a-b0ef-43dc-b195-5c9a2d4c4d41 Aug 21 12:57:15 cairnwell kernel: [ 18.822282] bnx2 0000:02:00.0: em1: NIC Copper Link is Up, 1000 Mbps full duplex Aug 21 12:57:15 cairnwell kernel: [ 18.822925] ADDRCONF(NETDEV_CHANGE): em1: link becomes ready Aug 21 12:57:15 cairnwell NetworkManager[621]: <info> (em1): carrier now ON (device state 20) Aug 21 12:57:15 cairnwell NetworkManager[621]: <info> (em1): device state change: unavailable -> disconnected (reason 'carrier-changed') [20 30 40] Aug 21 12:57:15 cairnwell NetworkManager[621]: <info> Auto-activating connection 'System em1'. Aug 21 12:57:15 cairnwell NetworkManager[621]: <info> Activation (em1) starting connection 'System em1' Aug 21 12:57:15 cairnwell NetworkManager[621]: <info> (em1): device state change: disconnected -> prepare (reason 'none') [30 40 0] ....... Aug 21 12:57:19 cairnwell sendmail[790]: YPBINDPROC_DOMAIN: Domain not bound Aug 21 12:57:26 cairnwell sendmail[790]: YPBINDPROC_DOMAIN: Domain not bound Aug 21 12:57:31 cairnwell sendmail[790]: YPBINDPROC_DOMAIN: Domain not bound Aug 21 12:57:35 cairnwell sendmail[790]: YPBINDPROC_DOMAIN: Domain not bound Aug 21 12:58:00 cairnwell ypbind: Binding took 47 seconds Aug 21 12:58:00 cairnwell ypbind: NIS server for domain indigo-nis is not responding. Aug 21 12:58:01 cairnwell ypbind: Killing ypbind with PID 733. Aug 21 12:58:01 cairnwell ypbind-post-waitbind[734]: /usr/lib/ypbind/ypbind-post-waitbind: line 51: kill: SIGTERM: invalid signal specification Aug 21 12:58:01 cairnwell systemd[1]: ypbind.service: control process exited, code=exited status=1 Aug 21 12:58:01 cairnwell systemd[1]: Unit ypbind.service entered failed state. 

通过查看这些日志,ypbind服务在12:57:12启动,但networking接口直到12:57:15才会启动。 我的猜测是这导致ypbind在尝试连接时超时。

作为一种连锁效应,NIS失败导致NFS无法正确映射UID的问题。 这个问题似乎并没有通过实际启动ypbind等来解决,所以我必须将所有的NFS共享设置为noauto。

我已经尝试在/ etc / sysconfig / network中手动添加NETWORKDELAYNETWORKWAIT ,同时也运行systemctl enable NetworkManager-wait-online.service正如我在某些地方所build议的那样,但这两者都没有任何影响。

在networking启动后重新启动ypbind&挂载NFS共享,手动修复相对比较容易,但是每次重新启动服务器时都不得不这样做。

有没有人知道一个简单的(最好是免费的)的方式来延迟ypbind启动,直到networking接口完全准备好之后?

我发表了一个答案,因为需要50个声望来评论。

如果你还没有偶然发现,我会指出你这篇很好的文章 。

另外,还有这个非常有趣的一行:

或者,你可以改变你的服务,需要networking起来,包括后= network-online.target和要= network-online.target

请注意“另类”

所以,你可能需要创build这个文件: /etc/systemd/system/ypbind.service.d/waitfornetwork.conf

 [Service] After=network-online.target Wants=network-online.target 

这个答案是可能的解决scheme。 没有保证的解决scheme。