Eugene Berdnikov <b...@protva.ru> wrote: > On Fri, Sep 15, 2023 at 10:11:34AM +0300, Andrey Jr. Melnikov wrote: > > Eugene Berdnikov <b...@protva.ru> wrote: > > > и в итоге сделал для себя вывод, что проще поставить на хост systemd > > > чем 100 раз отжиматься... Под systemd оно сразу и shutdown/reboot > > > нормально > > > отрабатывало, и вложенные контейнеры запускало, и ещё чего-то там делало, > > > что под SysV лечилось лишь напильником. > > Хахаха... Ты нашёл замшелую граблю обильно присыпанную пылью веков. Всё дело > > в том, что lxc использует SIGPWR для останова контенйнеров, а в inittab'e от > > SysV-init прописано обработчик "pf::powerwait:/etc/init.d/powerfail start"
> Если такая грабля существовала, это не то, с чем сталкивался я... > Насчёт SIGPWR не знаю, скорее всего он используется, но конечный результат > зависит и от процесса, управляющего контейнером, и от поведения init'а > внутри контейнера. Вот у меня контейнеры с дебианами примерно от 2008 года > (с апдейтами, да), с такими строчками в inittab'e: > # What to do when the power fails/returns. > pf::powerwait:/etc/init.d/powerfail start > pn::powerfailnow:/etc/init.d/powerfail now > po::powerokwait:/etc/init.d/powerfail stop > причём никаких /etc/init.d/power* нет, а системы нормально гасятся и > поднимаются. Под systemd. Так systemd плевать хотел на /etc/initttab. Он им не пользуется. И на SIGPWR тоже, т.к. у Поттеринга на него алергия: -- cut -- My recommendatin: don't bother with SIGPWR. Traditionally on UNIX UPS software sends SIGPWR to PID 1 to initiate some special kind of shutdown operation. But it's very vaguely defined only, and one wonders why a normal shutdown isn't enough here, and why to bounce this off PID 1 with a special UNIX signal even... I am pretty sure that power management software that runs in userspace really shouldn't make use of this anymore. It should just request a normal shutdown. The only reason why one would want to bother with SIGPWR at all is that some really power-related old kernel drivers send SIGPWR to PID 1 too. >From the systemd PoV: this stuff is ugly legacy crap that only exists for historic reasons and was never really well-defined in its behavour. It mostly appears to be a concept that exists only because Linux never had a useful IPC that was accessible from both kernelspace and userspace in a sane way... In systemd, we don't want anything to do with it, but some legacy folks really think it's superduper important. Hence we simply map it to a target unit, and enable users to map it to whatever they want to map it, but don't do anything smart about it at all on our own. I think it would be best of people would just forget about it... Lennart -- cut -- так что, там используется SIGRTMIN+4, потмоу что вот. > Когда я игрался с подобными контейнерами под SysV, там было примерно > такое: по lxc-stop контейнер шустро сворачивается, а потом lxc-stop > висит 2-3 минуты, ожидая какого-то ответа из сокета, и выдаёт > невразумительное сообщение об ошибке. При этом в контейнере ничего > не ломается. Там было 2 проблемы - кривость в использовании io_uring, и ещё какие-то проблемы с управляющим терминалом (точнее с детачингом от него демонов, которые ну очень хотят в него отсылать сообщения). Но меня эта проблема не волнует - контейнеры останавливаются редко, спешки в этом никакой нет. А то, что надо прям сейчас - подхватит другой контейнер, после того, как init убъет VRRP демона. А что он там будет делать дальше - никого уже не волнует. > И много подобных неудобств и граблей было, всех уже не вспомнить... > > Если сегодня под SysV инфраструктура lxc нормально живёт, это замечательно, > но мне надо было вчера, и для этих задач я для себя выбрал systemd. У меня и работает со вчера. Только пришлось немного посмотреть, почему оно так. А верить в магию systemd "просто поставь его" - это не наш метод.