LINUX.ORG.RU
ФорумAdmin

Systemd and wait ...

 ,


1

1

Переставил один из самба серверов с CentOS 6 на CentOS 7 и теперь сервер smb не стартует при перезагрузке. Пишет что не может взять домен с сервера ldap. Если после загрузки сделать команду systemctl start smb то все нормально.

Как указать systemd чтобы сервис smb стартовал с задержкой ?

★★★★★

Последнее исправление: mx__ (всего исправлений: 1)

Ты в теги systemd добавь. Придет intelfx, он ходячая шпаргалка по с-д, хоть и доведенная до ручки толпами хейтеров. Но я не видел ниодного вопроса про с-д, на который бы он не ответил (ответ может не нравиться, но тут уж ничего не попишешь).

Deleted
()

Как указать systemd чтобы сервис smb стартовал с задержкой ?

да, так можно сделать, создав таймер с OnBootSec=<задержка>, но это костыль. По-хорошему нужно прописать зависимость от сервиса, конфигурирующего сеть. Вот что пишут в archwiki (правда для клиентов, но тем не менее):

You may need to enable systemd-networkd-wait-online.service or NetworkManager-wait-online.service (depending on your setup) to proper enable booting on start-up.

и

If you want to use a hostname for the server you want to share (instead of an IP address), add systemd-resolved.service to After and Wants

anonymous
()

Забудь про «задержки». Это готовый рецепт для гейзенбагов и прочих гонок. Как советуют выше, нужно добавить к smb.service ожидание запуска сети — т. е. Wants=/After= зависимость от юнита, который будет ждать поднятия сети. Отсюда вопрос. Как сеть устроена? Чем поднимается?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Это сервер и поднимается : network

Причем когда был апрегрейд с CentOS 7.4 то 7.5 то автоматом добавили симлинк ( ну типа включили ) : NetworkManager-wait-online.service

Но один фиг что раньше smb не поднимался при перезагрузке что сейчас :( Ну это понятно у меня же не NM поднимает сеть.

Вообще не понятно ситуация, почему я без systemd не чего не делал и все работало а теперь должен что то делать. Баг что ли ?

---

лог smb при рестарте:

[2018/05/16 19:51:19.458753, 0] ../source3/passdb/pdb_interface.c:180(make_pdb_method_name) pdb backend ldapsam:«ldap://389ds.ххх/ ldap://server-2.ххх/» did not correctly init (error was NT_STATUS_CANT_ACCESS_DOMAIN_INFO)

log smb при поднятии ручками:

[2018/05/16 20:44:06.617658, 2] ../source3/passdb/pdb_ldap_util.c:281(smbldap_search_domain_info) smbldap_search_domain_info: Searching for:[(&(objectClass=sambaDomain)(sambaDomainName=XXX))]

---

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от anonymous

systemd-networkd-wait-online.service

Спасибо. Нужно будет почитать в эту сторону ... а то не совсем понял чем отличается ХОЧЕТ от ПОСЛЕ.

P.S. Кстати почему 7.5 запихала ЭТО в network-online.target.wants ? Почему то думал что при enable оно пихается в multi-user.target.want ...

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

И еще инфа для кучи :

multi-user.target @1min 23.216s
└─haspd.service @19.804s +25.649s
  └─network-online.target @19.801s
    └─network.target @19.751s
      └─network.service @14.692s +5.058s
...

mx__ ★★★★★
() автор топика
Ответ на: комментарий от mx__

Видел в Debian 10 aka Buster aka testing ifupdown-wait-online.service. Так-то вроде для всех рулилок сетью подобный юнит сделали.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Вопрос стоит несколько иначе.

Зачем в строке smb.service After=... network.target ...

Если ему пофигу есть соединение или нет ? Типа мы проконтролировали что network поднялся а есть сетка или нет нам плевать, так что ли ?

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

Опять же не очень понятно что означает в smb.service :

After=syslog.target network.target nmb.service winbind.service
Если видно что :
...
659ms nmb.service
...
279ms smb.service
...

mx__ ★★★★★
() автор топика
Ответ на: комментарий от Radjah

Насколько я понял в Шапке нет : systemd-networkd-wait-online.service И чего то подобного.

Но судя по выводу выше network-online.target @19.801s оно уже внутри и поднимается раньше.

Могу ошибаться ...

mx__ ★★★★★
() автор топика
Ответ на: комментарий от Nastishka

Выглядит как то коряво. Хотя у меня у меня и не опенлдап но оба моих 389ds лдапа на других серверах ...

P.S. У меня были подозрения на SSSD но по идее внутренняя идентификация не должна быть связана с идентификацией в самбе сервере.

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 2)
Ответ на: комментарий от mx__

Посмотри юниты на предмет *-wait-online.service. systemd-networkd-wait-online.service используется, когда сетью systemd-networkd рулит.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Я же ВАМ писал. Такого в ШАПКЕ нет.

find /usr/lib/systemd/ -name *wait*
/usr/lib/systemd/system/NetworkManager-wait-online.service
/usr/lib/systemd/system/plymouth-quit-wait.service
/usr/lib/systemd/system/chrony-wait.service
/usr/lib/systemd/system/multi-user.target.wants/plymouth-quit-wait.service

И судя по blam который выводит : network-online.target это штука сразу внутри.

mx__ ★★★★★
() автор топика
Ответ на: комментарий от Radjah

А внутри network.service что?

хм. Начал глядеть и .... в шоке.

find /usr/lib/systemd/ -name *netwo*
/usr/lib/systemd/system/network.target
/usr/lib/systemd/system/network-online.target
/usr/lib/systemd/system/network-pre.target

cat /usr/lib/systemd/system/network-online.target
[Unit]
Description=Network is Online
Documentation=man:systemd.special(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
After=network.target

cat /usr/lib/systemd/system/network.target
[Unit]
Description=Network
Documentation=man:systemd.special(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
After=network-pre.target
RefuseManualStart=yes

cat /usr/lib/systemd/system/network-pre.target
[Unit]
Description=Network (Pre)
Documentation=man:systemd.special(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
RefuseManualStart=yes

Ну и напоследок ... чтобы уж добить :)

systemctl is-enabled network.service
network.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig network --level=5
enabled

mx__ ★★★★★
() автор топика
Ответ на: комментарий от Radjah

Ок. Спасибо.

systemctl cat network.service
# /run/systemd/generator.late/network.service
# Automatically generated by systemd-sysv-generator

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/rc.d/init.d/network
Description=LSB: Bring up/down networking
Before=runlevel2.target
Before=runlevel3.target
Before=runlevel4.target
Before=runlevel5.target
Before=shutdown.target
Before=network-online.target
Before=network.target
After=iptables.service
After=ip6tables.service
After=NetworkManager-wait-online.service
After=NetworkManager.service
After=network-pre.target
Wants=network-online.target
Wants=network.target
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/rc.d/init.d/network start
ExecStop=/etc/rc.d/init.d/network stop
ExecReload=/etc/rc.d/init.d/network reload
mx__ ★★★★★
() автор топика
Ответ на: комментарий от mx__

Я, вот, посмотрел на это и мне уже захотелось купить техподдержку от редхат. На всякий случай.

ugoday ★★★★★
()
Ответ на: комментарий от Deleted

Молодец парень. Такой любви к говну я не видел после любви к дебиану.

time_LORd
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.