Назад

2025/04/21

8. Переход с CentOS на Oracle Linux

В декабре 2020 года официальный блог CentOS объявил, что разработка CentOS будет завершена, и он будет преобразован в CentOS Stream. Объявление о завершении CentOS, который ранее занимал доминирующее положение как дистрибутив, совместимый с RHEL (клон RHEL), стало большим сюрпризом.

Прошло почти три года с момента объявления о завершении CentOS в 2020 году, и появилось множество альтернатив CentOS. В этой статье мы объясним текущую ситуацию с CentOS и пост-CentOS, а также как перейти на Oracle Linux, который является перспективным направлением миграции.

Завершение CentOS и CentOS Stream

Чтобы понять текущую ситуацию с CentOS, мы объясним обзор завершения CentOS и нового CentOS Stream.

Объявление о завершении поддержки CentOS

Объявление о завершении CentOS было опубликовано в официальном блоге CentOS, “Проект CentOS переключает фокус на CentOS Stream“.

Содержание этого блога можно кратко изложить следующим образом:

  • CentOS 8 прекратит поддержку 31 декабря 2021 года
  • CentOS 7 будет поддерживаться до 30 июня 2024 года, как обычно.
  • CentOS в будущем перейдет на CentOS Stream
  • CentOS Stream — это восходящая (разрабатываемая) ветка RHEL. Она позиционируется иначе, чем традиционные пересборки.
  • Пользователям CentOS 8 рекомендуется перейти на CentOS Stream, у которого меньше различий, или на RHEL, если их беспокоит использование в производственной среде.

Кроме того, с точки зрения пользователя это можно выразить следующим образом:

  • Поддержка CentOS скоро закончится, поэтому необходимо немедленно рассмотреть миграцию.
  • На данный момент (сентябрь 2023 года) поддержка CentOS 8 завершена, а поддержка CentOS 7 закончится в июне 2024 года. После окончания поддержки обновления пакетов больше не будут предоставляться, и репозиторий Yum станет недоступным.
  • Отсутствие обновлений пакетов увеличивает риски безопасности
  • CentOS Stream — это не пересборка RHEL, как CentOS, а позиционируется как версия для разработки. Поэтому есть проблемы с использованием в производственной среде.

Различия между CentOS и CentOS Stream

CentOS был дистрибутивом Linux, совместимым с RHEL, также известным как клон RHEL. Поэтому он совместим с RHEL и практически идентичен на уровне исходного кода. Кстати, я представил следующую диаграмму в предыдущей статье, “Используете ли вы Oracle Linux? (Часть 1)“.

С другой стороны, CentOS Stream — это ночная сборка RHEL, которая выпускается на основе непрерывного выпуска (rolling release). Ночная сборка — это сборка, созданная с использованием последнего исходного кода проекта разработки, и она отличается от официальной версии выпуска.

Это немного сложно понять, потому что это отличается от того, что было до сих пор, но следующая диаграмма, опубликованная проектом CentOS, должна помочь. Например, RHEL 8 (≓ CentOS 8) был создан путем отделения от Fedora 28. Затем были выпущены 8.2 и 8.3 в этом порядке, и для каждого были созданы исправления. В зависимости от настроек ОС также возможно обновление с 8.3 до последней версии 8.8.

Источник: CentOS Stream — это непрерывная доставка, лицензировано под CC BY-SA 4.0

CentOS Stream — это система непрерывного выпуска, поэтому нет минорных версий, таких как 8.2 или 8.3. У него есть только дата выпуска. Если посмотреть на ISO-образ, опубликованный на зеркальном сайте, он имеет дату, например 20230825. Также 20230825 и latest на зеркальном сайте одинаковы, и содержимое latest всегда обновляется.

Кроме того, при рассмотрении на уровне отдельных пакетов нет гарантии, что CentOS Stream и RHEL идентичны. Поскольку изменения сначала вносятся в CentOS Stream, при сравнении последних версий CentOS Stream новее и может считаться версией, которая еще не тестировалась в производственной среде.

Надеюсь, вы понимаете, что, хотя CentOS и CentOS Stream функционально похожи, их позиции существенно различаются. Вот почему это вызвало такой ажиотаж по всему миру. Различия между CentOS и CentOS Stream подробно описаны в блоге Red Hat “Блог инженера Akahato: Связь между Fedora/CentOS Stream/CentOS/RHEL“. Пожалуйста, ознакомьтесь, если вам интересно.

Период поддержки для каждого дистрибутива Linux

В этой статье представлен период поддержки для дистрибутивов Linux на основе RHEL. Единственная версия CentOS, которая в настоящее время поддерживается, — это CentOS 7, поддержка которой продлится до 30 июня 2024 года. CentOS 9 не существует. Поэтому, если вы сейчас используете CentOS, вам нужно будет перейти на один из других дистрибутивов Linux.

Версия Конец поддержки(*1)
CentOS 7 2024/06/30
CentOS 8 2021/12/31
CentOS Stream 8 2024/05/31
CentOS Stream 9 Не определено (планируется совпадать с RHEL 9)
Red Hat Enterprise Linux 7 2024/06/30
Red Hat Enterprise Linux 8 2029/05/31
Red Hat Enterprise Linux 9 2032/05/31
Oracle Linux 7 2024/12
Oracle Linux 8 2029/07
Oracle Linux 9 2032/06

*1: Конец поддержки для Oracle Linux — это конец Premier Support. Расширенная поддержка и поддержка Sustaing Support будут предоставляться в течение более длительного периода.

Варианты миграции с CentOS

Давайте рассмотрим дистрибутивы Linux, которые являются кандидатами для миграции с CentOS. С учетом простоты миграции серия RHEL является лучшей, и основные варианты следующие:

  • CentOS Stream
  • Red Hat Enterprise Linux
  • Oracle Linux
  • AlmaLinux
  • Rocky Linux
  • MIRACLE LINUX
  • Amazon Linux

AlmaLinux и Rocky Linux — это дистрибутивы Linux, возникшие в результате протеста против прекращения CentOS. Оба спонсируются крупными компаниями и также предлагаются в публичных облаках.

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

Дистрибутив Лицензия/Подписка Платная поддержка Метод миграции Минусы и негативные моменты
CentOS Stream Не требуется Отсутствует Замена репозитория Кажется очень стабильным, но нужно быть осторожным. Не совместим с традиционным RHEL, поэтому нет поддерживаемого оборудования и коммерческие пакеты не поддерживаются. Сможете ли вы убедить своего босса или клиентов?
Red Hat Enterprise Linux Требуется Доступна Доступны инструменты миграции Лидер отрасли, но требуется подписка и соглашение Red Hat Enterprise
Oracle Linux Не требуется, но некоторые функции доступны только пользователям с платной поддержкой Доступна Доступны инструменты миграции Имеет долгую историю и используется для критически важных приложений, таких как Exadata. Не очень известен среди пользователей продуктов Oracle.
AlmaLinux/Rocky Linux Не требуется Доступна платная поддержка (включая стороннюю поддержку) Доступны инструменты миграции Это новый дистрибутив, поэтому за ним нужно следить.
Amazon Linux Не требуется Доступна Нет инструментов от поставщика Может использоваться локально и имеет высокую совместимость с AWS. Поскольку основан на Fedora, совместимость не высока, а период поддержки короткий, около 5 лет.
MIRACLE LINUX Не требуется Доступна Доступны инструменты миграции Хотя имеет долгую историю, не очень известен среди местных поставщиков.

Переход с CentOS на Oracle Linux с использованием инструментов миграции

Oracle Linux предоставляет скрипт centos2ol.sh, который выполняет переход с CentOS на Oracle Linux на месте. На этот раз мы будем использовать этот скрипт для перехода с CentOS 8 на Oracle Linux 8. Процедура перехода на CentOS 7 почти такая же.

Oracle выпустила несколько документов, поэтому в этой колонке мы углубимся в некоторые из них, выделяя основные моменты.

Для запуска скрипта миграции:

Шаги для запуска скрипта миграции следующие. Подготовительные шаги с 1 по 3 требуют нескольких команд. Однако шаги миграции 4 и 5 можно выполнить с минимальным количеством команд.

  1. Проверка ограничений
  2. Резервное копирование системы (опущено в тексте)
  3. Подготовка исходного CentOS
  4. Выполнение скрипта миграции
  5. Проверка после миграции

Проверка ограничений

Ограничения инструмента миграции следующие. Пока вам нужно только знать об этих ограничениях, и мы проверим их в следующем разделе, “Подготовка исходного CentOS”.

  1. Исходный дистрибутив — CentOS 6, 7, 8 или Rocky Linux 8, 9
  2. Доступ к репозиториям Yum CentOS и Oracle Linux, либо напрямую, либо через прокси
  3. Экземпляр не зарегистрирован в сторонних инструментах управления пакетами, таких как Spacewalk.
  4. Если вы установили пакеты из источников, отличных от официального репозитория CentOS, они могут быть совместимыми, но мы не гарантируем их работу. Некоторые программы могут вызывать проблемы, если установлены в /etc/oracle-release.
  5. Если установлены некоторые модули ядра, такие как коммерческие антивирусные продукты или драйверы оборудования, они могут не работать после перехода.
  6. Скрипт миграции активирует только базовые репозитории, такие как base, updates и BaseOS. Если вы установили пакеты из других репозиториев, вам может потребоваться включить дополнительные репозитории.
  7. В /var/cache должно быть не менее 5 ГБ свободного места

Подготовка исходного CentOS

Здесь мы убедимся, что не нарушаем никаких ограничений скрипта.

Обратите внимание, что подготовительные шаги требуют прав администратора, поэтому вы должны либо добавлять sudo перед командой, либо использовать su для выполнения от имени пользователя root. Я опустил sudo, чтобы подчеркнуть простоту внешнего вида. Также CentOS 8 рекомендует использовать dnf вместо yum, но я придерживался yum, поскольку он совместим.

1. Проверка версии CentOS

Войдите в исходную систему и проверьте версию CentOS. Если это версия 8, как показано ниже, проблем нет.

# cat /etc/centos-release
CentOS Linux release 8.3.2011

2. Проверка подключения к репозиторию Yum CentOS

Проверьте, можете ли вы подключиться к репозиторию Yum CentOS. У CentOS 8 больше нет репозитория на зеркальном сайте, поэтому, если вы не можете подключиться, вы получите следующую ошибку:

# yum check-update
CentOS Linux 8 - AppStream                       51  B/s |  38  B     00:00
Ошибка: Не удалось загрузить метаданные для репозитория 'appstream': Не удалось подготовить внутренний список зеркал: Нет URL в списке зеркал

Если возникает ошибка, измените указываемый репозиторий, выполнив следующую команду:

# sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror/baseurl=http:\/\/vault/g' /etc/yum.repos.d/CentOS-*repo

Если репозиторий доступен, метаданные репозитория будут загружены, и будут отображены обновляемые пакеты, как показано ниже.

# yum check-update
CentOS Linux 8 - AppStream                       16 MB/s | 8.4 MB     00:00
CentOS Linux 8 - BaseOS                         9.2 MB/s | 4.6 MB     00:00
CentOS Linux 8 - Extras                          46 kB/s |  10 kB     00:00

NetworkManager.x86_64         1:1.32.10-4.el8       baseos
NetworkManager-libnm.x86_64   1:1.32.10-4.el8       baseos

3. Проверка на наличие проблемных пакетов

Проверьте ядра и пакеты, установленные вне базовых репозиториев (anaconda, base, baseos, updates, AppStream и т.д.). Ядра особенно проблематичны, поэтому удалите ядро centosplus, если оно присутствует.

Отобразите установленное ядро. Имя репозитория, из которого оно было установлено, отображается в крайнем правом столбце. В этом примере все в порядке.

# yum list installed kernel
kernel.x86_64                 4.18.0-240.el8        @anaconda

Чтобы проверить не только ядро, но и пакеты, установленные из репозиториев, отличных от базового, используйте следующую команду. Если есть пакеты, установленные из сторонних репозиториев, таких как EPEL, соответствующие пакеты будут отображены. Однако пакеты пользовательского пространства редко вызывают проблемы.

# rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{VENDOR}\n' | grep -v "CentOS"

4. Проверка базового репозитория

Убедитесь, что базовые репозитории включены. Если они отключены, включите их.

# yum repolist
repo id                имя репозитория
appstream              CentOS Linux 8 - AppStream
baseos                 CentOS Linux 8 - BaseOS
extras                 CentOS Linux 8 - Extras

Если какие-либо репозитории отключены, включите их.

# dnf config-manager --enable BaseOS AppStream extras

Также, если в начале отображается следующее сообщение, начинающееся с “This system is”, система зарегистрирована в Spacewalk и т.д. Скрипт миграции использовать нельзя, поэтому либо удалите ее из управления, либо откажитесь от использования скрипта.

# yum repolist
...
This system is receiving updates from Red Hat Satellite or Spacewalk server
repo id                       имя репозитория

5. Обновление пакетов

Обновите пакеты до последней версии. Хотя обновление до последней версии не обязательно, оно будет выполнено при запуске скрипта миграции, так что в итоге это будет то же самое.

# yum update -y

6. Проверка свободного дискового пространства

Убедитесь, что в /var/cache есть не менее 5 ГБ свободного места.

# df -h /var/cache
Файловая система                Размер  Использовано  Доступно  Использовано%  Точка монтирования
/dev/mapper/cl_centos8-root    47G    1.7G         46G       4%            /

7. Отключение автоматического обновления пакетов

Если автоматическое обновление пакетов активировано во время работы скрипта миграции, они не будут работать должным образом, поэтому их необходимо отключить. В CentOS есть два типа автоматического обновления пакетов:

  • yum-cron (CentOS 7) или dnf-automatic (CentOS 8)
  • Packagekit, встроенный в среду рабочего стола

Если у вас не установлена среда рабочего стола, проверьте yum-cron или dnf-automatic. Если рабочий стол установлен, проверьте оба.

7-1. Отключение dnf-automatic

Проверьте, установлен ли dnf-automatic. Если ничего не отображается, как ниже, перейдите к “7-2. Отключение Packagekit”.

# rpm -qa | grep dnf-automatic
★ Если ничего не отображается, значит, он не установлен

Если установлен, проверьте настройки таймера. В следующем примере автоматические загрузки (dnf-automatic-download.timer) включены.

# systemctl list-unit-files --type=timer | grep dnf-auto
dnf-automatic-download.timer   enabled
dnf-automatic-install.timer    disabled
dnf-automatic-notifyonly.timer disabled
dnf-automatic.timer            disabled

Если какие-либо из них включены, отключите их все.

# systemctl disable dnf-automatic-download.timer --now
7-2. Отключение Packagekit

Если установлена графическая среда, проверьте Packagekit.

# systemctl status packagekit

Когда отображается “active (running)”, как показано в отметке ★, он работает. Если служба Packagekit вообще не существует, будет сказано “Unit packagekit.service could not be found.” В этом случае это не имеет значения.

● packagekit.service - PackageKit Daemon
   Loaded: loaded (/usr/lib/systemd/system/packagekit.service; static; vendor preset: disabled)
   Active: ★active (running)★ since Tue 2023-08-15 09:31:27 GMT; 59s ago
 Main PID: 21960 (packagekitd)
    Tasks: 3
   CGroup: /system.slice/packagekit.service
           └─21960 /usr/libexec/packagekitd

Dec 15 09:31:26 centos7 systemd[1]: Starting PackageKit Daemon...
Dec 15 09:31:27 centos7 PackageKit[21960]: daemon start
Dec 15 09:31:27 centos7 systemd[1]: Started PackageKit Daemon.

Когда Packagekit работает, остановите службу и отключите автоматический запуск.

# systemctl disable packagekit --now

8. Загрузка скрипта миграции

Загрузите скрипт миграции. Если для доступа в Интернет требуется прокси, укажите сервер прокси в опциях --proxy или переменных окружения https_proxy.

# curl -O https://raw.githubusercontent.com/oracle/centos2ol/main/centos2ol.sh

Проверьте доступные опции.

# bash centos2ol.sh -h
Usage: centos2ol.sh [OPTIONS]

OPTIONS
-h
        Показать эту справку и выйти
-k
        Не устанавливать ядро UEK и отключить репозитории UEK
-r
        Переустановить все RPM CentOS на RPM Oracle Linux
        Примечание: Это не обязательно для поддержки
-V
        Проверить информацию RPM до и после перехода

Запуск скриптов миграции

Теперь, когда все готово, запустите скрипт миграции, чтобы перейти на Oracle Linux. Время выполнения зависит от количества установленных пакетов, скорости соединения и производительности машины. В среде, которую я тестировал, это заняло от 10 до 60 минут.

# bash centos2ol.sh

Если скрипт успешно выполнен, отображается следующее сообщение:

Синхронизация успешна.
Обновление загрузчика GRUB2.
Генерация конфигурационного файла grub ...
готово
Переключение ядра по умолчанию на UEK.
Удаление кэша yum
Переключение завершено.
Oracle рекомендует перезагрузить эту систему.

Следуйте сообщению, чтобы перезапустить систему.

# systemctl reboot

Проверка после миграции

После перезагрузки проверьте состояние вашей системы.

  1. Файл /etc/oracle-release добавлен, а /etc/centos-release удален.
$ ls -l /etc/*-release
-rw-r--r--. 1 root root  32  Авг  7 00:03 /etc/oracle-release
-rw-r--r--. 1 root root 489  Авг  7 00:03 /etc/os-release
-rw-r--r--. 1 root root  45  Авг  7 00:03 /etc/redhat-release
lrwxrwxrwx. 1 root root  14  Авг  7 00:03 /etc/system-release -> oracle-release
  1. До миграции версия была CentOS 8.3, а теперь это последняя Oracle Linux 8.8. Если вы мигрируете с помощью скрипта миграции, она станет последней версией.
$ cat /etc/oracle-release
Oracle Linux Server release 8.8
  1. Ядро по умолчанию — UEK, а не RHCK. Если вы не хотите использовать UEK, укажите centos2ol.sh -k при запуске скрипта следующим образом:
$ uname -r
5.4.17-2136.322.6.2.el8uek.x86_64
  1. Проверьте, остались ли пакеты CentOS. Отображаются следующие ядра. Они не используются, поэтому их можно удалить.
$ rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{VENDOR}\n' | grep CentOS | sort -n
kernel-4.18.0-240.el8   CentOS
kernel-core-4.18.0-240.el8      CentOS
kernel-modules-4.18.0-240.el8   CentOS
  1. Пойдем дальше и отобразим список пакетов, связанных с ядром. Мы видим, что установлены предыдущее ядро CentOS и последние RHCK и UEK для Oracle Linux.
# rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{VENDOR}\n' | grep kernel- | sort -n
kernel-4.18.0-240.el8   CentOS
kernel-4.18.0-477.21.1.el8_8    Oracle America
kernel-core-4.18.0-240.el8      CentOS
kernel-core-4.18.0-477.21.1.el8_8       Oracle America
kernel-modules-4.18.0-240.el8   CentOS
kernel-modules-4.18.0-477.21.1.el8_8    Oracle America
kernel-tools-4.18.0-477.21.1.el8_8      Oracle America
kernel-tools-libs-4.18.0-477.21.1.el8_8 Oracle America
kernel-uek-5.4.17-2136.322.6.2.el8uek   Oracle America
  1. Проверьте включенные репозитории, вы увидите, что они были заменены на репозитории Oracle Linux.
yum repolist
repo id           имя репозитория
ol8_UEKR6         Последний выпуск Unbreakable Enterprise Kernel 6 для Oracle Linux 8 (x86_64)
ol8_appstream     Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64)

Заключение

Используя скрипт миграции, вы можете видеть, что переход с CentOS на Oracle Linux очень прост. Самая сложная часть — это предварительная проверка. Также, хотя это не объяснялось в основном тексте, обязательно сделайте резервную копию перед запуском.

Краткое содержание

  • Поддержка CentOS скоро закончится, поэтому вам нужно быстро мигрировать.
  • Oracle Linux — вероятная цель миграции
  • Скрипт миграции centos2ol.sh упрощает переход с CentOS на Oracle Linux.
  • Время миграции составляет около 10–60 минут на сервер. Это зависит от количества установленных пакетов, производительности сервера и скорости соединения.
  • У скрипта есть некоторые ограничения, такие как возможность подключения к интернет-репозиториям.

Индустрия клонов RHEL находится в смятении с конца 2020 года, но в 2023 году возник новый ажиотаж. Ранее Red Hat публиковала исходный код RHEL, но объявила, что в будущем он не будет публичным (см. ссылку ниже). В ответ некоторые поставщики объявили о контрмерах. Oracle не только много лет разрабатывает Oracle Linux, но и Solaris, поэтому в этой области вы можете чувствовать себя в безопасности.

Publickey!: “Oracle, SUSE и CIQ, главный спонсор Rocky Linux, создают “Ассоциацию открытого корпоративного Linux” для выпуска Linux, совместимого с RHEL, с ошибками”

Publickey!: “Red Hat критикует поставщиков клонов ОС, заявляя: ‘если вы просто пересобираете код без добавления ценности, это угроза для открытого исходного кода'”