這是 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" =====
奇怪的是,上週我的兩個節點上發生了這種情況,但是當我再次啟動它們時,第一個節點工作了,第二個節點給了我這個錯誤。
我正在啟用腳本
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 輸出表示「service nmbd start」在嘗試執行 systemd 作業時掛起。
如果您在終端機中嘗試“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。