Блог / Статьи

Полезная информация для вашего хостинга

Миграция с CentOS на Rocky Linux

Миграция с CentOS на Rocky Linux после EOL: полное руководство с разбором типичных ошибок и решений

Содержание

В декабре 2021 года Red Hat официально прекратил поддержку CentOS 8, а в июне 2024-го — и CentOS 7. Это решение вызвало волну паники среди владельцев серверов по всему миру: тысячи production-систем остались без обновлений безопасности, патчей и технической поддержки. Для многих это стало сигналом к немедленной миграции. Один из самых логичных путей — переход на Rocky Linux, созданный бывшим соучредителем CentOS Грегом Курцером как прямой, 1:1-совместимый заменитель RHEL.

Однако миграция — не просто «переустановка ОС». Это сложный процесс, требующий планирования, тестирования и глубокого понимания инфраструктуры. В этой статье подробно разбирается **пошаговая стратегия перехода с CentOS на Rocky Linux**, основанная на реальных кейсах системных администраторов, с акцентом на **типичные ошибки**, **методы восстановления** и **практические решения** для безопасного обновления без потери данных и простоя.

Почему CentOS больше нельзя использовать в продакшене после EOL

End-of-Life (EOL) означает, что разработчик больше не выпускает:

  • Обновления безопасности — уязвимости остаются открытыми;
  • Исправления багов — критические ошибки не чинятся;
  • Поддержку пакетов — репозитории становятся read-only или удаляются.

Например, в 2024 году была обнаружена уязвимость в OpenSSH (CVE-2024-6387), затрагивающая миллионы серверов. Пользователи CentOS 7 не получили патча — их системы остались уязвимыми. Это делает эксплуатацию таких серверов в production юридически и технически рискованной.

Кроме того, многие современные приложения (например, новые версии PHP, Node.js, Docker) перестают поддерживать старые ядра и библиотеки, используемые в CentOS 7.

Подготовка к миграции: резервное копирование, тестовый стенд и инвентаризация сервисов

Любая миграция начинается не с команды в терминале, а с подготовки. Пропуск этого этапа — главная причина катастроф.

1. Полное резервное копирование

Используйте комбинацию методов:

  • Образ диска через dd или Clonezilla — для полного восстановления;
  • Резервные копии конфигураций — каталоги /etc, /var/www, /home;
  • Дампы баз данных — например, для MySQL/MariaDB:
mysqldump -u root -p --all-databases > /backup/all_dbs_$(date +%F).sql

2. Создание тестового стенда

Разверните идентичную копию production-сервера на отдельной машине или виртуальной среде (VirtualBox, Proxmox, VMware). Это позволит протестировать миграцию без риска для основного проекта.

3. Инвентаризация сервисов

Составьте список всего, что работает на сервере:

  • Веб-сервер (Apache/Nginx);
  • Базы данных (MySQL, PostgreSQL);
  • Почтовые сервисы (Postfix, Dovecot);
  • Крон-задачи;
  • Проприетарные приложения (1С, Bitrix, CRM);
  • SELinux-политики и custom systemd-юниты.

Для автоматизации можно использовать:

systemctl list-unit-files --type=service | grep enabled

CentOS1

Попытка автоматической миграции через Leapp: почему она часто завершается ошибкой

Проект Leapp (Leveraging Existing Automation for Project) — официальный инструмент Red Hat для миграции между мажорными версиями RHEL. Сообщество адаптировало его и для CentOS → Rocky Linux.

Команда выглядит просто:

leapp upgrade --target rocky8

Но на практике даже на «чистом» CentOS 7 возникают десятки ошибок:

Типичные ошибки Leapp:

  • «Unsupported third-party packages» — наличие пакетов из EPEL, Remi, RPM Fusion;
  • «Inhibitor: Custom kernel modules detected» — драйверы NVIDIA, ZFS, VirtualBox;
  • «SELinux policy incompatibility» — кастомные политики не переносятся;
  • «Python 2 dependency» — многие скрипты всё ещё используют Python 2, которого нет в Rocky 8/9.

В одном из реальных кейсов Leapp завершился с ошибкой на этапе «Initramfs generation», оставив систему в состоянии «полумёртвой» — загрузка останавливалась на initramfs shell.

Вывод: Leapp подходит только для очень простых, стандартных установок. Для большинства production-серверов требуется ручной подход.

Ручная миграция: пошаговая перенастройка репозиториев, SELinux и systemd-юнитов

Более надёжный путь — полная переустановка ОС с последующим восстановлением данных. Но если переустановка невозможна (например, физический сервер без KVM), можно выполнить in-place миграцию вручную.

Шаг 1: Отключение сторонних репозиториев

sudo yum-config-manager --disable epel remi-safe rpmfusion*

Шаг 2: Удаление CentOS-специфичных пакетов

sudo yum remove centos-logos centos-release

Шаг 3: Установка репозитория Rocky Linux

Скачайте и запустите официальный скрипт:

curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
sudo chmod +x migrate2rocky.sh
sudo ./migrate2rocky.sh -r

Этот скрипт заменяет все CentOS-пакеты на эквиваленты Rocky Linux, сохраняя версионность (CentOS 7 → Rocky 7, CentOS 8 → Rocky 8).

Шаг 4: Обновление системы

sudo dnf clean all
sudo dnf update -y

CentOS

Проблемы с проприетарными драйверами и их решение

Одна из самых частых проблем — отсутствие драйверов для специфического оборудования: RAID-контроллеров, GPU, сетевых карт.

Пример: драйвер NVIDIA

После миграции модуль ядра nvidia.ko перестаёт загружаться, так как версия ядра изменилась.

Решение:

# Установка EPEL и development tools
sudo dnf install epel-release
sudo dnf groupinstall "Development Tools"
sudo dnf install kernel-devel-$(uname -r)

# Скачивание и установка драйвера с сайта NVIDIA
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.183.01/NVIDIA-Linux-x86_64-535.183.01.run
sudo sh NVIDIA-Linux-x86_64-535.183.01.run

RAID-контроллеры (например, MegaRAID)

Драйверы часто поставляются в виде RPM-пакетов от производителя. Их нужно пересобрать под новое ядро:

rpmbuild --rebuild MegaCli-8.07.14-1.x86_64.rpm

SELinux и systemd: как восстановить кастомные настройки

SELinux часто «ломается» после миграции, блокируя доступ веб-сервера к файлам.

Диагностика:

sudo ausearch -m avc -ts recent

Покажет, какие именно политики нарушаются.

Восстановление контекста:

sudo restorecon -R /var/www/html

Если у вас были кастомные политики (например, myweb.te), их нужно перекомпилировать:

checkmodule -M -m -o myweb.mod myweb.te
semodule_package -o myweb.pp -m myweb.mod
sudo semodule -i myweb.pp

Systemd-юниты

Проверьте, что все кастомные сервисы работают:

sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service

Финальный этап: проверка, мониторинг и документирование изменений

После успешной миграции необходимо:

  • Проверить все сервисы — веб, почта, БД, cron;
  • Запустить нагрузочное тестирование (например, через ab или hey);
  • Настроить мониторинг (Zabbix, Netdata, Prometheus);
  • Обновить документацию — зафиксируйте версии ОС, ПО, особенности конфигурации.

Также рекомендуется настроить автоматические обновления безопасности:

sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer

Итог: 8 часов работы, но система снова поддерживается до 2029 года

Хотя миграция с CentOS на Rocky Linux требует времени и внимания, результат оправдывает усилия. Rocky Linux гарантирует:

  • 100% совместимость с RHEL — все enterprise-приложения работают без изменений;
  • Поддержка до 2029 года (для Rocky 8) и до 2032 (для Rocky 9);
  • Активное сообщество и регулярные обновления;
  • Бесплатность и открытость — без скрытых условий, как у Oracle Linux.

Для компаний, которые не готовы тратить ресурсы на самостоятельную миграцию, отличным решением станет переход на управляемый хостинг с поддержкой современных ОС. Например, сервис хостинг-беларусь.рф предоставляет серверы на Rocky Linux с предустановленной защитой от DDoS, резервным копированием и технической поддержкой 24/7.

Rocky Linux

Заключение: миграция — не катастрофа, а возможность модернизации

Конец поддержки CentOS — не конец света, а повод привести инфраструктуру в порядок. Миграция на Rocky Linux — это шанс избавиться от «технического долга», обновить стек и обеспечить безопасность на годы вперёд. Главное — действовать методично, с резервной копией и планом отката. Тогда даже самый сложный переход пройдёт гладко.