Convert to KVM 서버 이미지 변환 점검(Linux)

Prev Next

VPC 환경에서 이용 가능합니다.

Xen 또는 RHV에서 KVM으로 서버 이미지 변환 중 오류가 발생했을 때 원본 서버 OS의 변환 적합성을 확인하는 방법과 결과에 따른 조치 방법을 안내합니다. 원본 서버의 환경에 맞는 항목을 참고해 주십시오.

참고
  • 변환을 위한 서버 이미지를 생성하기 전에 원본 서버를 검증해 주십시오.
  • 가상 머신(VM) 변환의 유효성을 점검하려면 점검 스크립트를 먼저 설치해야 합니다.
  • 원본 환경에 따라 지원 OS와 점검 스크립트가 다릅니다.
원본 환경 지원 OS 점검 스크립트 안내
Xen Rocky Linux 8.10, Ubuntu 20.04 x2k_validate Xen to KVM
RHV RHEL 8.10 r2k_validate RHV to KVM

Xen to KVM

Xen 환경의 서버를 KVM으로 변환하는 경우의 점검 방법입니다.

VM 점검 전 실행 사항

VM을 점검하기 전에 실행해야 하는 사항은 다음과 같습니다.

원본 Xen VM 기본 설정 점검

OS별 주요 파일의 존재 여부를 확인하고 파일이 수정 가능한 상태인지 확인해 주십시오.

#  Rocky8.10
'/etc/yum.repos.d/Rocky-BaseOS.repo' '/etc/rc.d/rc.local' '/etc/default/grub' '/etc/sysconfig/network-scripts/ifcfg-eth0' '/etc/udev/rules.d' '/etc/fstab' '/etc/resolv.conf'
# Ubuntu20.04
'/etc/apt/sources.list' '/etc/rc.local' '/etc/default/grub' '/etc/network/interfaces' '/etc/udev/rules.d' '/etc/fstab'

주요 환경 설정 점검

  1. Repo URL인 http://repo.gov-ncloud.com/를 바라보는지 확인해 주십시오.
  2. VM 내부에 1MB 이상의 공간이 남아있는지 확인해 주십시오.
  3. /etc/fstab에 오류가 있는지 확인해 주십시오.

점검 스크립트 다운로드

변환 대상 서버에서 점검 스크립트 x2k_validate를 다운로드해 주십시오.

주의

점검 스크립트는 변환 지원이 가능한 OS에서만 동작합니다.

  • 변환 지원 가능 OS: Rocky8.10, Ubuntu20.04
# root 계정이 아닌 경우 sudo로 진행
# wget http://init.gov-ncloud.com/server/linux/x2k-migration/x2k_validate
# chmod +x x2k_validate
# ./x2k_validate

점검 결과 확인 및 문제 조치 방법

스크립트를 실행하여 원본 서버 OS의 변환 적합성을 점검한 결과에 따른 조치 방법을 안내합니다.

점검 결과 문제 없음

유효성 검증 결과가 정상(SUCCESS)으로 확인되면 점검 결과 문제가 없는 상태입니다.

  root@s1950d11189a:~# ./x2k_validate

  Fri 11 Apr 2025 05:10:33 PM KST
  Execute ./x2k_validate - start
  x2k convert for ubuntu 20.04 : v1.0.0-2025041102

  [OK] checkExistFile : /etc/apt/sources.list exists
  [OK] checkImmutable : /etc/apt/sources.list mutable
  [OK] checkExistFile : /etc/rc.local exists
  [OK] checkImmutable : /etc/rc.local mutable
  [OK] checkExistFile : /etc/default/grub exists
  [OK] checkImmutable : /etc/default/grub mutable
  [OK] checkExistFile : /etc/network/interfaces exists
  [OK] checkImmutable : /etc/network/interfaces mutable
  [OK] checkExistFile : /etc/udev/rules.d exists
  [OK] checkImmutable : /etc/udev/rules.d mutable
  [OK] checkExistFile : /etc/fstab exists
  [OK] checkImmutable : /etc/fstab mutable
  [OK] checkRepo : the repo url valid
  [OK] checkSpace : enough disk space
  [OK] checkFstab : fstab is valid

  Execute ./x2k_validate - end
  SUCCESS

문제별 확인 및 조치 방법

유효성 검증 결과 문제가 있을 경우, 문제별 결과 확인 및 조치 방법은 다음과 같습니다.

  1. checkRoot: Root user로 스크립트가 수행될 수 있도록 합니다.

    • FAIL 로그
      [FAIL] checkRoot : this script must be run as root or with 'sudo'
      
    • 작업 방법
      ncloud@s1950d11189a:~$ sudo ./x2k_validate
      
  2. supportOS: 지원하는 OS 및 버전인지 확인해 주십시오.

    • FAIL 로그
      [FAIL] supportOS : unsupported OS Version
      
    • 확인 방법
      root@s1950d11189a:~# cat /etc/os-release
      
  3. checkExistFile: 설정 파일이 존재하는지 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkExistFile : /etc/apt/sources.list does not exist
      
    • 확인 방법
      root@s1950d11189a:~# ls /etc/apt/sources.list
      ls: cannot access '/etc/apt/sources.list': No such file or directory
      
    • 조치 방법
      • base 이미지와 동일한 파일을 생성해 주십시오.
  4. checkRepo: 디폴트 레포 주소가 내부를 바라보는지 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkRepo : /etc/apt/sources.list some repo urls are not valid
      
    • 확인 방법
      root@s1950d11189a:~# grep -v '^$\|^#' /etc/apt/sources.list |grep 'main restricted'
      deb http://repo.gov-ncloud.com/ubuntu focal main restricted
      deb http://repo.gov-ncloud.com/ubuntu focal-updates main restricted
      deb http://repo.gov-ncloud.com/ubuntu focal-backports main restricted universe multiverse
      deb http://repo.gov-ncloud.com/ubuntu focal-security main restricted
      
    • 조치 방법
      • source file을 열어 디폴트 레포 주소가 내부를 바라볼 수 있도록 수정해 주십시오.
      root@s1950d11189a:~# grep -v '^$\|^#' /etc/apt/sources.list |grep 'main restricted'
      deb http://repo.gov-ncloud.com/ubuntu focal main restricted
      deb http://repo.gov-ncloud.com/ubuntu focal-updates main restricted
      deb http://repo.gov-ncloud.com/ubuntu focal-backports main restricted universe multiverse
      deb http://repo.gov-ncloud.com/ubuntu focal-security main restricted
      
  5. checkSpace: 루트 파일 시스템에 1MB 이상의 용량이 남았는지 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkSpace : not enough disk space
      
    • 확인 방법
      root@s1950d11189a:~# df |grep '/$'
      /dev/vda2       10215700 2688948   6986236  28% /
      
    • 조치 방법
      • 루트 파일 시스템의 여유 용량이 1MB 이상이 될 수 있도록 불필요한 파일을 삭제해 주십시오.
  6. checkFstab: fstab 설정 파일 내에 추가 디스크를 제외하고 / 또는 /boot 의 정상 여부를 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkFstab : fstab is not valid
      
    • 확인 방법
      root@s1950d11189a:~# findmnt --verify
      findmnt: /etc/fstab: parse error at line 10 -- ignored
      
      1 parse error, 0 errors, 0 warnings
      
    • 조치 방법
      • /etc/fstab를 수정하여 findmnt --verify 커맨드 수행 시 / 또는 /boot에 error가 없도록 해주십시오.
      root@s1950d11189a:~# findmnt --verify
      Success, no errors or warnings detected
      
  7. checkFstab: fstab 설정 파일 내 /dev/xvd* 와 같은 디바이스가 있는지 확인합니다.

    • FAIL 로그
      [FAIL] checkFstab : fstab containes /dev/xvd* device
      
    • 확인 방법
      root@s1950d11189a:~# grep ^/dev/xvd /etc/fstab
      /dev/xvdb1 /root/test ext4 defaults 0 1
      
    • 조치 방법
      • /etc/fstab 을 수정하여, /dev/xvd* 디바이스 관련한 내용이 없도록 합니다.
      root@s1950d11189a:~# grep ^/dev/xvd /etc/fstab
      root@s1950d11189a:~#
      

RHV to KVM

RHV 환경의 서버를 KVM으로 변환하는 경우의 점검 방법입니다. 공공 환경의 RHV 서버를 공공 환경의 KVM 서버로 변환하는 경우를 기준으로 하며, RHV 환경에서는 RHEL 8.10 운영 체제만 지원됩니다.

VM 점검 전 실행 사항

VM을 점검하기 전에 실행해야 하는 사항은 다음과 같습니다.

원본 RHV VM 기본 설정 점검

OS별 주요 파일의 존재 여부를 확인하고 파일이 수정 가능한 상태인지 확인해 주십시오.

# RHEL 8.10
'/etc/dnf/dnf.conf' '/etc/yum.repos.d' '/etc/default/grub' '/etc/fstab' '/etc/resolv.conf' '/etc/sysconfig/network-scripts' '/etc/NetworkManager/system-connections' '/etc/rc.d/rc.local' '/etc/udev/rules.d'

주요 환경 설정 점검

  1. Repo URL인 http://repo.gov-ncloud.com/를 바라보는지 확인해 주십시오. (점검 대상: /etc/yum.repos.d/rhel-priv.repo)
  2. 루트 파일 시스템에 1MB 이상의 공간이 남아있는지 확인해 주십시오.
  3. /etc/fstab의 /, /boot 항목이 UUID 기반으로 설정되어 있고 오류가 없는지 확인해 주십시오.

점검 스크립트 다운로드

변환 대상 서버에서 점검 스크립트 r2k_validate를 다운로드해 주십시오.

주의

점검 스크립트는 변환 지원이 가능한 OS에서만 동작합니다.

  • 변환 지원 가능 OS: RHEL 8.10 (RHV 환경)
# root 계정이 아닌 경우 sudo로 진행
# wget http://init.gov-ncloud.com/server/linux/r2k-migration/r2k_validate
# chmod +x r2k_validate
# ./r2k_validate

점검 결과는 화면에 출력되며, 최종 결과는 /tmp/r2k-validateResult.log에도 기록됩니다.

점검 결과 확인 및 문제 조치 방법

스크립트를 실행하여 원본 서버 OS의 변환 적합성을 점검한 결과에 따른 조치 방법을 안내합니다.

점검 결과 판정 기준

표시 의미 조치
[OK] 정상 조치 불필요
[WARN] 변환 단계에서 자동으로 조치되는 항목 변환 진행 가능. 필요 시 사전 조치
[FAIL] 변환 불가 항목 반드시 조치 후 재점검

점검 결과 문제 없음

유효성 검증 결과가 정상(SUCCESS)으로 확인되면 점검 결과 문제가 없는 상태입니다.

  [root@rhel8-host ~]# ./r2k_validate

  Mon Oct 26 10:00:00 AM KST 2026
  Execute ./r2k_validate - start
  r2k convert for rhel 8.10 : v0.1.2

  [OK] checkExistFile : /etc/dnf/dnf.conf exists
  [OK] checkImmutable : /etc/dnf/dnf.conf is mutable
  [OK] checkExistFile : /etc/yum.repos.d exists
  [OK] checkImmutable : /etc/yum.repos.d is mutable
  [OK] checkExistFile : /etc/default/grub exists
  [OK] checkImmutable : /etc/default/grub is mutable
  [OK] checkExistFile : /etc/fstab exists
  [OK] checkImmutable : /etc/fstab is mutable
  [OK] checkExistFile : /etc/resolv.conf exists
  [OK] checkImmutable : /etc/resolv.conf is mutable
  [OK] checkExistFile : /etc/sysconfig/network-scripts exists
  [OK] checkImmutable : /etc/sysconfig/network-scripts is mutable
  [OK] checkExistFile : /etc/NetworkManager/system-connections exists
  [OK] checkImmutable : /etc/NetworkManager/system-connections is mutable
  [OK] checkExistFile : /etc/rc.d/rc.local exists
  [OK] checkImmutable : /etc/rc.d/rc.local is mutable
  [OK] checkExistFile : /etc/udev/rules.d exists
  [OK] checkImmutable : /etc/udev/rules.d is mutable
  [OK] checkRepo : gov repo found (repo.gov-ncloud.com)
  [OK] checkFinResidue : no fin-ncloud.com residue
  [OK] checkOvirtAgent : ovirt-guest-agent not installed
  [OK] checkQemuAgent : qemu-guest-agent 6.2.0-49.module+el8.10.0+... matches target 6.2.0
  [OK] checkMissingPkgs : all required packages installed (vim python3 cloud-utils-growpart)
  [OK] checkVdoRule : /etc/udev/rules.d/69-vdo-start-by-dev.rules not present
  [OK] checkDiscardRule : /etc/udev/rules.d/99-discard.rules present
  [OK] checkSpace : enough disk space (6986236 KB)
  [OK] checkFstab : / fstab is valid
  [OK] checkFstab : /boot fstab is valid

  Execute ./r2k_validate - end
  SUCCESS

문제별 확인 및 조치 방법 (FAIL)

유효성 검증 결과 FAIL이 있을 경우, 문제별 결과 확인 및 조치 방법은 다음과 같습니다.

  1. supportOS: 지원하는 OS 및 버전인지 확인해 주십시오.

    • FAIL 로그
      [FAIL] supportOS : unsupported OS Version (8.9)
      [FAIL] supportOS : unsupported OS (centos)
      
    • 확인 방법
      [root@rhel8-host ~]# grep -E '^(ID|VERSION_ID)=' /etc/os-release
      ID="rhel"
      VERSION_ID="8.9"
      
    • 조치 방법
      • 지원 OS는 RHEL 8.10입니다. 마이너 버전이 다른 경우 RHEL 8.10으로 업데이트한 후 다시 점검해 주십시오.
      • RHEL 이외의 OS는 변환 대상이 아닙니다.
  2. checkExistFile: 설정 파일 및 디렉터리가 존재하는지 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkExistFile : /etc/dnf/dnf.conf does not exist
      
    • 확인 방법
      [root@rhel8-host ~]# ls /etc/dnf/dnf.conf
      ls: cannot access '/etc/dnf/dnf.conf': No such file or directory
      
    • 조치 방법
      • base 이미지와 동일한 파일(또는 디렉터리)을 생성해 주십시오.
  3. checkImmutable: 설정 파일 및 디렉터리에 immutable 속성이 설정되어 있지 않은지 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkImmutable : /etc/fstab is immutable
      
    • 확인 방법
      [root@rhel8-host ~]# lsattr /etc/fstab
      ----i----------------- /etc/fstab
      
      • 디렉터리는 lsattr -d <디렉터리>로 확인해 주십시오.
    • 조치 방법
      • immutable 속성을 해제해 주십시오.
      [root@rhel8-host ~]# chattr -i /etc/fstab
      [root@rhel8-host ~]# lsattr /etc/fstab
      -------------------- /etc/fstab
      
  4. checkRepo: 디폴트 repo 주소가 내부(gov) repo를 바라보는지 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkRepo : /etc/yum.repos.d/rhel-priv.repo does not exist
      [FAIL] checkRepo : no baseurl found in /etc/yum.repos.d/rhel-priv.repo
      [FAIL] checkRepo : some repo urls are not ncloud internal
      
    • 확인 방법
      [root@rhel8-host ~]# grep -v '^#' /etc/yum.repos.d/rhel-priv.repo | grep baseurl
      baseurl=http://mirror.example.com/...
      
    • 조치 방법
      • rhel-priv.repo가 없는 경우 base 이미지와 동일한 파일을 생성해 주십시오.
      • repo 파일을 열어 baseurl이 내부 repo(repo.gov-ncloud.com)를 바라보도록 수정해 주십시오.
      [root@rhel8-host ~]# grep -v '^#' /etc/yum.repos.d/rhel-priv.repo | grep baseurl
      baseurl=http://repo.gov-ncloud.com/...
      
  5. checkSpace: 루트 파일 시스템에 1MB 이상의 용량이 남았는지 확인해 주십시오.

    • FAIL 로그
      [FAIL] checkSpace : not enough disk space (528 KB)
      
    • 확인 방법
      [root@rhel8-host ~]# df | grep '% /$'
      /dev/mapper/rhel-root 10475520 10474992   528 100% /
      
    • 조치 방법
      • 루트 파일 시스템의 여유 용량이 1MB 이상이 될 수 있도록 불필요한 파일을 삭제해 주십시오. (예: dnf clean all)
  6. checkFstab: /etc/fstab의 /, /boot 항목이 UUID 기반이며 실제 마운트된 장치와 일치하는지 확인해 주십시오. 추가 디스크 항목은 점검 대상이 아닙니다.

    • FAIL 로그

      FAIL 로그 원인
      [FAIL] checkFstab : / fstab is not UUID-based / 항목이 UUID가 아닌 장치명으로 설정됨 (/boot도 동일)
      [FAIL] checkFstab : / fstab UUID not resolvable fstab에 적힌 UUID에 해당하는 장치가 없음
      [FAIL] checkFstab : / fstab device mismatch fstab의 UUID 장치와 실제 마운트된 장치가 다름
      [FAIL] checkFstab : fstab has neither / nor /boot fstab에 /, /boot 항목이 모두 없음
    • 확인 방법

      [root@rhel8-host ~]# grep -v '^#' /etc/fstab | awk '$2=="/" || $2=="/boot"'
      /dev/sda2  /  xfs  defaults  0 0
      [root@rhel8-host ~]# findmnt -n -o SOURCE --target /
      /dev/sda2
      
    • 조치 방법

      • 실제 장치의 UUID를 확인하여 /etc/fstab의 /, /boot 항목을 UUID 기반으로 수정해 주십시오.
      [root@rhel8-host ~]# blkid -s UUID -o value /dev/sda2
      <UUID>
      # /etc/fstab
      UUID=<UUID>  /  xfs  defaults  0 0
      
      • 수정 후 findmnt --verify 수행 시 /, /boot에 error가 없도록 해주십시오.
      [root@rhel8-host ~]# findmnt --verify
      Success, no errors or warnings detected
      

WARN 항목 확인 및 조치 방법

WARN은 변환 단계에서 자동으로 조치되는 항목이므로 변환을 진행할 수 있습니다. 변환 전에 미리 조치하려는 경우 아래 방법을 참고해 주십시오.

  1. checkOvirtAgent: KVM 환경에서 불필요한 ovirt-guest-agent 설치 여부를 확인합니다.

    • WARN 로그
      [WARN] checkOvirtAgent : ovirt-guest-agent installed → will be removed on convert
      
    • 확인 방법
      [root@rhel8-host ~]# rpm -q ovirt-guest-agent-common ovirt-guest-agent
      
    • 조치 방법
      • 별도 조치가 필요하지 않습니다. 변환 시 자동으로 제거됩니다.
  2. checkQemuAgent: qemu-guest-agent의 설치 여부와 버전(6.2.0)을 확인합니다.

    • WARN 로그
      [WARN] checkQemuAgent : qemu-guest-agent not installed → will be installed (6.2.0) on convert
      [WARN] checkQemuAgent : qemu-guest-agent <현재 버전> differs from target 6.2.0 → convert will switch
      
    • 확인 방법
      [root@rhel8-host ~]# rpm -q qemu-guest-agent
      
    • 조치 방법
      • 별도 조치가 필요하지 않습니다. 변환 시 6.2.0 버전으로 설치 또는 교체됩니다.
  3. checkMissingPkgs: 필수 패키지(vim, python3, cloud-utils-growpart)의 설치 여부를 확인합니다.

    • WARN 로그
      [WARN] checkMissingPkgs : missing packages: vim python3 → convert will install
      
    • 확인 방법
      [root@rhel8-host ~]# rpm -q vim python3 cloud-utils-growpart
      
    • 조치 방법
      • 별도 조치가 필요하지 않습니다. 변환 시 누락된 패키지가 자동으로 설치됩니다.
  4. checkVdoRule: RHV 환경에서 사용되던 udev rule(69-vdo-start-by-dev.rules)의 존재 여부를 확인합니다.

    • WARN 로그
      [WARN] checkVdoRule : /etc/udev/rules.d/69-vdo-start-by-dev.rules exists → convert will remove
      
    • 확인 방법
      [root@rhel8-host ~]# ls /etc/udev/rules.d/69-vdo-start-by-dev.rules
      
    • 조치 방법
      • 별도 조치가 필요하지 않습니다. 변환 시 자동으로 제거됩니다.
  5. checkDiscardRule: KVM 환경의 디스크 discard 설정 rule(99-discard.rules)의 존재 여부를 확인합니다.

    • WARN 로그
      [WARN] checkDiscardRule : /etc/udev/rules.d/99-discard.rules missing → convert will add
      
    • 확인 방법
      [root@rhel8-host ~]# grep discard_max_bytes /etc/udev/rules.d/99-discard.rules
      
    • 조치 방법
      • 별도 조치가 필요하지 않습니다. 변환 시 자동으로 추가됩니다.
  6. checkFstab (장치명 직접 지정): /etc/fstab에 /dev/sd*, /dev/vd* 장치명이 직접 지정된 항목이 있는지 확인합니다. KVM 환경에서는 장치명이 달라질 수 있어 UUID 사용을 권장합니다. 이 항목은 자동 조치되지 않습니다.

    • WARN 로그
      [WARN] checkFstab : raw device entries (/dev/sd*|/dev/vd*) detected in fstab
      
    • 확인 방법
      [root@rhel8-host ~]# grep -E '^\s*/dev/(sd|vd)[a-z]+' /etc/fstab
      /dev/sdb1  /data  xfs  defaults  0 0
      
    • 조치 방법
      • /etc/fstab을 수정하여 해당 항목을 UUID 기반으로 변경해 주십시오.
      [root@rhel8-host ~]# blkid -s UUID -o value /dev/sdb1
      <UUID>
      # /etc/fstab
      UUID=<UUID>  /data  xfs  defaults  0 0
      
      [root@rhel8-host ~]# grep -E '^\s*/dev/(sd|vd)[a-z]+' /etc/fstab
      [root@rhel8-host ~]#