Проблема обновления на виртуальном сервере Digital Ocean с 20.04 по 22.04

Вопрос или проблема

Поскольку время до окончания поддержки моей установки Ubuntu 20.04 на виртуальном сервере Digital Ocean истекает, я пытаюсь выполнить обновление с помощью do-release-upgrade. Этот ответ “Ошибка информации о пакете” при обновлении до Ubuntu 20.04 помог мне преодолеть первый барьер, но затем я столкнулся с другой проблемой.

Я обновляюсь через ssh.

Обновление начинается и печатает несколько десятков строк информации, но затем выводит “Обновление информации о репозитории” и кажется зависает. Я оставил его в этом состоянии на час, но ничего больше не произошло. Когда я, наконец, нажал Ctrl-C, программа попросила меня завершить сессию screen. Проблема, похоже, связана с этой программой screen в сочетании с ssh; когда я попробовал обновление на виртуальной машине, оно прошло без проблем.

Я выполнял это обновление в прошлом на этом сервере (с 18.04 до 20.04) и не сталкивался с этой проблемой.

Как мне завершить это обновление?

Это действительно казалось взаимодействием между screen и входом через ssh.

В итоге я смог получить результат, используя “консоль восстановления” Digital Ocean; это позволило мне войти без ssh. С помощью этого метода доступа обновление прошло так же, как и на виртуальной машине.

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

Ответ или решение

Когда речь идет о своевременном обновлении серверных операционных систем, особенно когда приближается окончание срока поддержки, важно учесть все нюансы и потенциальные проблемы, которые могут возникнуть. В данном случае мы рассматриваем задачу обновления операционной системы с Ubuntu 20.04 до 22.04 на виртуальной машине (дроплет) из Digital Ocean. Поскольку обновление сдавалось некоторые трудности, связанные с использованием SSH и программы screen, необходимо разобраться в проблеме и предложить варианты её решения.

Теория (Theory): Обновление серверов через SSH — распространенная практика, однако важно понимать, что этот процесс может быть затруднен различными факторами. Часто во время обновления используются утилиты, такие как screen или tmux, которые позволяют избежать прерывания сеанс в случае сбоя соединения. Однако, как показывает опыт, такая комбинация может вызвать проблемы.

Во время процесса обновления обычной практикой является применение команды do-release-upgrade, которая отвечает за проверку и применение всех необходимых изменений в системе. Она автоматически переключает пользователя на новую сессию screen для предотвращения прерывания при обновлении через SSH. Однако в данной ситуации screen может создавать конфликты.

Пример (Example): Рассмотрим ситуацию, описанную пользователем. Обновление через SSH останавливалось на стадии «Updating repository information» и не двигалось дальше. Приходилось прибегать к прерыванию программы через Ctrl-C, что указывало на зависание процесса. Интересно, что проблема отсутствовала при обновлении виртуальной машины вне SSH, что навело на мысль о проблеме именно с комбинацией screen и SSH.

Применение (Application): Для решения проблемы было предпринято несколько шагов:

  1. Использование консоли восстановления Digital Ocean: Вместо стандартного SSH-подключения был использован интерактивный терминал от Digital Ocean. Это позволяет подключаться к серверу напрямую через браузер, минуя SSH и screen, что успешно решило проблему зависания.

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

  3. Альтернативные инструменты: Рассмотрите использование других инструментов управления сессиями, например, tmux, который может быть более устойчивым в подобных случаях. Инструмент screen, при всех его преимуществах, может иметь несовместимости в определенных средах.

  4. Мониторинг зависимостей и репозиториев: Важно включить Debugging режим для более точного диагностирования проблем, проверив, что все используемые репозитории поддерживают новую версию дистрибутива и что все зависимости могут быть удовлетворены.

  5. Проверка логов: Для точной диагностики причин сбоев важно изучить системные логи (например, /var/log/syslog), а также логи процесса обновления, располагавшиеся в файле, создаваемом do-release-upgrade.

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

Оцените материал
Добавить комментарий

Капча загружается...