Поиск причины отключения/сна

Вопрос или проблема

Мой сервер работает на Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 GNU/Linux.

Примерно раз в день, иногда раз в два дня он отключается – на самом деле он не выключается, кажется, что он засыпает – кнопка питания мигает, но я не могу его загрузить, нажав на кнопку питания или сброса, мне нужно отключить электричество и снова включить, тогда я могу его загрузить.

В чем может быть причина этого? Как я могу это исправить?

Существует несколько причин для этого:

  • Это немного очевидно: но ваш компьютер не находится в режиме энергосбережения? Вы можете проверить это, зайдя в следующий каталог:

    cd /etc/pm
    

    Проверьте, есть ли здесь какие-либо запланированные конфигурации сна или гибернации. Если они есть, измените их на перезагрузку вместо сна или просто удалите, если это безопасно.

  • Ваша блок питания может быть проблемой. Она могла быть повреждена перепадом напряжения. Компьютер был подключен к сетевому фильтру или ИБП, когда возникла проблема? Если нет, то было бы неплохо иметь одно, особенно учитывая, что это сервер. Если ваш БП был поврежден, возможно, он отправляет ошибочный сигнал ОС для перехода в режим гибернации или сна.

Вы можете проверить системные журналы, чтобы узнать, в чем проблема:

cat /var/log/syslog | grep "shutdown"
cat /var/log/syslog | grep "reboot"
cat /var/log/syslog | grep "sleep"
cat /var/log/syslog | grep "hibernate"

Поскольку вы используете Debian, как предложил Дэвид, посмотрите журналы pm-* в /etc/log/pm-*.
Их много, например, suspend, powersave и т. д.

Надеюсь, что между всем этим вы сможете выяснить, почему компьютер становится неотзывчивым.

Вы можете получить полезную информацию с помощью journalctl

journalctl -t systemd-sleep

пример вывода

-- Boot 695c7b97193e4d318a8bce802e37c96e --
Dec 18 07:32:47 <hostname> systemd-sleep[1242385]: Вход в состояние сна 'suspend'...
Dec 18 10:44:49 <hostname> systemd-sleep[1242385]: Система вернулась из состояния сна.
Dec 18 10:44:49 <hostname> systemd-sleep[1242642]: /dev/sda:
Dec 18 10:44:49 <hostname> systemd-sleep[1242642]:  установка уровня управления питанием APM на 0xfe (254)
Dec 18 10:44:49 <hostname> systemd-sleep[1242642]:  APM_level        = 254
Dec 18 10:44:49 <hostname> systemd-sleep[1242673]: /dev/sdb:
Dec 18 10:44:49 <hostname> systemd-sleep[1242673]:  установка уровня управления питанием APM на 0xfe (254)
Dec 18 10:44:49 <hostname> systemd-sleep[1242673]:  APM_level        = 254
-- Boot 384cbffdf7f64e53a3e3765e83cf2835 --
Dec 19 00:23:45 <hostname> systemd-sleep[345128]: Вход в состояние сна 'suspend'...
Dec 19 09:07:47 <hostname> systemd-sleep[345128]: Система вернулась из состояния сна.
Dec 19 09:07:47 <hostname> systemd-sleep[345426]: /dev/sda:
Dec 19 09:07:47 <hostname> systemd-sleep[345426]:  установка уровня управления питанием APM на 0xfe (254)
Dec 19 09:07:47 <hostname> systemd-sleep[345426]:  APM_level        = 254
Dec 19 09:07:47 <hostname> systemd-sleep[345527]: /dev/sdb:
Dec 19 09:07:47 <hostname> systemd-sleep[345527]:  установка уровня управления питанием APM на 0xfe (254)
Dec 19 09:07:47 <hostname> systemd-sleep[345527]:  APM_level        = 254

или

journalctl --list-boots

пример вывода

IDX BOOT ID                          FIRST ENTRY                  LAST ENTRY                  
-22 a9676e0c583e449a8d99767d1b9df695 Вт 2024-08-13 22:16:24 CEST Вт 2024-08-13 22:46:59 CEST
-21 6cce9e2530b8489188a36f9f4faab13d Вт 2024-08-13 22:47:58 CEST Вт 2024-08-13 23:37:17 CEST
-20 de406387cb68433195ba08f1d23a210b Ср 2024-08-14 09:33:10 CEST Ср 2024-08-14 10:02:42 CEST

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

sudo journalctl --boot

Поднимите страницу до времени приостановки и проведите исследование. В моем случае я нашел то, что искал, здесь:

Dec 19 00:20:03 <hostname> systemd[1]: Запуск sysstat-collect.service - инструмента учета системной активности...
Dec 19 00:20:03 <hostname> systemd[1]: sysstat-collect.service: Успешно деактивировано.
Dec 19 00:20:03 <hostname> systemd[1]: Завершено sysstat-collect.service - инструмент учета системной активности.
Dec 19 00:23:45 <hostname> systemd-logind[850]: Система сейчас будет приостановлена!
Dec 19 00:23:45 <hostname> NetworkManager[877]: <инфо>  [1734564225.8967] менеджер: сон: запрошен сон (сейчас: нет  включено: да)
Dec 19 00:23:45 <hostname> ModemManager[970]: <инфо>  [sleep-monitor-systemd] система собирается перейти в режим сна
Dec 19 00:23:45 <hostname> NetworkManager[877]: <инфо>  [1734564225.8970] устройство (wlp8s0): изменение состояния: недоступно -> неуправляемо (причина 'сон', s>
Dec 19 00:23:45 <hostname> NetworkManager[877]: <инфо>  [1734564225.8979] устройство (wlp8s0): установка адреса hw: сброс MAC-адреса на D4:D2:52:5D:85:77 (неуправляемо>
Dec 19 00:23:45 <hostname> gnome-shell[336633]: Система блокировки экрана заблокирована, не блокируется
Dec 19 00:23:45 <hostname> NetworkManager[877]: <инфо>  [1734564225.8991] устройство (p2p-dev-wlp8s0): изменение состояния: недоступно -> неуправляемо (причина 'сна>
Dec 19 00:23:45 <hostname> NetworkManager[877]: <инфо>  [1734564225.8996] менеджер: состояние NetworkManager теперь СОН
Dec 19 00:23:45 <hostname> systemd[1]: Достигнута цель sleep.target - Сон.
Dec 19 00:23:45 <hostname> systemd[1]: Запуск systemd-suspend.service - Приостановка системы...
Dec 19 00:23:45 <hostname> systemd-sleep[345128]: Вход в состояние сна 'suspend'...
Dec 19 00:23:45 <hostname> kernel: PM: вход в режим сна (глубокий)

Чтобы решить эту проблему, я отредактировал /etc/systemd/sleep.conf, установив различные переменные сна (AllowSuspend, AllowHibernation, AllowSuspendThenHibernate, AllowHybridSleep) в no, а затем перезагрузил систему. Для других решений проблем со снами/гибернацией см. этот вопрос и его ответы.

ПРИМЕЧАНИЕ: Я изменил свое имя хоста на <hostname>.

Ответ или решение

Причины непреднамеренной гибернации или сна сервера на Linux и их решение

Непреднамеренное выключение или переход в режим сна вашего сервера на платформе Linux может быть следствием множества факторов. Давайте разберём возможные причины этого поведения и способы устранения проблемы.

1. Настройки энергосбережения

Одной из основных причин, по которой ваш сервер может переходить в режим сна, являются настройки управления питанием. Для начала проверьте конфигурацию в каталоге /etc/pm.

cd /etc/pm

Посмотрите, нет ли здесь настроек, которые могут вызывать автоматическое отключение или переход в режим сна. Если такие настройки обнаружены, либо измените их, установив значение автоматического перезапуска вместо перехода в сон, либо удалите их, предварительно убедившись, что это безопасно.

2. Проблемы с блоком питания

Если ваш сервер не был подключен к источнику бесперебойного питания (ИБП) или сетевому фильтру, это может привести к повреждению блока питания. Исследуйте, находился ли ваш сервер в незащищённой сети при возникновении проблемы. Если блок питания повреждён, он может отправлять сбойный сигнал операционной системе, приводя к переходу в режим гибернации или сна.

3. Анализ системных логов

Для выяснения причин отключения и перехода в спящий режим стоит проанализировать системные логи. Используйте следующие команды для фильтрации записей, относящихся к выключению и сплюшению:

cat /var/log/syslog | grep "shutdown"
cat /var/log/syslog | grep "reboot"
cat /var/log/syslog | grep "sleep"
cat /var/log/syslog | grep "hibernate"

На системах Debian также следует проверить журналы, относящиеся к управлению питанием в каталоге /var/log/pm-*. Например, команды journalctl могут дать полезную информацию:

journalctl -t systemd-sleep

Вы можете сузить результаты, просмотрев события на момент, предшествующий переходу в спящий режим. Если вы видите записи типа systemd-logind: The system will suspend now!, это указывает на то, что система была инициирована на переход в режим сна.

4. Конфигурация systemd

Если вы обнаружите, что проблема связана с настройками управления питанием, возможно, вам следует внести изменения в файл конфигурации /etc/systemd/sleep.conf. Установите параметры AllowSuspend, AllowHibernation, AllowSuspendThenHibernate и AllowHybridSleep в no. После внесения изменений перезагрузите сервер. Пример изменения:

[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no

Заключение

Как вы видите, причины непреднамеренного перехода сервера в режим сна могут быть разнообразны. От конфигурационных настроек до аппаратных неисправностей — понимание источников проблемы позволит вам быстро её решить. Если вы не можете самостоятельно диагностировать проблему, возможно, стоит обратиться к специалисту для более глубокого анализа и устранения неисправностей. Ваши действия по обеспечению бесперебойной работы сервера будут способствовать повышению общей надежности и эффективности вашей инфраструктуры.

Оцените материал
Добавить комментарий

Капча загружается...