- Вопрос или проблема
- Ответ или решение
- Решение проблемы с неизвестным уровнем выполнения и службами, не стартующими при загрузке на Ubuntu 14.04
- 1. Проверка конфигурации Upstart
- 2. Проверка служб и зависимостей
- 3. Инициализация сетевых интерфейсов
- 4. Лог-файлы
- 5. Обновление системы и приложений
- 6. Обращение к поддержке VPS
- Заключение
Вопрос или проблема
Я арендую VPS у компании VPS и запускаю там веб-сервер на Ubuntu 14.04. На днях его пришлось приостановить моим провайдером на некоторое время. После окончания периода приостановки (1-2 дня) VPS загружается, но не может получить ни одного уровня выполнения.
root@vps:/# runlevel
неизвестный
Это, в свою очередь, означает, что никакие службы Upstart не запускаются при загрузке, так как “полезные вещи” требуют runlevel [2345]
.
Я могу запускать отдельные службы вручную с помощью initctl
, если у них нет зависимостей, которые загрузка не запустила автоматически.
Я не могу найти ничего полезного/понятного в логах. Пожалуйста, спрашивайте, если хотите конкретные записи логов, и я постараюсь их найти.
Сервер (был) работал с PHP7, Nginx, MySQL, Redis, Minecraft Server, Mumble Server. Сервер работал нормально (и пережил несколько перезагрузок) до периода приостановки.
Вот мой initctl list
после свежей перезагрузки: http://pastebin.com/fcfcnxBU. Пожалуйста, спрашивайте о конкретных деталях, так как я не совсем уверен, где их искать (например, файлы логов, артефакты отладки, файлы и директории и т.д.).
ИСПРАВЛЕНИЕ: некоторые успехи через эксперименты:
Похоже, файловая система и/или сетевой стек не запускаются правильно при загрузке. Когда я делаю следующее:
$ ifup --all
$ initctl emit static-network-up
$ initctl emit filesystem
... Ctrl-C для выхода из цикла
$ initctl emit local-filesystems
То я получаю
$ runlevel
>N 2
И службы моего сервера (по крайней мере, большинство из них) работают нормально.
Я проверю, есть ли одна команда из этих, которая позволяет последовательности инициализации загрузки продолжаться нормально.
ИСПРАВЛЕНИЕ2:
-
ifup --all
поднимаетvenet0:0
, который привязан к статическому публичному IP VPS. -
emit static-network-up
ничего не делает. -
emit filesystem
+Ctrl-C
запускает- rsyslog
- ssh
- minecraft-server
- cron
- xinetd
- console
- tty2
- upstart-file-bridge
- mysql
и останавливает
- plymouth
- plymouth-upstart-bridge
-
emit local-filesystems
запускает- avahi-daemon
- systemd-logind
- mountall.sh
- dbus
- networking
и что-то под названием
network-interface-security (network-interface/lo) start/running
исчезает.
Инициализация, о которой вы читаете, была заменена на upstart, начиная с Edgy Eft 6.10; и одна из программ, предоставляемых upstart, – это его собственная реализация init. Смотрите эту документацию для 14.04.
Чтобы изменить уровень выполнения по умолчанию, используйте свой любимый текстовый редактор для /etc/init/rc-sysinit.conf.
sudo vim /etc/init/rc-sysinit.conf
Измените эту строку на тот уровень выполнения, который вы хотите…
env DEFAULT_RUNLEVEL=2
Тогда при каждой загрузке Upstart будет использовать этот уровень выполнения.
И перезагрузите систему.
Если он по-прежнему не запускается, проверьте, обновлены ли все приложения и правильно ли установлены все зависимости, и попытайтесь обновить их в Upstart снова.
Ответ или решение
Решение проблемы с неизвестным уровнем выполнения и службами, не стартующими при загрузке на Ubuntu 14.04
Когда ваш сервер на базе Ubuntu 14.04 показывает статус "unknown" при выполнении команды runlevel
, это указывает на серьезную проблему с процессом инициализации системы. Давайте разберем возможные причинные факторы и шаги, которые можно предпринять для решения проблемы.
1. Проверка конфигурации Upstart
Ubuntu 14.04 использует систему инициализации Upstart, и корректная настройка файлов конфигурации является критически важной. Начните с проверки файла /etc/init/rc-sysinit.conf
, который отвечает за определение уровня выполнения по умолчанию.
sudo vim /etc/init/rc-sysinit.conf
Убедитесь, что строка, определяющая уровень выполнения по умолчанию, выглядит следующим образом:
env DEFAULT_RUNLEVEL=2
После внесения изменений перезагрузите систему:
sudo reboot
2. Проверка служб и зависимостей
Важно также убедиться, что все необходимые службы и зависимости установлены и настроены правильно. Вы можете просмотреть список доступных и активных служб с помощью команды:
initctl list
Если какие-либо службы не активны, возможно, их нужно будет запустить вручную или добавить в конфигурацию для автоматического запуска.
3. Инициализация сетевых интерфейсов
Из ваших исследований следует, что проблема может заключаться в том, что сетевые интерфейсы не инициализируются автоматически при загрузке. Использование команды ifup --all
, как вы уже сделали, помогает разрешить часть проблем. Рассмотрим вашу последовательность команд и их влияние:
$ ifup --all
$ initctl emit static-network-up
$ initctl emit filesystem
Каждая из этих команд активирует определенные аспекты системы, и выполнение их вручную может обеспечить необходимый уровень выполнения.
4. Лог-файлы
Для более глубокого анализа проблемы полезно просмотреть системные журналы. Файл /var/log/syslog
и /var/log/dmesg
могут содержать полезные сообщения об ошибках или предупреждения, которые возникли при загрузке системы:
cat /var/log/syslog | less
cat /var/log/dmesg | less
Проверьте на наличие ошибок или предупреждений, связанных с инициализацией сетевых интерфейсов, файловых систем или других критически важных компонентов системы.
5. Обновление системы и приложений
Если предыдущие шаги не помогли, рекомендуется обновить вашу систему и все установленные приложения. Это можно сделать с помощью следующих команд:
sudo apt-get update
sudo apt-get upgrade
6. Обращение к поддержке VPS
Если после выполнения всех вышеперечисленных шагов проблема не решается, возможно, стоит обратиться в техническую поддержку вашего провайдера VPS. Они могут предоставить дополнительную информацию о том, что произошло во время приостановки вашего VPS и возможные проблемы с оборудованием или виртуализацией.
Заключение
Следуя предложенным шагам, вы сможете диагностировать и устранить проблемы с неизвестным уровнем выполнения на вашем сервере Ubuntu 14.04. Начните с проверки файла конфигурации, активных служб и сетевых интерфейсов, а затем, если потребуется, обращайтесь за помощью в поддержку. Надеемся, что это руководство окажется полезным и поможет восстановить корректную работу вашего сервера.