私の特定のケースではremote-fs
、すべてがglusterfs
完全に起動した後にユニットを起動します。
私のsystemdファイル:
glusterfs
ターゲット:
node04:/usr/lib/systemd/system # cat glusterfsd.service
[Unit]
Description=GlusterFS brick processes (stopping only)
After=network.target glusterd.service
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes
ExecStop=/bin/sh -c "/bin/killall --wait glusterfsd || /bin/true"
ExecReload=/bin/sh -c "/bin/killall -HUP glusterfsd || /bin/true"
[Install]
WantedBy=multi-user.target
remote-fs
ターゲット:
node04:/usr/lib/systemd/system # cat remote-fs.target
[Unit]
Description=Remote File Systems
Documentation=man:systemd.special(7)
Requires=glusterfsd.service
After=glusterfsd.service remote-fs-pre.target
DefaultDependencies=no
Conflicts=shutdown.target
[Install]
WantedBy=multi-user.target
OK、すべてのGlusterデーモンが正常に起動し、NFSを介してGlusterファイルシステムをマウントしたいのですが、GlusterのNFS共有はglusterfs.service
起動後すぐにではなく、数秒後に準備できるため、通常、ディレクティブremote-fs
に関してもマウントできません。Requires
After
ログを見てみましょう:
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS, a clustered file-system server.
Apr 14 16:16:22 node04 systemd[1]: Starting GlusterFS brick processes (stopping only)...
Apr 14 16:16:22 node04 systemd[1]: Starting Network is Online.
Apr 14 16:16:22 node04 systemd[1]: Reached target Network is Online.
Apr 14 16:16:22 node04 systemd[1]: Mounting /stor...
ここではすべてが問題ありません。リモートファイルシステム(/ stor)は、glusterfsの開始後にマウントされているようです。これは、ユニットファイルに従っているはずなのに…しかし、次の行は次のとおりです。
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
何?GlusterFSはこの瞬間だけ準備ができました!そして、私たちは見ます:
//...skipped.....
Apr 14 16:16:23 node04 mount[2960]: mount.nfs: mounting node04:/stor failed, reason given by server: No such file or directory
Apr 14 16:16:23 node04 systemd[1]: stor.mount mount process exited, code=exited status=32
Apr 14 16:16:23 node04 systemd[1]: Failed to mount /stor.
Apr 14 16:16:23 node04 systemd[1]: Dependency failed for Remote File Systems.
Apr 14 16:16:23 node04 systemd[1]: Unit stor.mount entered failed state.
systemdがストレージをマウントしようとしたときにNFSサーバーの準備ができていなかったため、マウントに失敗しました。
systemd起動プロセスの非決定的な性質により、起動時にこのファイルシステムのマウントが成功することがあります(10回の起動のうち約1回)。
onbootマウントが失敗した場合、サーバーにログインして/ storディレクトリを手動でマウントできるため、GlusterのNFSサービスは正常に機能しているようです。
では、ログの後に行が表示されたremote-fs
後glusterfsd
、つまり開始する方法はStarted GlusterFS brick processes
?
remote-fs
は最後のターゲットの1つであるように思われるため、実際にはが必要としない別の「回避策」ターゲットの後に開始することはできませんremote-fs
。
glusterfsd.service
ユニットファイルに本当に混乱しています。実際にはサービスを開始していないようで、実際にはglusterfsd
プロセスを強制終了します。他のgluster関連のユニットファイルはありますか?
stor.mount
ユニットを見せてもらえますか?
ExecStartPre=<command>
Unitセクションにプロパティを追加できますglusterfsd.service
か?それはglusterfsd.service
成功を示して、を活性化するのを防ぐかもしれませんremotefs.target
。