Коли потрібна перезавантаження?


27

Окрім оновлення ядра, чи є якісь зміни в системі Linux, які потребують перезавантаження? Я знаю, що існують ситуації, коли перезавантаження робить речі простішими, але чи є такі, які неможливо виконати, окрім перезавантаження?

Для уточнення: я думаю про типову настільну або серверну систему, яка не страждає від апаратної несправності.


3
кожну річ можна зробити без перезавантаження. навіть зміна ядра можна зробити за допомогою ksplice, щоб ви могли гаряче поміняти своє ядро. Єдине, що потрібно враховувати, це те, що все, що не перезавантажуючись, може бути дуже складним
Kiwy

4
Ваше запитання дуже широке, оскільки "система Linux" може означати дуже багато різних речей.
Zrin

Також "будь-які зміни" можуть означати досить багато різних ситуацій. Чи відновлення після невдалого жорсткого диска, який є частиною дзеркала 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
"Перезавантажте навіть якщо система Utterly зламалася" Я віддаю перевагу цьому питанню на всякий випадок, але я не думаю, що я колись забуду це.
embedded.kyle

1
Можливо, варто зазначити, що ви можете вийти з паніки за допомогою кексека і уникнути повного перезавантаження. Це в рівній мірі стосується і виходу з нерозбірливого стану стану. (вони не є однаковою річчю, принаймні, у системі x86). Однак +1 для решти цієї відповіді.
Vality

@Vality Дякуємо за ваш коментар Якщо kexec тягне за собою перезавантаження, можливо, певною мірою залежить від цих точок зору. Документація Kdump , наприклад , описує Kexec-на-паніки , як перезавантаження , яка зберігає образ пам'яті системного ядра. Щодо питання про незавантажуваний стан, я також розглядав такі речі, як неправильна конфігурація завантажувача (наприклад, відмова ядра в першу чергу), де kexec не допомагає. Зважаючи на характер питання, я вважаю, що певна різниця думок щодо семантики неминуча.
Thomas Nyman

@ThomasNyman Дякую за детальну відповідь, дивлячись на правильне питання, я відчуваю. Я думаю, що розмова про kexec, ймовірно, просто зайво ускладнить цільову аудиторію або це питання. І ви також зробите хороший момент щодо помилок завантажувача.
Vality

Я ніколи не помічав того маленького SysRq, написаного під друкованим екраном! Це круто. Я б хотів, щоб я знав це, коли вивчав програмування модуля ядра!
Шахбаз

2

Два рази я можу придумати, де я хотів би перезавантажити:

  1. Коли мені потрібно переконатися, що система може завантажуватися у належному стані.

    Я колись працював над системою, яка налаштовувала деякого демона під час роботи. Після того, як він працював протягом декількох років, збою живлення призвело до перезавантаження, але демон не був частиною процесу запуску, і ніхто не мав поняття, як це було налаштовано роками раніше. Система не працювала цілими днями, поки ми придумали, як її переналаштувати.

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

  2. Коли оновлена ​​системна бібліотека

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

    Перезавантаження - це найкращий спосіб переконатися, що всі запущені процеси ще не використовують стару, біблійну бібліотеку.


Є кращі способи знайти всі бінарні файли залежно від певної бібліотеки, якщо ви використовуєте хорошого менеджера пакунків. приходить на думку revdep-перебудований з Gentoo.
Spidey

1
@Spidey: Після відновлення цих двійкових файлів, як ви гарантуєте, що старі процеси не працюють із бібліотекою помилок?
Гейб

1
Звідки ви знаєте, які демони завантажують бібліотеки, що порушують правопорушення?
Гейб

1
@Gabe Ви можете, наприклад, перевірити, які процеси бібліотеки відображаються в їхньому просторі пам'яті lsofперед оновленням бібліотек.
Thomas Nyman

1
@Gabe Sure, і хоча я погоджуюся, що це абсолютно вагомий привід для перезавантаження, OP явно не запитує, у яких випадках перезавантаження є більш сприятливим, але коли перезавантаження абсолютно необхідна .
Thomas Nyman

0

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.