Как да рестартирате сървъра, SavePearlHarbor
Още едно копие на хабора
Главно меню
След навигация
Абстракт: описание на типовете рестартиране, история за sysrq, ipt_SYSRQ, ipmi, psu.
Как да рестартирам сървъра? - Това е въпрос, който обикновено се задава добре, много начинаещи потребители, които се бъркат между спиране, изключване -r, рестартиране, init 6 и т.н.
Опитен администратор ще изясни въпроса: "какво не е наред със сървъра?" Различните видове откази на сървъри изискват различни видове рестартиране - а неправилно избраната опция ще доведе до ужасни последици, от които посещението на уеб страницата на IPMI/DRAC/iLO с цел „рестартиране“ ще бъде най-лесно. Най-трудното в личната ми практика беше командировка на еникейщик до съседен град. За да "натиснете рестартиране" на самотен сървър.
В тази статия: Какво спира сървъра ви от рестартиране и как да му помогнете.
Нека започнем с теорията на опровержението.
Когато изключите или рестартирате сървъра, мениджърът за инициализация (в повечето съвременни дистрибуции - systemd, в ексцентричния Ubuntu 14.04 все още се стартира, в архаичните боклуци - sysv-init) в определен ред изпраща на всички демони командата "изключи". И повечето демони (напр. СУБД като mysql) знаят как да се изключат правилно. Например прекратете всички транзакции, запазете всички незаписани данни на диск и т.н. За СУБД в паметта като redis това може изобщо да е от решаващо значение: не спаси - загуби.
Старите системи за инициализация чакаха безкрайно всеки от скриптовете за инициализиране. Например, ако „жокерът“ добави клон „спя 3600“ към вашето „спиране“, тогава вашият сървър ще се рестартира за час и половина. И ако има по-голям брой или просто програма, която не иска да приключи, рестартирането никога няма да приключи.
Новите системи за инициализация (всъщност не сме срамежливи - остана само systemd) дават определено време за изчакване (обикновено 120 или 180 секунди) за запазване на данни, след което те прекратяват процеса със сила. В допълнение към спирането на демони, файловите системи се демонтират (т.е. всички кешове на блокове отпадат), целите на iscsi се спират (също с отпаднал кеш) и т.н. и т.н. Въпреки факта, че времето за изключване се оказва неограничено дълго, то все още е ограничено. Освен това има поне надежда за правилното прекратяване на всички демони, отпадане на кешовете на файлове и т.н.
По този начин, в здрава система, правилният отговор на въпроса "как да рестартирате" е да изпълните командата за рестартиране. В някои случаи дори и единственият правилен (изменение: ако направите „рестартиране“ в графичния интерфейс, работната среда ще помисли, че това е аварийно рестартиране - за да рестартирате от графичния режим, трябва да използвате „рестартиране“ в DE интерфейс).
Какво може да се обърка при „редовно рестартиране“? Е, първо, някои от демоновите процеси могат да започнат да се "притъпяват" - вижте по-горе.
На второ място, може да има проблем с демонтирането на файлови системи. Смята се, че е достатъчно да "убиете" всички процеси и ще бъде лесно да демонтирате диска - никой не го използва. Но, меко казано, това не е така. Ето потенциални методи за „забиване на fs без демонтаж:
- fallocate/fs/swap -l 1G; mkswap/fs/swap; swapon/fs/swap
- dd ако =/dev/sda на =/fs/image; kpartx/fs/изображение
- losetup —намерете —show/fs/image
и т.н. Накратко: файл може да бъде зает не само от файловата система, но и от ядрото. И модул в ядрото може да бъде зает да търси отговори за смисъла на живота и да няма намерение да освобождава ресурса.