Скрипт 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" =====

Странно то, что это происходило на моих двух узлах на прошлой неделе, но когда я снова запустил их оба, первый узел заработал, а второй узел выдал мне эту ошибку.

Я включаю скрипт с помощью

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

Я использую ubuntu server 19.10 с последними ctdb и samba. Общая файловая система — 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.

Связанный контент