CTDB Samba スクリプトが起動に失敗する

CTDB Samba スクリプトが起動に失敗する

以下は tail -f /var/log/ctdb/log.ctdb の出力です。

2020/01/27 18:52:52.317670 ctdbd[3330]: Running the "startup" event.
2020/01/27 18:53:22.323208 ctdbd[3330]: startup event failed
2020/01/27 18:53:22.439563 ctdb-eventd[3332]: event_debug: ===== Start of hung script debug for PID="3678", event="startup" =====
2020/01/27 18:53:22.439703 ctdb-eventd[3332]: event_debug: pstree -p -a 3678:
2020/01/27 18:53:22.439764 ctdb-eventd[3332]: event_debug: 50.samba.script,3678 /etc/ctdb/events/legacy/50.samba.script startup
2020/01/27 18:53:22.439822 ctdb-eventd[3332]: event_debug:   `-service,3758 /sbin/service nmbd start
2020/01/27 18:53:22.439877 ctdb-eventd[3332]: event_debug:       `-service,3762 /sbin/service nmbd start
2020/01/27 18:53:22.439953 ctdb-eventd[3332]: event_debug:           |-sed,3764 -ne s/\.socket\s*[a-z]*\s*$/.socket/p
2020/01/27 18:53:22.440012 ctdb-eventd[3332]: event_debug:           `-systemctl,3763 list-unit-files --full --type=socket
2020/01/27 18:53:22.440068 ctdb-eventd[3332]: event_debug: ---- ctdb scriptstatus startup: ----
2020/01/27 18:53:22.440133 ctdb-eventd[3332]: event_debug: 00.ctdb              OK         0.017 Mon Jan 27 18:52:52 2020
2020/01/27 18:53:22.440203 ctdb-eventd[3332]: event_debug: 01.reclock           OK         0.010 Mon Jan 27 18:52:52 2020
2020/01/27 18:53:22.440259 ctdb-eventd[3332]: event_debug: 05.system            OK         0.010 Mon Jan 27 18:52:52 2020
2020/01/27 18:53:22.440314 ctdb-eventd[3332]: event_debug: 10.interface         OK         0.064 Mon Jan 27 18:52:52 2020
2020/01/27 18:53:22.440382 ctdb-eventd[3332]: event_debug: 50.samba             TIMEDOUT   Mon Jan 27 18:52:52 2020
2020/01/27 18:53:22.440438 ctdb-eventd[3332]: event_debug:   OUTPUT:
2020/01/27 18:53:22.440492 ctdb-eventd[3332]: event_debug: event daemon helper failed with error 46
2020/01/27 18:53:22.440558 ctdb-eventd[3332]: event_debug: ===== End of hung script debug for PID="3678", event="startup" =====

奇妙なことに、これは先週 2 つのノードで発生していましたが、両方を再度起動すると、最初のノードは機能しましたが、2 番目のノードではこのエラーが発生します。

スクリプトを有効にするには

ctdb event script enable legacy 50.samba

これが私のsmb.confです

[global]
        workgroup = WORKGROUP2
        clustering = yes
        netbios name = gluster
        idmap backend = tdb2

[share]
        path = /mnt/gfs/share
        valid users = fsuser
        readonly = no
        browsable = yes

私は最新の ctdb と samba を搭載した ubuntu サーバー 19.10 を実行しています。共有ファイル システムは glusterfs であり、その部分は正常に動作しており、ping_pong テストに合格しています。

journalctl -bを使用してもこのメッセージが表示されます

Dec 03 16:28:18 gfs1 systemd[1]: /lib/systemd/system/dbus.socket:4: ListenStream= references a path below legacy directory /var/run/, updating /var/run/dbus/system_bus_socket → /run/dbus/system_bus_socket; please update the unit file acc
Dec 03 16:28:18 gfs1 systemd[1]: /lib/systemd/system/smbd.service:9: PIDFile= references a path below legacy directory /var/run/, updating /var/run/samba/smbd.pid → /run/samba/smbd.pid; please update the unit file accordingly.
Dec 03 16:28:18 gfs1 systemd[1]: /lib/systemd/system/nmbd.service:9: PIDFile= references a path below legacy directory /var/run/, updating /var/run/samba/nmbd.pid → /run/samba/nmbd.pid; please update the unit file accordingly.
Dec 03 16:28:18 gfs1 systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.

答え1

pstree の出力は、systemd の処理を​​実行しようとしたときに「service nmbd start」がハングしていることを示しています。

ターミナルで「service nmbd start」を実行するとどうなりますか? 「systemctl start nmbd」の場合はどうでしょうか?

答え2

これを回避する方法を見つけました。ctdb samba レガシー スクリプトを無効にして、通常の systemctl 起動スクリプトを使用します。

sudo systemctl edit ctdb

以下を追加して保存して終了します

[Unit]
Require=mnt-gfs.mount
After=mnt-gfs.mount

.mount を見つけるには、このコマンドを実行し、マウント パッチを glusterfs またはその他の分散ファイル システムのマウント ポイントに切り替えます。

sudo systemctl list-units | grep '/mnt/gfs' | awk '{ print $1 }'

その後は、smbd および nmbd サービス ファイルを編集するだけです。

sudo systemctl edit smbd.service
sudo systemctl edit nmbd.service

次に、これを上記の両方のファイルに追加し、それぞれを保存して終了します。

[Unit]
After=ctdb.service

ctdb が起動して実行されていることを確認し、このコマンドを実行します (実行されていない場合は、systemctl start ctdb で起動します)

sudo ctdb event script enable legacy 50.samba

ノードを再起動すると、分散ファイル システム共有がマウントされ、ctdb が起動し、次に smbd と nmbd が起動します。

関連情報