- Как перезагрузить сервер?
- ipt_sysrq
- сторож для сторожа
- Перезагрузка линукс по сети
- Перезагрузка и выключение Linux из командной строки
- Перезагрузка Linux системы.
- 1. Команда shutdown, с ключом -r.
- 2. Команда reboot.
- 3. Команда telinit 7.
- Выключение Linux системы.
- 1. Команда shutdown, с ключом -h.
- 2. Команда halt.
- 3. Используем команду poweroff.
- 4. Команда telinit 0
- Как перезагрузить сервер Linux?
- Когда требуется перезагрузка?
- Как перезагрузить сервер через консоль?
- Как перезагрузить сервер по SSH?
- 1. Команда shutdown -r
- 2. Команда reboot
- 3. Команда init 6
- Что делать, если сервер не работает после перезагрузки
- Перезапуск сети в Ubuntu
- Перезагрузка сети в Ubuntu
- Перезапуск сети в NetworkManager
- Команды ifup и ifdown
- Выводы
Как перезагрузить сервер?
Abstract: описание видов ребута, рассказ про sysrq, ipt_SYSRQ, ipmi, psu.
Как перезагрузить сервер? — Это вопрос, который обычно задают ну очень начинающим пользователям, которые путаются между halt, shutdown -r, reboot, init 6 и т.д.
Опытный администратор уточнит вопрос: «а что с сервером не так?» Разные виды отказов серверов требуют разных видов ребута — и неверно выбранный вариант приведёт к тяжелейшим последствиям, из которых визит в веб-морду IPMI/DRAC/iLO с целью «доперезагрузить» будет самым лёгким. Самым тяжёлым в моей личной практике была командировка эникейщика в соседний город. С целью «нажать ребут» на одиноко стоящем сервере.
В этой статье: что мешает серверу перезагрузиться и как ему помочь.
Начнём с теории ребута.
При выключении или перезагрузке сервера менеджер инициализации (в большинстве современных дистрибутивов — systemd, в эксцентричной Ubuntu 14.04 до сих пор upstart, в архаичном хламе — sysv-init) в определённом порядке посылает всем демонам команду «выключись». И большинство демонов (например, СУБД, вроде mysql) знают, как выключаться правильно. Например, закончить все транзакции, сохранить все несохранённые данные на диск и т.д. Для in-memory СУБД, наподобие redis, это и вовсе может быть критичным: не сохранил — потерял.
Старые системы иницализации ждали неограниченно долго каждый из инит-скриптов. Например, если «шутник» добавил вам в «stop» веточку «sleep 3600», то ваш сервер будет перезагружаться час с хвостиком. А если там цифра поболе, или просто программа, которая не хочет завершаться, то и ребут никогда не закончится.
Новые системы инициализации (собственно, не стесняемся — остался только systemd) дают некий таймаут (обычно 120 или 180 секунд) на сохранение данных, после чего завершают процесс силком. Помимо остановки демонов, отмонтируются файловые системы (то есть скидываются все блочные кеши), останавливаются iscsi target’ы (тоже с скидыванием кеша), и т.д. и т.п. При том, что время шатдауна получается неопределённо долгим, оно всё таки конечно. Плюс, есть хоть какая-то надежда на правильное завершение всех демонов, скидывание файловых кешей и т. д.
Таким образом, на здоровой системе правильный ответ на вопрос «как перезагрузиться» — выполнить команду reboot. В ряде случаев — даже единственный правильный (поправка: если в графическом интерфейсе сделать «reboot», то desktop environment будет думать, что это ребут аварийный — для перезагрузки из графического режима надо использовать «reboot» в интерфейсе DE).
Что может пойти не так при «обычном ребуте»? Ну, во-первых, какой-то из процессов-демонов может начать «тупить» — см выше.
Во-вторых, может возникнуть проблема с отмонтированием файловых систем. Считается, что достаточно «убить» все процессы, и отмонтировать диск будет легко — его же никто не использует. Но, это, мягко говоря, не так. Вот потенциальные методы «прибить fs гвоздями так, чтобы не отмонтировалось:
- fallocate /fs/swap -l 1G;mkswap /fs/swap; swapon /fs/swap
- dd if=/dev/sda of=/fs/image; kpartx /fs/image
- losetup —find —show /fs/image
и т.д. Вкратце: файл может быть занят не только файловой системой, но и ядром. А модуль в ядре может быть занят поиском ответов на смысл жизни и не иметь намерений освобождать ресурс.
Чем это чревато? Неотмонтированной файловой системой. Systemd в этой ситуации пытается-пытается, да и бросает (неотмонтированную файловую систему). То есть reboot в этой ситуации будет ОЧЕНЬ долгим, но всё-таки пройдёт. Но это если umount вернёт ошибку.
А бывает так, что umount не может завершить операцию из-за того, что что-то не доступно. Например, файл на nfs-сервере. Если какой-то процесс обратится к такому файлу, то его завершить нельзя (даже с помощью kill -9). И в этой ситуации ‘reboot’ просто завесит сервер. Опять же, наиболее типовые места у systemd „прикрыты“, но вероятность наткнуться на TASK_UNINTERRUPTIBLE (‘D’ в ps aux) всё равно можно.
Что делать? Можно перезагрузиться без синхронизации файловых систем и завершения чего-либо reboot -f. Но он тоже может повиснуть. Про причины ниже, а пока про последствия: все процессы не остановлены и умирают мгновенно, tcp сессии не закрыты, дисковые кеши не сброшены. Однако, ядро всё-таки выполняет какие-то движения в районе ребута (и, возможно, часть кешей будет сброшена). Главное же — в процессе ребута будет задействована большая часть ядра. И это означает, что если ядру поплохело, то мы можем и не вернуться обратно.
Вторая, крайне неприятная ситуация: проблемы с файловой системой на / (в корне). Любая попытка сделать ls, grep, и даже ‘reboot’ вызывает либо зависание консоли, либо ошибку. По той же категории проходят проблемы с libc (включая её удаление), когда на попытку ‘reboot’ говорят о проблеме линковки и отказываются что-то делать. Или, мы достигли лимита на число pid’ов и все они в ‘D’ стейт. или ещё какая-то гадость того же калибра, идущая по категории „серверу плохо“.
Бывает так, что на сервер осталась открыта только одна консоль (а вторая уже не открывается). Почему? Потому что кто-то что-то подхимичил с драйвером дисков. Или рейд-контроллером. Или ещё чем-то, после чего от ‘/’ остаются только воспоминания в дисковом кеше. Это означает, что у нас есть только команды bash’а (встроенные), которые выполняются без запуска новых процессов.
Существует метод перезагрузки, который не требует выполнения каких-либо исполняемых файлов (т.е. чтения с отсутствующего диска). Это (от рута): echo b >/proc/sysrq-trigger . Файл sysrq-trigger позволяет „нажать“ любую кнопку из SysRq комбинаций (аварийные кнопки ядра). В том числе и SysRq-b, то есть аварийный „reboot“. Часто бывает так, что после нажатия enter даже не успевает появиться перевод строки — сервер уже в ребуте до того, как syscall вернулся. Это самое сильное из софтового, что есть для ребута.
Замечание: кажующееся правильным в этой ситуации „sync, reboot“, т.е. SysRq-s, SysRq-B это ошибка, т.к. после SysRq-S, ядро может попытаться начать общаться с пустым множеством, и, потенциально, упасть в панику или отломать вам последнюю из доступных консолей. Если делается аварийный ребут — он должен быть аварийным
ipt_sysrq
Это всё работает, если у вас есть консоль на сервер. А если логин виснет и открытой консоли нет? Есть модуль ipt_SYSRQ, позволяющий выполнить sysrq запросы по получению определённого сетевого пакета (точнее, по правилу iptables). Работает целиком в ядре, т.е. от FS не зависит. К нему же прилагается команда send_sysrq.
сторож для сторожа
Можно было бы подумать, что на этом „всё“, но бывают ещё более неприятные зависания. Например, зависла сетевая карта. И обычный reboot (в т.ч. через sysrq) не помогает. Вторым примером таких плохой ситуации бывает зависание enclosure, которая залипла на плохом диске и игнорирует все bus reset. Перезагрузка вроде бы всё сбрасывает, а диски недоступны.
В этом случае нам нужен power cycle (включить/выключить). Физически бегать к серверу не интересно, так что можно посмотреть на возможности современных серверов: IPMI. Это встренный микрокомпьютер, позволяющий управлять „большим“ компьютером. Он обычно называется IPMI, DRAC, iLO, etc.
Интресующая нас команда: ipmitool chassis power cycle. Она более требовательна к работоспособности системы (должны быть загружены модули ядра, сам ipmitool должен успешно запуститься, ipmi должен быть рабочим и т.д.). Но зато она позволяет передёрнуть по питанию всех. Точнее, почти всех — если у сервера есть jbod’ы, то до них эта команда не доходит. Но, всё-таки, это очень добротный и хороший ребут.
Если ядру совсем поплохело, то команду можно выполнить и удалённо (ipmitool -H ipmi.server.local chassis power cycle)
Ещё одна сложная ситуация — когда завис ipmi. Если система при этом более-менее жива, то можно „перезагрузить ipmi“: ipmitool mc reboot hard . После этого можно будет сделать power cycle для шасси. Звучит странно, но я несколько раз в жизни „вытаскивал“ сервер в нормальный ребут именно такой последовательностью. (После mc reboot hard надо дать пару минут на загрузку BMC).
Следующая точка „боли“ — это зависающие блоки питания. Да, такое бывает. Баги в прошивке блоков питания исправляют, их нужно прошивать. Разумеется, любые мягкие ребуты (такие как ipmi power cycle) в этой ситуации не работают. Нужно либо физически тыкать кабель, либо передёргивать питание удалённо. В этой ситуации помогает IP-розетка.
Выглядит это примерно так (фрагмент панели управления для servers.com/servers.ru):
Очевидно, в этих условиях ребут пройдёт по очёнь жёсткому сценарию, но точно пройдёт.
Источник
Перезагрузка линукс по сети
Перезагрузка и выключение Linux из командной строки
Иногда требуется удаленно перезагрузить или выключить операционную систему под управлением Linux из командной строки. Сделать это можно различными способами, их то мы и рассмотрим.
Замечание. Все ниже перечисленные команды надо выполнять из под пользователя root.
Для смены пользователя или получения прав root используйте команды «su -» или «sudo».
Перезагрузка Linux системы.
1. Команда shutdown, с ключом -r.
Команда shutdown является основной командой для управлением остановки или перезагрузки системы linux.
При использование команды shutdown можно задать перезагрузку в конкретное время с выводом информирующих сообщений.
2. Команда reboot.
Команда reboot выпоняет все необходимые операции для остановки системы, эта команда может быть вызвана командой shutdown -r, но может использоваться отдельно. Данная команда записывает в журнал логов время остановки системы, уничтожает незавершенные процессы, выполняет системный вызов sync, ждет завершения записи на диск, а только после этого прекращает работу ядра и перезагружает систему Linux.
3. Команда telinit 7.
С помощю этой команды можно задать демону init перейти на определенный уровень выполнения, а именно цифра 7 говорит о том что нужно прейти на 7-ой уровеь (перезагрузка). Команда telinit не поддерживает задание паузы и вывода предупреждающих сообщений. Обычно используется при проверке изменений внесеных в файл inittab.
Выключение Linux системы.
1. Команда shutdown, с ключом -h.
2. Команда halt.
Команда идентична команде reboot по своим действиям, разница в том, что команда halt выключает систему.
3. Используем команду poweroff.
Команда poweroff идентична команде halt, кроме того, что после остановки системы посылается специальный запрос системе управления питанием на отключение питания, что позволяет дистанционно отключать системы.
4. Команда telinit 0
Идентична команде telinit 7 только переходит на уровень 0, что означает остановку системы.
Вот и все, рассмотрение основных способов выключение и перезагрузки Linux систем из командной строки завершено.
1″ :pagination=»pagination» :callback=»loadData» :options=»paginationOptions»>
Источник
Как перезагрузить сервер Linux?
В статье рассмотрим, как перезагрузить (перезапустить) по SSH сервер Linux. Например, перезагрузить сервер Ubuntu, CentOS Debian и основанные на них дистрибутивы можно удаленно по SSH или подключившись к командной строке другим способом.
Прежде чем перейти к боевым действиям, убедитесь, что сервер Линукс действительно нуждается в перезагрузке.
Когда требуется перезагрузка?
Как бы это странно ни звучало: перед тем как перезагрузить сервер сайта, стоит убедиться что оно ему действительно надо. Перезагрузка сервера без веских на то причин может привести к сбоям в работе серверного оборудования.
Так когда перезагружаем?
- Сервер завис или тормозит;
- Некорректно работают установленные программы;
- При смене операционной системы;
- При работе с BIOS (если есть физический доступ или его эмуляция);
- При использовании программ низкоуровневого копирования и восстановления данных (например, Acronis Backup).
На всякий пожарный: не перезагружайте сервер во время установки/удаления программ.
Как перезагрузить сервер через консоль?
Linux-серверы можно перезагрузить в консоли 3 простыми способами (команды shutdown, reboot и init).
Вы можете использовать любое решение для удаленного подключения к серверу. Мы остановимся на SSH.
Как перезагрузить сервер по SSH?
Все действия должны выполняться из-под пользователя root.
Подключитесь к вашему серверу под root-пользователем. Пароль суперпользователя указан в личном кабинете и письме, отправленном после активации сервера:
После ввода команды соединение с сервером будет прервано. Перезагрузка займет до 15 минут.
1. Команда shutdown -r
Это базовая команда, которая используется для перезагрузки Linux-сервера с Ubuntu.
Введите команду, и сервер будет перезагружен сразу:
Еще можно запланировать перезагрузку, введя вместо now конкретное время. Например, назначим перезагрузку сервера на 11 утра:
shutdown -r 11:00
Также можно перезагрузить сервер через небольшой промежуток времени. Например, через 5 минут:
2. Команда reboot
Также можно перезагрузить Linux-серверы с Ubuntu, Debian, CentOS или другим дистрибутивом с помощью универсальной команды reboot.
Сначала она запишет в логи время остановки системы, уничтожит незавершенные процессы, вызовет опцию sync и дождется завершения записи на диск. И только после этих предварительных действий прекратит работу ядра и инициирует перезагрузку.
Введите команду, и сервер будет перезагружен сразу:
После ввода команды соединение с сервером будет прервано. Консоль оповестит: The system is going down for reboot NOW!
3. Команда init 6
Также для перезагрузки можно использовать уровни системы инициализации Init Scripts. Всего в этой системе 6 уровней: где 0 — выключение, а 6 — перезагрузка. Чтобы перейти к этому уровню, используйте команду:
Что делать, если сервер не работает после перезагрузки
Если в ходе перезагрузки что-то пошло не так, можно узнать о состоянии сервера, подключившись через IP-KVM.
Если решить проблему самостоятельно не получится, обратитесь в техническую поддержку. Специалисты перезагрузят сервер вручную и заменят неисправные комплектующие , если это потребуется.
Нужен надежный и недорогой выделенный сервер?
Выделенные серверы по низким ценам! Переходи и выбирай свой!
Источник
Перезапуск сети в Ubuntu
В Ubuntu и Debian инициализацией сетевых интерфейсов и настройкой сети занимается специальная сетевая служба — networking. Информация о конфигурации сетевых интерфейсов хранится в файле /etc/network/interfaces.
Если вы что-либо измените в этом файле, нужно будет перезапустить сеть, чтобы применить изменения. В этой статье мы рассмотрим как выполнить перезапуск сети Ubuntu 16.04.
Перезагрузка сети в Ubuntu
Можно, конечно, выполнить полную перезагрузку компьютера, но это не совсем удобно если можно просто перезапустить сеть Ubuntu. Для перезапуска сети используйте следующую команду:
sudo service networking restart
В современных дистрибутивах уже давным давно используется система инициализации Systemd, поэтому можно использовать команду systemctl вместо команды service:
sudo systemctl restart networking.service
Кроме того, можно перезапустить NetworkManager, это тоже помогает, если сеть настроена через него:
sudo systemctl restart NetworkManager
Перезапуск сети в NetworkManager
Чаще всего, для управления сетью в современных дистрибутивах используется программа Network Manager. Можно сразу же использовать ещё для наших целей. Просто отключите, а затем включите сеть обратно следующими командами:
sudo nmcli networking off
sudo nmcli networking on
После отключения сети значок NetworkManager пропадёт с панели, а потом снова появится после включения. Аналогично, вы можете использовать NetworkManager в графическом интерфейсе. Кликните по его иконке, выберите нужное сетевое подключение и нажмите Выключить:
Затем включите его обратно.
Команды ifup и ifdown
Эти команды работают на более низком уровне, они управляют непосредственно самими сетевым интерфейсами. Для перезапуска сети мы можем отключить все интерфейсы, а затем включить обратно:
Вы не увидите никаких изменений в графическом интерфейсе, но когда сетевой интерфейс будет отключён, вы не будете иметь доступа к интернету.
Выводы
Как видите, не всегда обязательно перезагружать компьютер после изменений настроек, в большинстве случаев достаточно перезапустить только нужный сервис. Надеюсь, эта информация была вам полезной.
Источник