Когда требуется перезагрузка?


27

Помимо обновления ядра, есть ли какие-либо изменения в системе Linux, которые требуют перезагрузки? Я знаю, что бывают ситуации, когда перезагрузка облегчает задачу, но есть ли такие, которые нельзя выполнить, кроме как перезагрузкой?

Чтобы уточнить: я имею в виду типичную настольную или серверную систему, которая не страдает от аппаратного сбоя.


3
все можно сделать без перезагрузки. даже изменение ядра может быть выполнено с помощью ksplice, чтобы вы могли выполнить горячую замену ядра. Единственное, что вы должны принять во внимание, это то, что создание всего без перезагрузки может быть очень сложным
— Kiwy

4
Ваш вопрос очень широкий, потому что «система Linux» может означать много разных вещей.
— Зрин

Также «любые изменения» могут означать довольно много разных ситуаций. Является ли восстановление после сбоя жесткого диска, являющегося частью зеркала MD, таким изменением? Если да, то, к сожалению, иногда требуется перезагрузка, потому что, например, некоторые сбои жесткого диска (на некоторых контроллерах жесткого диска) могут привести к зависанию системы. Но вы, вероятно, не спрашиваете о таких "изменениях" ...
— Зрин

3
@Kiwy Технически ksplice не меняет ядра . Ksplice позволяет исправлять работающее ядро, пока оно работает. Возможно, вы думаете о kexec , который позволяет загружать новый образ ядра «поверх» работающего ядра в памяти.
— Томас Найман

Это напоминает мне, Windows XP (я никогда не выходил за рамки) никогда не закрывается о перезапуске, даже если он просто обновил IE8 (или любой другой номер), который не был открыт в течение 4 лет, с момента установки Windows и, следовательно, необходимость загрузки браузер.
— Шахбаз

Ответы:


44

Несколько вещей приходят на ум:

  • Выздороветь от паники ядра

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

  • Восстановление от зависаний, которые оставляют вас без терминального доступа

    Если система не отвечает, и вы не можете выполнить команды восстановления, единственное, что вы можете сделать, это перезагрузить компьютер. Как правило, вы хотите избежать ручного включения питания. Для подобных ситуаций в ядре Linux есть поддержка Magic SysRq, которую можно использовать для перезагрузки машины в чрезвычайной ситуации.

    Пока CONFIG_MAGIC_SYSRQопция включена в конфигурации ядра, аkernel.sysrq sysctl опция включена, вы можете выдавать команды непосредственно ядру с помощью волшебных комбинаций клавиш SysRq:

    Обратите внимание, что Alt+ SysRqниже означает, что нажмите и удерживайте Alt , затем нажмите и удерживайте SysRq (обычно это PrintScrnклавиша).

    1. Alt+ SysRq+ r: восстановить контроль над клавиатурой
    2. Alt+ SysRq+ e: отправить SIGTERMвсем процессам, кроме init, давая им возможность завершить изящно
    3. Alt+ SysRq+ i: отправить SIGKILLвсем процессам, кроме init, заставляя их завершить
    4. Alt+ SysRq+ s: попытка синхронизации всех смонтированных файловых систем
    5. Alt+ SysRq+ u: перемонтировать всю файловую систему только для чтения
    6. Alt+ SysRq+ b: перезагрузка или

      Alt+ SysRq+ o: выключение

    Мнемоника магических комбинаций клавиш SysRq для попытки постепенной перезагрузки:

    " R Eboot Е VEN Я F S ystem U tterly В Roke "

    Для безголовых серверов существует даже цель iptables, позволяющая удаленные последовательности SysRq по сети.

  • Восстановление из состояния без загрузки

    Если система уже была приведена в состояние, при котором обычная загрузка невозможна (например, в результате неудачного обновления системы, поврежденной файловой системы и т. Д.), Единственным способом доступа к консоли восстановления в системе может быть перезагрузка используя соответствующие параметры загрузки.

  • Изменить параметры ядра во время загрузки

    Некоторые параметры ядра (например, auditдля включения / отключения аудита ядра) могут быть установлены только тогда, когда ядро ​​загружается во время загрузки.


3
«Перезагрузка, даже если система совершенно сломалась». Я предпочитаю этот вопрос на всякий случай, но не думаю, что когда-либо забуду об этом.
— embedded.kyle

1
Возможно, стоит отметить, что вы можете выйти из паники с помощью kexec и избежать полной перезагрузки. Это в равной степени относится и к выходу из точки загрузки без загрузки. (в любом случае, это не одно и то же, по крайней мере, в системе x86). Однако +1 для остальной части этого ответа.
— Vality

@Vality Спасибо за ваш комментарий. Если kexec влечет за собой перезагрузку, возможно, в определенной степени зависит от их точки зрения. Документация Kdump , например , описывает Kexec-на-паники , как перезагрузка , которая сохраняет образ памяти системного ядра. Что касается вопроса о не загружаемом состоянии, я также рассмотрел такие вещи, как неправильная конфигурация загрузчика (например, невозможность загрузки ядра), где kexec не помогает. Учитывая природу вопроса, я думаю, что некоторое расхождение во взглядах относительно семантики неизбежно.
— Томас Найман

@ThomasNyman Спасибо за ваш подробный ответ, глядя на вопрос, который вы правы, я чувствую. Я думаю, что разговор о kexec, вероятно, просто излишне усложнит вещи для целевой аудитории или этот вопрос. И вы также делаете хорошее замечание относительно ошибок загрузчика.
— Vality

Я никогда не замечал этот маленький SysRq, написанный под экраном печати! Это круто. Я хотел бы знать это, когда я изучал программирование модуля ядра!
— Шахбаз

2

Есть два раза, когда я могу думать о том, где я хотел бы перезагрузиться:

  1. Когда мне нужно убедиться, что система может загрузиться в правильном состоянии.

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

    Фактически перезагрузка - это единственный способ точно знать, что ваша система перезагрузится должным образом после сбоя питания.

  2. Когда системная библиотека была обновлена.

    Скажем, в библиотеке обнаружен серьезный недостаток безопасности, который используется многими приложениями / серверами в системе. Вы можете обновить библиотеку без перезагрузки, но сколько процессов все еще работает с загруженной небезопасной библиотекой? Вы можете кропотливо перезапустить что-нибудь, используя старую библиотеку (если вы можете это выяснить), но это подвержено ошибкам и может занять больше времени, чем просто перезагрузка.

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


Существуют лучшие способы найти все двоичные файлы в зависимости от определенной библиотеки, если вы используете хороший менеджер пакетов. На ум приходит revdep-rebuilt из Gentoo.
— Spidey

1
@Spidey: После того, как вы перестроите эти двоичные файлы, как вы обеспечите отсутствие старых процессов, работающих с ошибочной библиотекой?
— Гейб

1
Как узнать, в какие демоны загружены нарушающие библиотеки?
— Гейб

1
@Gabe Вы можете, например, проверить, какие процессы отображают библиотеки в их пространство памяти, lsofпрежде чем обновлять библиотеки.
— Томас Найман

1
@Gabe Конечно, и хотя я согласен с тем, что это вполне веская причина для перезагрузки, OP явно не спрашивает, в каких случаях перезагрузка более удобна, но когда перезагрузка абсолютно необходима .
— Томас Найман

0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.