以下は 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 が起動します。