web-dev-qa-db-ja.com

Centos 7 autofsマウントが再起動直後に機能しない

Centos 7でautofsをセットアップしました。ただし、再起動後、/ home /ディレクトリをマウントするのに、cdを実行しても少し時間がかかったようです。 3回試行した後でのみ成功します。

[root@localhost ~] cd /home/<user>
-bash: cd: /home/<user>: No such file or directory

そして、autofsが有効になっているので、再起動後に起動するはずです。

[root@localhost etc]# systemctl status autofs
autofs.service - Automounts filesystems on demand
   Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled)
   Active: active (running) since Tue 2015-07-21 10:34:38 HKT; 1h 13min ago
  Process: 1379 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid (code=exited, status=0/SUCCESS)
 Main PID: 1385 (automount)
   CGroup: /system.slice/autofs.service
           └─1385 /usr/sbin/automount --pid-file /run/autofs.pid

Jul 21 10:34:38 localhost.localdomain systemd[1]: Starting Automounts filesystems on demand...
Jul 21 10:34:38 localhost.localdomain automount[1385]: setautomntent: lookup(sss): setautomntent: No such file or directory
Jul 21 10:34:38 localhost.localdomain systemd[1]: Started Automounts filesystems on demand.

ここに/etc/auto.masterがあります:

/misc /etc/auto.misc
/net  -hosts
+dir:/etc/auto.master.d
/home /etc/auto.home
/san /etc/auto.san
+auto.master

/etc/auto.master:

* -fstype=nfs,rw 192.254.100.4:/home_external/user_home_local/&

/etc/auto.san:

mysql_db 192.254.100.4:/san_external/mysqldb

同様の理由で、リブート後にmysqlが起動すると、/ san/mysql_db /に「cd」できないというエラーが表示されます。ただし、マシンの起動後にmysqlで手動で再起動すると機能します。何か案は?ありがとうvm

5
surfcode

私は似たようなことを経験しました。

つまり、自動マウントされたホームディレクトリを持つユーザーのログインは、「systemctl start rpcbind」を使用してrpcbindを手動で開始するまで、リブート直後にハングしました。これは、今日のすべての最新のCent7更新に伴います。

Autofsユニットファイルをrpcbindと他のいくつかのサービスに依存するように変更すると、問題が解決することがわかりました。以下の「After」コードブロックの「Requires = network.target rpc-statd.service rpcbind.service」行を参照してください...

以前:/usr/lib/systemd/system/autofs.service

[Unit]
Description=Automounts filesystems on demand
After=network.target ypbind.service sssd.service

[Service]
Type=forking
PIDFile=/run/autofs.pid
EnvironmentFile=-/etc/sysconfig/autofs
ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid
ExecReload=/usr/bin/kill -HUP $MAINPID
TimeoutSec=180

[Install]
WantedBy=multi-user.target

後:/usr/lib/systemd/system/autofs.service

[Unit]
Description=Automounts filesystems on demand
Requires=network.target rpc-statd.service rpcbind.service
After=network.target ypbind.service sssd.service

[Service]
Type=forking
PIDFile=/run/autofs.pid
EnvironmentFile=-/etc/sysconfig/autofs
ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid
ExecReload=/usr/bin/kill -HUP $MAINPID
TimeoutSec=180

[Install]
WantedBy=multi-user.target

ハットのヒント: https://www.centos.org/forums/viewtopic.php?f=47&t=51789

8

これが問題の根本的な原因です。

  • systemdは最初にsssdを起動します
  • sssdは、sssdでフォークプロセスとして構成されます。 sssdは、完全に読み込まれたときにsystemdに信号を送りません。起動後、systemdはsssdがロードされていると見なし、起動プロセスを続行します。
  • 場合によっては、sssdがロードされ、autofs/passwd/... nssクエリへの応答が始まるまでに時間がかかることがあります。最大5秒かかるシステムを見てきました。
  • sssdがロードされる前にautofsが起動した場合、autofsマップは使用できません。

これを修正する方法はいくつかあります。

  • クリーンな解決策は、sssdがsystemdシグナリングを実装して、完全に読み込まれたときにsystemdに通知できるようにすることです。
  • sssdの読み込みを高速化してください。 sssd構成をチェックして、ロードが非常に遅い理由があるかどうかを確認してください。
  • ハックな解決策は、autofsが起動する前に十分な遅延を人工的に追加することです。 (これは前の答えがどのように機能するかです。autofsの前に別のサービスを追加するだけなので、sssdはさらに多くの時間を受け取ります。)これは場合によっては十分ではありません。別の解決策はバグ https://bugzilla.redhat.com/show_bug.cgi?id=1189767 で提案されています。追加

    ExecStartPre=/bin/sleep 10
    

    あなたのsssd.unitに

2
Bram Vandoren