web-dev-qa-db-ja.com

ネットワークインターフェースがFedora17で完全に準備ができるまでNISとNFSの起動を遅らせる

最近、ネットワーク用に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に起動していますが、ネットワークインターフェイスは12:57:15まで起動していません。私の推測では、これが接続しようとしたときにypbindがタイムアウトする原因になっていると思います。

ノックオン効果として、NISの障害により、NFSで問題が発生し、UIDを適切にマップできなくなりました。この問題は、実際にypbindなどを起動しても修正されていないようです。そのため、すべてのNFS共有をnoautoに設定する必要がありました。

/ etc/sysconfig/networkにNETWORKDELAYNETWORKWAITを手動で追加し、いくつかの場所で提案されているようにsystemctl enable NetworkManager-wait-online.serviceを実行しようとしましたが、どちらもありませんでした効果。

ネットワークの起動後にypbindを再起動してNFS共有をマウントすることで手動で修正するのは比較的簡単ですが、サーバーを再起動するたびにこれを行う必要があるのは理想的とは言えません。

ネットワークインターフェイスの準備が整うまでypbindの起動を遅らせる簡単な(そしてできればハッキングのない)方法を知っている人はいますか?

3
obmarg

コメントするには50を超える評判が必要なので、回答を投稿します。

私はあなたにこれを指摘するつもりです 非常に良い記事 あなたがそれにつまずいたことがない場合に備えて。

また、この非常に興味深い行があります:

または、ネットワークを起動する必要があるサービスを変更して、After = network-online.targetとWants = network-online.targetを含めることもできます。

"Alternatively"に注意してください。

したがって、おそらく次のファイルを作成する必要があります:/etc/systemd/system/ypbind.service.d/waitfornetwork.conf

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

この答えは可能な解決策です。 保証されたソリューションではありません。

2
moebius_eye