뒤로
2025/03/13
8. CentOS에서 오라클 리눅스로 전환하기
2020년 12월, 공식 CentOS 블로그는 CentOS 개발이 종료되고 CentOS Stream으로 전환될 것이라고 발표했습니다. 이전에 RHEL 호환 배포판(RHEL 클론)으로 압도적인 존재감을 가졌던 CentOS의 종료 발표는 큰 충격을 주었습니다.
2020년 CentOS 종료 발표 이후 거의 3년이 지났으며, CentOS의 다양한 대안들이 등장했습니다. 이 기사에서는 CentOS와 CentOS 이후의 현재 상황을 설명하고, 유망한 마이그레이션 대상인 오라클 리눅스로 전환하는 방법을 설명하겠습니다.
CentOS 종료와 CentOS Stream
CentOS의 현재 상황을 이해하기 위해 CentOS 종료와 새로운 CentOS Stream의 개요를 설명하겠습니다.
CentOS 지원 종료 발표
CentOS 종료 발표는 공식 CentOS 블로그 “CentOS 프로젝트, CentOS Stream에 초점 이동“에 게시되었습니다.

이 블로그의 내용은 다음과 같이 요약할 수 있습니다:
- CentOS 8은 2021년 12월 31일에 지원이 종료됩니다.
- CentOS 7은 평소처럼 2024년 6월 30일까지 지원됩니다.
- CentOS는 앞으로 CentOS Stream으로 전환됩니다.
- CentOS Stream은 RHEL의 업스트림(개발) 브랜치입니다. 기존의 리빌드와는 다른 위치에 있습니다.
- CentOS 8 사용자는 차이가 적은 CentOS Stream으로 마이그레이션하거나, 프로덕션 환경에서 사용에 대해 우려가 있다면 RHEL로 이동하는 것이 권장됩니다.
또한, 사용자 관점에서 다음과 같이 표현할 수 있습니다:
- CentOS 지원이 곧 종료되므로 즉시 마이그레이션을 고려해야 합니다.
- 현재(2023년 9월) CentOS 8의 지원은 종료되었으며, CentOS 7의 지원은 2024년 6월에 종료됩니다. 지원 종료 후에는 업데이트 패키지가 더 이상 제공되지 않고 Yum 저장소도 사용할 수 없게 됩니다.
- 업데이트 패키지가 제공되지 않아 보안 위험이 증가합니다.
- CentOS Stream은 CentOS와 같은 RHEL의 리빌드가 아니라 개발 버전으로 위치づけ되어 있습니다. 따라서 적어도 프로덕션 환경에서 사용하기에는 문제가 있습니다.
CentOS와 CentOS Stream의 차이점
CentOS는 RHEL 호환 리눅스 배포판으로, RHEL 클론이라고도 알려져 있습니다. 따라서 RHEL과 호환되며 소스 코드 수준에서 거의 동일합니다. 참고로, 이전 기사 “오라클 리눅스를 사용하고 있나요? (1부)“에서 다음 다이어그램을 소개했습니다.
반면, CentOS Stream은 RHEL의 나이틀리 빌드로, 롤링 릴리스 방식으로 출시됩니다. 나이틀리 빌드는 개발 프로젝트의 최신 소스 코드를 사용해 생성된 빌드이며 공식 릴리스 버전과 다릅니다.
지금까지와 달라서 이해하기 조금 어렵지만, CentOS 프로젝트에서 게시한 다음 다이어그램이 도움이 될 것입니다. 예를 들어, RHEL 8(≓ CentOS 8)은 Fedora 28에서 분기되어 만들어졌습니다. 이후 8.2와 8.3이 순서대로 출시되었으며, 각각에 대한 에라타가 작성되었습니다. OS 설정에 따라 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의 차이점은 레드햇의 “아카하토 엔지니어 블로그: Fedora/CentOS Stream/CentOS/RHEL 간의 관계”에 자세히 설명되어 있습니다. 관심 있으시면 확인해 보세요.
각 리눅스 배포판의 지원 기간
이 기사에서는 RHEL 기반 리눅스 배포판의 지원 기간을 소개합니다. 현재 지원되는 유일한 CentOS 버전은 CentOS 7로, 2024년 6월 30일까지 지원됩니다. CentOS 9는 없습니다. 따라서 현재 CentOS를 사용 중이라면 다른 리눅스 배포판으로 마이그레이션해야 합니다.
버전 | 지원 종료(*1) |
---|---|
CentOS 7 | 2024/06/30 |
CentOS 8 | 2021/12/31 |
CentOS Stream 8 | 2024/05/31 |
CentOS Stream 9 | 미정 (RHEL9와 동일하게 예정) |
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: 오라클 리눅스의 지원 종료는 프리미어 지원 종료 시점입니다. 확장 지원 및 지속 지원은 더 긴 기간 동안 제공됩니다.
CentOS 마이그레이션 옵션
CentOS에서 마이그레이션할 후보 리눅스 배포판을 고려해 봅시다. 마이그레이션의 용이성을 고려하면 RHEL 시리즈가 가장 좋으며, 주요 옵션은 다음과 같습니다:
- CentOS Stream
- Red Hat Enterprise Linux
- Oracle Linux
- AlmaLinux
- Rocky Linux
- MIRACLE LINUX
- Amazon Linux
AlmaLinux와 Rocky Linux는 CentOS 종료에 대한 반발로 탄생한 리눅스 배포판입니다. 둘 다 주요 기업의 후원을 받으며 퍼블릭 클라우드에서도 제공됩니다.
어떤 것을 선택할지는 목적과 예산과 같은 요인에 따라 달라지므로 어느 것이 무조건 더 낫다고 말하기는 어렵습니다. 다음 표는 엔터프라이즈 사용 관점에서 비교한 것입니다. 엔터프라이즈 사용에서 중요한 요소는 지원 기간의 길이, 유료 지원 여부, 지원 하드웨어 여부, 상용 패키지 지원 여부, 비용입니다.
배포판 | 라이선스/구독 | 유료 지원 | 마이그레이션 방법 | 단점 및 부정적인 점 |
---|---|---|---|---|
CentOS Stream | 불필요 | 없음 | 저장소 교체 | 안정성이 높아 보이지만 주의가 필요합니다. 기존 RHEL과 호환되지 않으므로 지원 하드웨어가 없고 상용 패키지가 지원되지 않습니다. 상사나 고객을 설득할 수 있나요? |
Red Hat Enterprise Linux | 필요 | 가능 | 마이그레이션 도구 사용 가능 | 산업 리더지만 구독과 Red Hat Enterprise 계약이 필요합니다. |
Oracle Linux | 불필요, 하지만 일부 기능은 유료 지원 사용자에게만 제공 | 가능 | 마이그레이션 도구 사용 가능 | 오랜 실적을 가지고 있으며 Exadata와 같은 핵심 애플리케이션에 사용됩니다. 오라클 제품 사용자들 사이에서 잘 알려져 있지 않습니다. |
AlmaLinux/Rocky Linux | 불필요 | 유료 지원 가능(타사 지원 포함) | 마이그레이션 도구 사용 가능 | 새로운 배포판이므로 지켜볼 필요가 있습니다. |
Amazon Linux | 불필요 | 가능 | 벤더 제공 도구 없음 | 온프레미스에서 사용할 수 있고 AWS와 높은 호환성을 가집니다. Fedora 기반이므로 호환성이 높지 않고 지원 기간이 약 5년으로 짧습니다. |
MIRACLE LINUX | 불필요 | 가능 | 마이그레이션 도구 사용 가능 | 오랜 실적이 있지만 국내 벤더들 사이에서 잘 알려져 있지 않습니다. |
마이그레이션 도구를 사용해 CentOS에서 오라클 리눅스로 전환하기
오라클 리눅스는 centos2ol.sh
스크립트를 제공하여 CentOS를 오라클 리눅스로 즉석에서 전환할 수 있습니다. 이번에는 이 스크립트를 사용해 CentOS 8을 오라클 리눅스 8로 전환하겠습니다. CentOS 7으로 전환하는 절차도 거의 동일합니다.
오라클은 여러 문서를 발표했으므로, 이 칼럼에서는 주요 내용을 강조하면서 일부를 심층적으로 다루겠습니다.
마이그레이션 스크립트 실행 방법:
마이그레이션 스크립트를 실행하는 단계는 다음과 같습니다. 준비 단계 1~3은 여러 명령어가 필요하지만, 마이그레이션 단계 4와 5는 최소한의 명령어로 수행할 수 있습니다.
- 제한 사항 확인
- 시스템 백업 (본문에서는 생략)
- 소스 CentOS 준비
- 마이그레이션 스크립트 실행
- 마이그레이션 후 검증
제한 사항 확인
마이그레이션 도구의 제한 사항은 다음과 같습니다. 지금은 이러한 제한 사항을 인지하기만 하면 되고, 다음 섹션인 “소스 CentOS 준비”에서 이를 확인하겠습니다.
- 소스는 CentOS 6, 7, 8 또는 Rocky Linux 8, 9이어야 함
- CentOS 및 오라클 리눅스 Yum 저장소에 직접 또는 프록시를 통해 접근 가능해야 함
- 인스턴스가 Spacewalk과 같은 타사 패키지 관리 도구에 등록되어 있지 않아야 함
- 공식 CentOS 저장소 외의 소스에서 패키지를 설치한 경우, 호환될 수 있지만 동작을 보장하지 않음. 일부 소프트웨어는
/etc/oracle-release
가 설치되어 있으면 문제를 일으킬 수 있음 - 상용 안티바이러스 제품이나 하드웨어 드라이버와 같은 일부 커널 모듈이 설치되어 있으면 전환 후 작동하지 않을 수 있음
- 마이그레이션 스크립트는 base, updates, BaseOS와 같은 기본 저장소만 활성화함. 다른 저장소에서 패키지를 설치한 경우 추가 저장소를 활성화해야 할 수 있음
- /var/cache에 최소 5GB의 여유 공간이 있어야 함
소스 CentOS 준비
여기서는 스크립트 제한 사항을 위반하지 않는지 확인하겠습니다.
준비 단계는 관리자 권한이 필요하므로 명령어 앞에 sudo를 붙이거나 su를 사용해 root 사용자로 실행해야 합니다. 외관의 간단함을 강조하기 위해 sudo는 생략했습니다. 또한 CentOS 8은 yum 대신 dnf를 권장하지만, 호환성을 위해 yum을 사용했습니다.
1. CentOS 버전 확인
소스에 로그인하여 CentOS 버전을 확인합니다. 아래와 같이 8이라면 문제가 없습니다.
# cat /etc/centos-release CentOS Linux release 8.3.2011
2. CentOS Yum 저장소 연결 확인
CentOS Yum 저장소에 연결할 수 있는지 확인합니다. CentOS 8은 더 이상 미러 사이트에 저장소가 없으므로 연결할 수 없는 경우 아래와 같은 오류가 발생합니다:
# yum check-update CentOS Linux 8 - AppStream 51 B/s | 38 B 00:00 에러: repo '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 repo 이름 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 repo 이름
5. 패키지 업데이트
패키지를 최신 버전으로 업데이트합니다. 최신 버전으로 업데이트하는 것은 필수는 아니지만, 마이그레이션 스크립트를 실행할 때 업데이트되므로 결과적으로 동일합니다.
# yum update -y
6. 디스크 여유 공간 확인
/var/cache에 최소 5GB의 여유 공간이 있는지 확인합니다.
# 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 비활성화
GUI 환경이 설치되어 있다면 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 사용법: centos2ol.sh [옵션] 옵션 -h 이 도움말을 표시하고 종료 -k UEK 커널을 설치하지 않고 UEK 저장소를 비활성화 -r 모든 CentOS RPM을 오라클 리눅스 RPM으로 재설치 참고: 지원을 위해 필요하지 않음 -V 전환 전후 RPM 정보 확인
마이그레이션 스크립트 실행
이제 모든 준비가 완료되었으므로 마이그레이션 스크립트를 실행하여 오라클 리눅스로 전환합니다. 실행 시간은 설치된 패키지 수, 회선 속도, 머신 성능에 따라 다릅니다. 제가 테스트한 환경에서는 약 10~60분이 걸렸습니다.
# bash centos2ol.sh
스크립트가 성공적으로 실행되면 다음 메시지가 표시됩니다:
동기화 성공. GRUB2 부트로더 업데이트 중. grub 설정 파일 생성 중 ... 완료 기본 부트 커널을 UEK로 전환 중. yum 캐시 제거 중 전환 완료. 오라클은 이 시스템을 재부팅할 것을 권장합니다.
메시지에 따라 시스템을 재시작합니다.
# systemctl reboot
마이그레이션 후 검증
재부팅 후 시스템 상태를 확인합니다.
- /etc/oracle-release가 추가되고 /etc/centos-release가 제거되었습니다.
$ ls -l /etc/*-release -rw-r--r--. 1 root root 32 8월 7 00:03 /etc/oracle-release -rw-r--r--. 1 root root 489 8월 7 00:03 /etc/os-release -rw-r--r--. 1 root root 45 8월 7 00:03 /etc/redhat-release lrwxrwxrwx. 1 root root 14 8월 7 00:03 /etc/system-release -> oracle-release
- 마이그레이션 전에는 CentOS 8.3이었지만, 이제는 최신 오라클 리눅스 8.8입니다. 마이그레이션 스크립트를 사용하면 최신 버전이 됩니다.
$ cat /etc/oracle-release Oracle Linux Server release 8.8
- 기본 커널은 RHCK가 아닌 UEK입니다. UEK를 사용하고 싶지 않다면 스크립트를 실행할 때
centos2ol.sh -k
를 지정합니다:
$ uname -r 5.4.17-2136.322.6.2.el8uek.x86_64
- 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
- 한 단계 더 나아가 커널 관련 패키지 목록을 표시합니다. 이전 CentOS 커널과 오라클 리눅스용 최신 RHCK 및 UEK가 설치되어 있는 것을 볼 수 있습니다.
# 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
- 활성화된 저장소를 확인하면 오라클 리눅스 저장소로 교체된 것을 볼 수 있습니다.
yum repolist repo id repo 이름 ol8_UEKR6 오라클 리눅스 8용 최신 Unbreakable Enterprise Kernel 릴리스 6 (x86_64) ol8_appstream 오라클 리눅스 8 애플리케이션 스트림 (x86_64) ol8_baseos_latest 오라클 리눅스 8 BaseOS 최신 (x86_64)
결론
마이그레이션 스크립트를 사용하면 CentOS에서 오라클 리눅스로 전환하는 것이 매우 쉽다는 것을 알 수 있습니다. 가장 번거로운 부분은 사전 확인 작업입니다. 또한 본문에서 설명하지 않았지만, 실행 전에 반드시 백업을 하세요.
요약
- CentOS 지원이 곧 종료되므로 빠르게 마이그레이션해야 합니다.
- 오라클 리눅스는 유력한 마이그레이션 대상입니다.
- 마이그레이션 스크립트 centos2ol.sh를 사용하면 CentOS에서 오라클 리눅스로 쉽게 전환할 수 있습니다.
- 마이그레이션 시간은 서버당 약 10~60분입니다. 설치된 패키지 수, 서버 성능, 회선 속도에 따라 다릅니다.
- 스크립트에는 인터넷 저장소에 연결할 수 있어야 하는 등의 몇 가지 제한 사항이 있습니다.
RHEL 클론 업계는 2020년 말부터 혼란에 빠졌지만, 2023년에는 또 다른 소동이 있습니다. 레드햇은 이전에 RHEL 소스 코드를 공개했지만, 앞으로는 공개하지 않겠다고 발표했습니다(아래 링크 참조). 이에 일부 벤더가 대책을 발표했습니다. 오라클은 오라클 리눅스뿐만 아니라 Solaris도 오랫동안 개발해 왔으므로 이 분야에서 안심할 수 있을 것입니다.
Publickey!: “레드햇, 클론 OS 벤더를 비판하며 ‘가치를 추가하지 않고 코드를 리빌드하는 것은 오픈 소스에 위협’이라고 발언”