Подумай, раскайся и перезагрузись -
Порядок должен вернуться
Пособие для начинающих сотрудников суппорта датацентров. При необходимости перезагрузить сервер делать это следует в таком порядке:
- Подключить клавиатуру и, желательно, монитор тоже (чтобы видеть обратную связь на свои действия) или получить доступ к консоли через IPKVM. Если на мониторе видно какие-то странные/нестандартные сообщения об ошибках, желательно их записать или сфотографировать (может пригодится при выяснении причин зависания).
- Нажать комбинацию клавиш Ctrl-Alt-Delete.
- Если на предыдущее действие реакции со стороны сервера нет, последовательно нажать комбинации клавиш:
- Alt-PrintScreen-S (запись данных из дисковых буферов на физический носитель)
- Alt-PrintScreen-U (отмонтирование файловых систем)
- Alt-PrintScreen-B (перезагрузка)
- Если на предыдущее действие реакции со стороны сервера нет, поискать на нём кнопку «Reset» и при её наличии нажать.
- Если на предыдущее действие реакции со стороны сервера нет, выключить питание сервера, подождать 10-15 секунд, затем снова включить.
Действия из пункта 3 имеет смысл пробовать только если в файле /etc/sysctl.conf имеется строчка
kernel.sysrq = 1
Именно такой порядок действий обусловлен тем, что при перезагрузке по питанию не происходит корректного завершения работы приложений, сохранения данных из оперативной памяти на диски, что часто приводит к нарушению целостности файловых систем, повреждению таблиц баз данных и прочим неприятностям, вплоть до неработоспособности сервера из-за невозможности загрузиться в штатном режиме. Поэтому перезагрузку по питанию следует использовать только в крайнем случае, когда других возможностей нет. Подробнее про sysrq можно почитать в википедии или
здесь.
Если известно, что одна или более файловых систем не находятся в состоянии clean (проверить можно командой dumpe2fs -h) и хочется избежать их автоматической проверки при следующей загрузке (что может занять даже несколько часов), следует сделать так:
touch /fastboot
Очень полезно для минимизации downtime сервера. После команды reboot или аналогичной на консоли появится сообщение "On the next boot fsck will be skipped". Проверялось на дистрибутиве CentOS. Файл /fastboot автоматически удалится при следующей загрузке ОС.
UPDATE от 2020-11-30. В CentOS 7 c systemd уже не работает магия с "touch /forcefsck" и dumpe2fs -c 1 (как было в более ранних версиях). При необходимости сделать принудительную проверку корневой файловой системы при следующей загрузке нужно добавить в параметры ядра fsck.mode=force (причем если файловая система содержит ошибки, с высокой вероятностью может еще понадобится и fsck.repair=yes).
Признаком того, что нужно добавить fsck.repair=yes, является наличие в логе вот такого:
Nov 30 10:46:29 srv.dom.com systemd-fsck[444]: sys: Inodes that were part of a corrupted orphan linked list found. Nov 30 10:46:29 srv.dom.com systemd-fsck[444]: sys: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. Nov 30 10:46:29 srv.dom.com systemd-fsck[444]: (i.e., without -a or -p options) Nov 30 10:46:29 srv.dom.com systemd-fsck[444]: fsck failed with error code 4. Nov 30 10:46:29 srv.dom.com systemd-fsck[444]: Running request emergency.target/start/replace
Параметры ядра менять удобнее всего в файле /etc/sysconfig/grub, после редактирования которого следует выполнить команду
grub2-mkconfig -o /boot/grub2/grub.cfg
(если не используется UEFI). В последствии, после успешной загрузки узнать как всё прошло у fsck можно командой
journalctl --boot | grep systemd-fsck
Ну и дополнительно убедиться, что проверка таки состоялась, ещё можно с помощью dumpe2fs:
dumpe2fs -h /dev/sda2 | grep 'Last checked:' dumpe2fs 1.42.9 (28-Dec-2013) Last checked: Mon Nov 30 10:55:44 2020
Ух ты, я а про /fastboot не знал, спасибо.