LINUX.ORG.RU

Автозапуск slurmd

 , ,


0

1

Вычислительный нод получает от управляющего узла по tftp образ настроенной системы(настроенной через chroot) и разворачивает в своей оперативной памяти. В системе подмонтируются некоторые общие папки. А также поднимаются некоторые сервисы. Один из них slurmd. Причём конфиг файл /etc/slurm-llnl/slurm.conf лежит как раз в подмортированной общей папке, а в папке образа системы нода символьная ссылка на этот файл. Раньше система, передаваемая на ноды была Debian 8. Теперь решил обновить по крайней мере до Debian 9. Раньше для надёжности, чтобы сервис slurmd поднялся, кроме

systemctl enable slurmd.service

в rc.local прописывал

systemctl start slurmd.service
systemctl start slurmd.service

Сейчас так как rc.local в Debian 9 по умолчанию выключен и можно его поднимать только отдельно, то решил посмотреть, что будет если ограничится только

systemctl enable slurmd.service

В результате slurmd при запуске системы не поднимается, а systemctl status slurmd выдаёт ошибку

slurmd.service - Slurm node daemon
   Loaded: loaded (/lib/systemd/system/slurmd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
Condition: start condition failed at Tue 2019-10-22 18:18:51 MSK; 40s ago
           └─ ConditionPathExists=/etc/slurm-llnl/slurm.conf was not met
     Docs: man:slurmd(8)

Т.е. как я понимаю проблема в том, что конфиг файл не успевает подмонтироваться. Причём, если после загрузки системы зайти на нод и руками запустить systemctl start slurmd.service , то slurmd запускается. Не знаю как решить эту проблему, но как временное решение решил запихнуть конфиг файл не ссылкой, а целиком в образ. В результате иногда сервис поднимается, но чаще всего выдаёт ошибку

● slurmd.service - Slurm node daemon
   Loaded: loaded (/lib/systemd/system/slurmd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2019-10-22 18:26:23 MSK; 56s ago
     Docs: man:slurmd(8)
  Process: 610 ExecStart=/usr/sbin/slurmd $SLURMD_OPTIONS (code=exited, status=1/FAILURE)

Oct 22 18:26:23 cn5 systemd[1]: Starting Slurm node daemon...
Oct 22 18:26:23 cn5 systemd[1]: slurmd.service: Control process exited, code=exited status=1
Oct 22 18:26:23 cn5 systemd[1]: Failed to start Slurm node daemon.
Oct 22 18:26:23 cn5 systemd[1]: slurmd.service: Unit entered failed state.
Oct 22 18:26:23 cn5 systemd[1]: slurmd.service: Failed with result 'exit-code'.

Причём если запускать его руками после старта системы, то всё работает.

Как можно поправить это?

в rc.local прописывал systemctl start slurmd.service

Сделайте меня развидеть это.

Т.е. как я понимаю проблема в том, что конфиг файл не успевает подмонтироваться

Не знаю как решить эту проблему

Директивой RequiresMountsFor= в секции [Unit] (работает только для точек монтирования, прописанных в fstab без noauto).

В противном случае Requires=/After= для конкретных .mount-юнитов.

В результате иногда сервис поднимается, но чаще всего выдаёт ошибку

Логи ошибочного запуска где?

Как можно поправить это?

В общем случае — ищи неучтённые зависимости и прописывай их в юнит. Может быть, какие-то ещё общие папки?

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

Похоже помогло, спасибо. После добавления директивы исчезла и проблема с ошибкой, а не только с конфигом. Не знаю точно какие зависимости я не учёл, возможно и правда не хватало какой-то общей папки. Сейчас ещё несколько раз по перезапускаю, чтобы убедиться, но скорее всего проблема решена.

dnkosiris ()