Миграция с ОС CentOS 7 на AlmaLinux 8
О скрипте
30 июня 2024 года завершился жизненный цикл популярной операционной системы CentOS 7. Для удобной смены ОС мы подготовили скрипт, который конвертирует CentOS 7 в AlmaLinux 8. Это значительно упрощает переезд на новую операционную систему, так как не требует переустановки ОС или переноса данных на новый сервер.
Процесс конвертации состоит из нескольких этапов:
I этап: подготовка к конвертации;
II этап: конвертация ОС;
III этап: перезапуск и восстановление работы панели.
В итоге скрипт запускается дважды: для подготовки к конвертации и после перезапуска для восстановления работы панели. Сама конвертация происходит с помощью инструмента Elevate.
Подготовка
Ограничения
В ходе проверок были выявлены следующие ограничения, которые могут блокировать процесс конвертации:
- версия CentOS ниже 7.9;
- использование ядра не последней доступной версии. Elevate не позволит провести конвертацию в таком случае. Рекомендуется выполнить yum update и перезапустить сервер перед конвертацией;
- использование PHP из репозиториев remi/rhel/scl. После конвертации такие конфигурации могут не работать. Рекомендуется воспользоваться импортом панели;
- использование MySQL версии ниже 8.0.36 или MariaDB ниже 5.5.68. Elevate не может успешно конвертировать базы данных таких версий, что может вызвать множество проблем;
- недостаток оперативной памяти (менее 4 ГБ) или дискового пространства в директории /var/lib/ (менее 5 ГБ). Конвертация потребляет много ресурсов и при их недостатке может прерваться с ошибкой;
- xfc ftype=0. Конвертация в такой конфигурации не завершится;
- зашифрованные разделы файловой системы. Конвертация в таком случае не завершится;
- версия ispmanager ниже 6.95.0. Проверить можно командой
/usr/local/mgr5/bin/core ispmgr -v
;
Рекомендации
- версия Centos 7.9;
- ispmanager версии не ниже 6.95.0;
- установлены следующие пакеты: grub и python3;
- не меньше 4 Гигабайт оперативной памяти;
- не меньше 5 Гигабайт дисковой памяти;
- использовать утилиту screen на случай разрыва ssh соединения;
Как использовать
Запуск скрипта
Скрипт запускается с помощью Python 3. Для запуска выполните команду в директории со скриптом.
screen
curl -o centos7-to-alma8.tgz "http://download.ispmanager.com/tools/centos7-to-alma8.tgz"
tar -xzvf centos7-to-alma8.tgz
cd centos7-to-alma8
python3 main.py
После запуска будет выведено предупреждение. Для подтверждения начала процесса подготовки ОС и её конвертации введите yes
.
Скрипт проверит сервер на соответствие критериям, описанным выше. Если все критерии выполнены, начнется подготовка и конвертация. После этого сервер нужно перезапустить и снова запустить скрипт. Убедитесь, что подключены актуальные репозитории ОС и отключены/удалены неактуальные репозитории, чтобы избежать ошибок при установке пакетов после перезагрузки.
Можно не перезапускать сервер вручную, если указать флаг --reboot. В этом случае скрипт сам перезапустит сервер и запустится сразу после того, как сервер поднимется. Пример команды:
python3 main.py --reboot
Дополнительная информация
После успешной конвертации и восстановления работы панели рекомендуется ещё раз перезапустить сервер.
Перед конвертацией проверьте список исключений yum, так как их наличие может повлиять на успешность конвертации.
Скрипт миграции записывает логи в директории скрипта — convertation.log. В них выводится информация о текущем процессе и возможных ошибках. Elevate также записывает логи в /var/log/leapp/preupgrade.log и /var/log/leapp/upgrade.log.
После успешной конвертации в директории скрипта будет создан файл convertation-report.txt, в котором содержатся конфигурационные файлы, измененные при подготовке среды. Исходные варианты конфигурационных файлов сохраняются в /var/config_backups/.
Скрипт может завершиться с ошибкой по множеству причин. После исправления ошибок скрипт можно запустить заново — он продолжит выполнение с того места, на котором прервался.
На сервере могут остаться пакеты из репозиториев CentOS 7. Проверить их наличие можно командой:
rpm -qa | grep el7
Известные проблемы
- Если используется OpenLiteSpeed и PostgreSQL, то после конвертации PostgreSQL не запускается. Решения пока нет;
- Если используется Afterlogic, то после конвертации он будет заменен на RoundCube, но при этом сам Afterlogic продолжает работать.