Bug 47595 - У серверов по умолчанию д.б. выключены suspend/hibernate
Summary: У серверов по умолчанию д.б. выключены suspend/hibernate
Status: NEW
Alias: None
Product: Альт Сервер
Classification: Distributions
Component: Установка (show other bugs)
Version: 10.1
Hardware: all Linux
: P5 normal
Assignee: Evgeny Sinelnikov
QA Contact: qa-p8@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-09-14 21:56 MSK by Leonid Krivoshein
Modified: 2023-10-03 19:45 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Leonid Krivoshein 2023-09-14 21:56:23 MSK
Если кому-то надо, пусть включают, но мне о таких неизвестно.

P.S.: antohami@ предложил сделать фичей в m-p.
Comment 1 Антон Мидюков 2023-09-14 22:00:26 MSK
(Ответ для Leonid Krivoshein на комментарий #0)
> Если кому-то надо, пусть включают, но мне о таких неизвестно.
> 
> P.S.: antohami@ предложил сделать фичей в m-p.

Не в m-p (это невозможно, так как система ставится из пакетов), а сделать installer-feature-no-sleep, которая будет маскировать hibernate.target и suspend.target postinstall-скриптом.
Comment 2 Антон Мидюков 2023-09-14 22:09:12 MSK
(Ответ для Антон Мидюков на комментарий #1)
> (Ответ для Leonid Krivoshein на комментарий #0)
> > Если кому-то надо, пусть включают, но мне о таких неизвестно.
> > 
> > P.S.: antohami@ предложил сделать фичей в m-p.
> 
> Не в m-p (это невозможно, так как система ставится из пакетов), а сделать
> installer-feature-no-sleep, которая будет маскировать hibernate.target и
> suspend.target postinstall-скриптом.

Хотя можно сделать не фичей, а в связке m-p и installer. Добавить в инсталяторе поддержку списка сервисов (postinstall.d/65-setup-services.sh), которые нужно замаскировать и через m-p их задавать.
Comment 3 Alexey Shabalin 2023-09-15 01:03:27 MSK
А чем эти юниты мешают?
Кто их запускает на сервере?
Comment 4 Leonid Krivoshein 2023-09-15 03:52:18 MSK
(Ответ для Alexey Shabalin на комментарий #3)
> А чем эти юниты мешают?
Тем, что на серверах эти функции не нужны и даже вредны, на большинстве серверных железок они просто не работают.

> Кто их запускает на сервере?
Они включены в systemd по дефолту, их надо маскировать.
Comment 5 Evgeny Sinelnikov 2023-09-15 05:24:49 MSK
Если маскирование отдельных юнитов требует специальной ручки, то её нужно добавить.
Comment 6 Leonid Krivoshein 2023-09-27 22:14:30 MSK
Про systemctl mask hibernate.target jqt4@ в одной задаче год назад сказал:
> Я протестировал такой способ на Delta Computers Bober/Rhodeola с
> alt-workstation-10.0-aarch64.iso и обнаружил недостаток - если подать
> команду от root:
> echo disk > /sys/power/state
> то происходит переход в hibernate и компьютер отключается.
Но речь была о специфичном aarch64, где suspend уже отключен в ядре. Не знаю, стоит ли придавать значение ещё и такой возможности ввести машину в спячку. По сути root может обойти маскировку, отправив руками deep, disk или что-то ещё:

https://www.kernel.org/doc/Documentation/power/states.txt
Comment 7 Антон Мидюков 2023-09-28 05:20:31 MSK
(Ответ для Leonid Krivoshein на комментарий #6)
> Про systemctl mask hibernate.target jqt4@ в одной задаче год назад сказал:
> > Я протестировал такой способ на Delta Computers Bober/Rhodeola с
> > alt-workstation-10.0-aarch64.iso и обнаружил недостаток - если подать
> > команду от root:
> > echo disk > /sys/power/state
> > то происходит переход в hibernate и компьютер отключается.
> Но речь была о специфичном aarch64, где suspend уже отключен в ядре. Не
> знаю, стоит ли придавать значение ещё и такой возможности ввести машину в
> спячку. По сути root может обойти маскировку, отправив руками deep, disk или
> что-то ещё:
> 
> https://www.kernel.org/doc/Documentation/power/states.txt

Не стоит.
Comment 8 Alexey Shabalin 2023-10-02 21:11:52 MSK
Я бы закрыл как NOTABAG. Не надо глобально и системно маскировать никакие сервисы.
Эти сервисы автоматически никак не запускаются, их можно запустить только специально вручную. Если админ хочет это сделать, пусть делает.
Comment 9 Leonid Krivoshein 2023-10-02 22:08:50 MSK
(Ответ для Alexey Shabalin на комментарий #8)
> Я бы закрыл как NOTABAG. Не надо глобально и системно маскировать никакие
> сервисы.
> Эти сервисы автоматически никак не запускаются, их можно запустить только
> специально вручную. Если админ хочет это сделать, пусть делает.
Ошибка в том, что "из коробки" на всех серверных дистрибутивах таргеты включены. Скорее всего, дело рук systemd, а не выпускающих. Если это возможно исправить на уровне systemd, можно перевесить, и тогда включать таргеты в тех дистриубитивах, где это нужно.
Comment 10 Alexey Shabalin 2023-10-02 23:05:01 MSK
Это не ошибка. Так и задумано. Эти таргеты должны быть включены. Некоторые сервисы запускаются именно в этих таргетах. Или выключаются в этих таргетах. Замаскировав эти таргеты вы не сможете корректно выключить сервер.
Comment 11 Leonid Krivoshein 2023-10-03 17:07:43 MSK
По моему опыту маскировка hibrnate.target и suspend.target никогда ранее не приводила к вышеописанным побочным эффектам, как невозможность корректного выключения компьютера. Если допустить, что маскировака этих двух таргетов всё же неидеальна, тогда нужен иной способ решения проблемы, поскольку suspend и hibernate включены в серверных дистрибутивах "из коробки". Но другого способа я не знаю.
Comment 12 Антон Мидюков 2023-10-03 17:30:17 MSK
(Ответ для Leonid Krivoshein на комментарий #11)
> По моему опыту маскировка hibrnate.target и suspend.target никогда ранее не
> приводила к вышеописанным побочным эффектам, как невозможность корректного
> выключения компьютера. Если допустить, что маскировака этих двух таргетов
> всё же неидеальна, тогда нужен иной способ решения проблемы, поскольку
> suspend и hibernate включены в серверных дистрибутивах "из коробки". Но
> другого способа я не знаю.

Другой способ в /etc/systemd/sleep.conf:
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
Comment 13 jqt4@altlinux.org 2023-10-03 19:45:33 MSK
(Ответ для Evgeny Sinelnikov на комментарий #5)
> Если маскирование отдельных юнитов требует специальной ручки, то её нужно
> добавить.

Предлагаю такую реализацию:
https://git.altlinux.org/people/jqt4/packages/?p=installer.git;a=commitdiff;h=e91b442efbd5790e659bad4a67ede48181171c92
https://git.altlinux.org/people/jqt4/public/?p=mkimage-profiles-rpi.git;a=commitdiff;h=0467d2260bfc84b246d4b27ecd4acfa5440472a4