Script CTDB Samba falhando ao iniciar

Script CTDB Samba falhando ao iniciar

Aqui está a saída de 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" =====

O estranho é que isso estava acontecendo em meus dois nós na semana passada, mas quando liguei os dois novamente, o primeiro nó funcionou e o segundo nó me deu esse erro.

Estou habilitando o script com

ctdb event script enable legacy 50.samba

Aqui está meu 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

Estou executando o servidor Ubuntu 19.10 com o ctdb e o samba mais recentes. O sistema de arquivos compartilhado é glusterfs e essa parte está funcionando como deveria e passa no teste ping_pong.

Também estou vendo esta mensagem usando 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.

Responder1

A saída pstree sugere que "service nmbd start" está travando quando tenta fazer coisas no systemd.

O que acontece se você tentar “service nmbd start” em um terminal? Que tal "systemctl iniciar nmbd"?

Responder2

Eu encontrei uma solução para isso. Eu desativo o script legado do ctdb samba e uso os scripts normais de inicialização do systemctl.

sudo systemctl edit ctdb

Adicione o seguinte e salve e saia

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

Para descobrir seu .mount você pode executar este comando e trocar o patch de montagem com seu glusterfs ou outro ponto de montagem de sistemas de arquivos distribuídos.

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

Então é só editar os arquivos de serviço smbd e nmbd.

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

Em seguida, adicione isso aos dois arquivos acima, salve e saia de cada um

[Unit]
After=ctdb.service

Certifique-se de que o ctdb esteja funcionando e execute este comando (inicie-o com systemctl start ctdb se não estiver em execução)

sudo ctdb event script enable legacy 50.samba

Reinicie seu nó e ele deverá montar seu compartilhamento de sistema de arquivos distribuído, iniciar ctdb e então iniciar smbd e nmbd.

informação relacionada