RHEL7 환경에서 RHEL8 qcow2 이미지 작업 시 virt-customize 오류 해결 방법
RHEL7 환경에서 RHEL8 기반의 qcow2
이미지 작업을 진행할 때, virt-customize 명령어를 사용할 경우 발생하는 오류에 대해 분석하고, 이를 우회하는 방법(workaround)을 안내합니다. 이 글은 실무에서 자주 마주하는 문제에 대한 비공식 해결 방법을 다루고 있으며, RHEL8 이미지 작업을 RHEL7 호스트에서 처리할 수 있도록 돕습니다.
1. virt-customize 에러 개요
RHEL7 환경에서 RHEL8 qcow2 이미지를 대상으로 virt-customize를 실행하면 다음과 같은 에러가 발생할 수 있습니다.
virt-customize -a rhel-8.4-root.qcow2 --root-password password:root
virt-customize: warning: mount exited with status 32
virt-customize: error: libguestfs error: you must call 'mount' first to mount the root filesystem
해당 에러는 파일 시스템을 정상적으로 인식하지 못해 이미지 내부의 루트 파일시스템을 마운트할 수 없다는 의미입니다.
2. 에러 메시지 상세 분석
상세 메시지는 다음과 같습니다:
mount: wrong fs type, bad option, bad superblock on /dev/sda3
...
is_dir_stub: you must call 'mount' first
이는 RHEL8에서 생성된 qcow2 이미지의 파일 시스템이 RHEL7의 libguestfs 또는 커널 버전에서 호환되지 않기 때문에 발생하는 문제입니다.
3. 문제의 원인 - XFS 파일 시스템 차이
RHEL8에서는 XFS 파일 시스템이 reflink와 sparse 파일을 지원하는 새로운 기능들을 포함합니다. 그러나 RHEL7의 libguestfs 및 커널은 이러한 기능을 인식하지 못해 이미지 마운트에 실패합니다.
따라서, 공식 가이드는 RHEL8 기반 시스템에서 RHEL8 이미지를 작업하도록 권장하고 있습니다.
4. 공식 권고사항 및 현실적 문제
Red Hat은 RHEL8 qcow2 이미지를 수정할 때 RHEL8 이상의 호스트에서 libguestfs를 사용하는 것을 권장합니다. 하지만 운영 중인 환경이 RHEL7인 경우, 추가 서버 없이 작업을 진행해야 하는 상황도 자주 발생합니다.
이러한 경우 아래 workaround 방법을 사용하면 RHEL7에서도 작업이 가능합니다.
5. Workaround - 해결 방법
① appliance 파일 다운로드
wget http://download.libguestfs.org/binaries/appliance/appliance-1.38.0.tar.xz
② 압축 해제
tar -Jxf appliance-1.38.0.tar.xz
③ 환경변수 설정
export LIBGUESTFS_PATH=/root/appliance
이 변수는 virt-customize 명령어가 사용할 libguestfs 가상 어플라이언스를 지정합니다.
④ root 비밀번호 강제 설정
virt-customize -a rhel-8.4-root.qcow2 --root-password password:root
정상 동작 시 출력 예시:
[ 4.5] Setting passwords
[ 5.9] Finishing off
6. cloud-init 제거 (선택)
cloud-init은 최초 부팅 시 클라우드 환경에 맞게 설정을 초기화하는 패키지로, 필요 없거나 내부 환경에서 충돌을 방지하고 싶을 경우 제거하는 것이 좋습니다.
virt-customize -a rhel-8.4-root.qcow2 --uninstall cloud-init
정상 동작 시:
Uninstalling packages: cloud-init
Finishing off
7. 실무 팁 및 권장사항
- libguestfs 사용 전 항상
export LIBGUESTFS_PATH
설정을 확인하세요. - RHEL7에서 RHEL8 이미지를 반복 작업해야 한다면, libguestfs 최신 바이너리 rpm 직접 설치도 고려해보세요.
- 테스트 완료 후 이미지 부팅 시에는 콘솔 접근 또는 cloud-init 유무를 미리 확인하세요.
- 가능하면 RHEL8 기반 KVM에서 virt-customize 작업을 수행하는 것이 가장 안정적입니다.
✅ 정리
RHEL7 환경에서는 RHEL8의 파일 시스템 구조(XFS: reflink 등)를 완전히 지원하지 않기 때문에, libguestfs가 정상적으로 동작하지 않을 수 있습니다. 이를 해결하기 위해서는 libguestfs 어플라이언스를 별도로 다운로드하여 환경변수를 지정virt-customize 작업을 우회할 수 있습니다.
공식적으로는 지원되지 않는 방식이므로, 테스트나 비공식 환경에서만 사용할 것을 권장합니다. 운영 환경에서는 RHEL8 이상의 호스트에서 작업
'가상화' 카테고리의 다른 글
Cloud Image로 KVM에서 VM 생성하기 (0) | 2025.05.19 |
---|---|
KVM to KVM VM Live Migration 방법 (0) | 2025.05.09 |