VMware에서 쓰던 Linux VM을 Nutanix AHV로 옮길 때는 게스트의 부팅 준비와 디스크 형식 변환을 각각 처리해야 합니다. dracut으로 AHV에서 필요한 드라이버를 initramfs에 넣은 뒤, 종료한 VM의 VMDK를 qemu-img로 qcow2로 변환합니다. 그 이미지를 Prism에 등록하고 새 VM에 연결하는 순서예요.
이 글은 Rocky Linux 9 계열의 일반적인 로컬 디스크 VM을 대상으로 수동 V2V 절차를 설명합니다. V2V는 가상 머신을 다른 가상화 환경으로 옮기는 작업입니다. Nutanix Move를 사용하지 않고 각 단계를 확인하려는 실습에 맞췄으며, 실제 VMware→AHV 이관 성공 기록과는 구분합니다.
이 글의 목차
작업 범위와 전체 흐름
Nutanix는 VM 이관에 Move 사용을 권장합니다. 수동 이관에서도 VirtIO 드라이버 확인, initramfs 재생성, 장치 이름에 의존하는 부팅 설정 점검이 필요하다고 안내합니다. Nutanix의 Linux VM 이관 안내에서 이 흐름을 확인할 수 있습니다.
| 구분 | 이 글의 기준 |
|---|---|
| 원본 | VMware ESXi/vSphere의 x86_64 Rocky Linux 9 VM, 로컬 VMDK |
| 부팅 | 기존 BIOS 또는 UEFI 유지, Secure Boot·vTPM에 의존하지 않는 구성 |
| 스토리지 | 일반 파티션 또는 LVM, 모든 관련 가상 디스크를 함께 이관 |
| 변환 작업 PC | Ubuntu 24.04, qemu-utils 설치 |
| 대상 | 게스트 OS 지원을 확인한 Nutanix AHV, VirtIO SCSI 디스크·VirtIO NIC |
Ubuntu/Debian의 initramfs-tools 구성에 dracut 명령을 그대로 적용하지 않습니다. RDM, 공유 디스크, 암호화 VM, LUKS의 TPM 연동, 멀티패스·네트워크 루트는 별도 이관 설계가 필요한 범위입니다. AOS/AHV의 게스트 지원 여부는 사용 중인 버전의 호환성 문서로 확인합니다.
- 원본 VM의 펌웨어·디스크·네트워크 구성과 복구 가능한 백업을 확보합니다.
- VMware의 Linux 안에서 VirtIO 모듈을 확인하고 dracut으로 initramfs를 다시 만듭니다.
- 애플리케이션을 정지하고 VM을 종료한 뒤 현재 상태의 디스크를 내보냅니다.
- 작업 PC에서 VMDK를 qcow2로 변환하고 내용 일치를 확인합니다.
- Prism 이미지 서비스에 등록한 뒤 같은 부팅 방식의 AHV VM에 연결합니다.
- 격리된 네트워크에서 부팅·데이터·서비스를 확인하고 운영망으로 전환합니다.
dracut이 만드는 것은 Linux의 초기 부팅 파일인 initramfs입니다. qcow2는 가상 디스크 파일 형식이고, 이 변환은 qemu-img가 담당합니다. 디스크 파일 하나에는 vCPU·메모리·NIC 연결·VMware NVRAM 같은 VM 설정 전체가 담기지 않습니다.
1. 원본 VM의 부팅 방식과 디스크 기록
먼저 vSphere에서 VM의 BIOS/UEFI, Secure Boot 상태, vCPU·메모리, 디스크별 용량·컨트롤러·연결 순서와 포트 그룹/VLAN을 기록합니다. OS 디스크가 scsi0:0인지, 데이터 디스크나 LVM 구성 디스크가 더 있는지 확인하세요. VM 콘솔에 로그인할 계정과 설치 ISO도 준비합니다.
다음은 원본 VMware Linux VM 안에서 실행합니다. sudo -i 이후 이 절과 dracut 준비 단계는 같은 root Bash 세션에서 진행합니다.
sudo -i
cat /etc/os-release
uname -r
if [ -d /sys/firmware/efi ]; then
printf 'UEFI boot\n'
else
printf 'BIOS boot\n'
fi
lsblk -o NAME,SIZE,TYPE,FSTYPE,UUID,MOUNTPOINTS
blkid
findmnt /
cat /etc/fstab
grubby --default-kernel
grubby --info=DEFAULT
ip -br address
nmcli connection show
커널의 root=와 /etc/fstab에 /dev/sda2처럼 연결 순서에 의존하는 값이 있는지 봅니다. AHV의 SCSI 디스크가 항상 /dev/vda로 바뀌는 것은 아닙니다. VirtIO SCSI와 VirtIO block은 게스트에서 보이는 이름이 다르므로, 기존 장치명을 예상 이름으로 일괄 치환하지 않습니다.
일반 파일시스템은 blkid로 확인한 UUID를 사용하고, LVM 루트는 기존 /dev/mapper/…와 rd.lvm.lv=…가 실제 VG/LV와 맞는지 확인합니다. /boot, EFI, swap, 데이터 마운트도 함께 점검합니다. dracut 부팅 인자 문서는 루트 장치를 UUID/LABEL로 식별하는 방법을 설명합니다.
값을 고쳐야 한다면 아래에서 설정을 백업한 뒤 수정합니다. 루트의 root= 변경은 해당 커널의 부팅 항목에도 반영해야 하므로 fstab만 바꾸고 끝내지 않습니다. 일반적인 이관 준비를 위해 GRUB을 재설치할 필요는 없습니다.
2. 다음에 부팅할 커널과 VirtIO 모듈 확인
uname -r는 지금 실행 중인 커널입니다. 업데이트 후 재부팅하지 않았다면 다음 부팅 커널과 다를 수 있어요. grubby의 기본 커널 확인 방법을 참고해, 여기서는 기본 부팅 커널을 명시적으로 선택합니다.
boot_kernel="$(grubby --default-kernel)"
kver="${boot_kernel##*/}"
kver="${kver#vmlinuz-}"
printf 'Target kernel: %s\n' "$kver"
test -d "/lib/modules/$kver" || {
printf 'Target kernel modules are missing\n' >&2
exit 1
}
for driver in virtio_pci virtio_scsi virtio_blk virtio_net; do
modinfo -k "$kver" -F filename "$driver" || exit 1
done
df -h /boot /
| 모듈 | 역할 |
|---|---|
virtio_pci | PCI 기반 VirtIO 장치를 연결하는 드라이버 |
virtio_scsi | 이 글에서 사용할 AHV SCSI 디스크의 컨트롤러 드라이버 |
virtio_blk | VirtIO block 방식의 디스크 드라이버 |
virtio_net | AHV VirtIO 네트워크 장치 드라이버 |
여기서 modinfo는 선택한 커널에 모듈이 있는지를 확인합니다. VMware에서 lsmod에 VirtIO가 보이지 않는 것만으로 드라이버가 없다고 판단하지 않습니다. 사용하지 않는 장치의 모듈은 로드되지 않을 수 있습니다.
모듈이 없으면 해당 커널 버전에 맞는 커널 모듈 패키지와 OS 지원 상태부터 확인합니다. 다른 커널의 .ko 파일을 복사하지 않습니다. 커널 내장 드라이버는 (builtin)으로 표시될 수 있으며, 이 경우 initramfs 안에 별도 .ko가 없는 것이 정상입니다.
3. dracut으로 VirtIO를 포함한 initramfs 생성
현재 initramfs와 설정을 먼저 보관합니다. 백업 경로는 이후 VMware에서 부팅이 안 될 때도 확인할 수 있도록 기록합니다. VM 스냅샷만을 유일한 백업으로 사용하지 않습니다.
prep_backup="/root/ahv-v2v-prep-$(date +%Y%m%d-%H%M%S)"
install -d -m 700 "$prep_backup"
cp -a /etc/fstab /etc/default/grub /etc/dracut.conf.d "$prep_backup/"
cp -a "/boot/initramfs-${kver}.img" "$prep_backup/"
grubby --info=ALL > "$prep_backup/grubby-info.txt"
if [ -d /boot/loader/entries ]; then
cp -a /boot/loader/entries "$prep_backup/"
fi
printf 'Backup: %s\n' "$prep_backup"
다음 설정은 이후 initramfs를 다시 만들 때도 VirtIO 모듈을 추가하도록 합니다. 같은 파일이 이미 있으면 백업본과 기존 내용을 확인하고 병합합니다. add_drivers는 커널 드라이버를 추가하는 항목이며, dracut 기능 모듈을 지정하는 add_dracutmodules와 다릅니다. dracut 설정 문서의 문법을 따릅니다.
cat > /etc/dracut.conf.d/90-ahv-v2v.conf <<'EOF'
add_drivers+=" virtio_pci virtio_scsi virtio_blk virtio_net "
EOF
dracut --force --verbose --no-hostonly \
"/boot/initramfs-${kver}.img" "$kver"
--force는 지정한 initramfs를 덮어씁니다. --no-hostonly는 현재 VMware 장치에만 맞춘 구성을 피하고 더 일반적인 초기 이미지를 만듭니다. 크기가 커질 수 있으므로 /boot 공간을 먼저 확인해야 합니다. 사용 중인 dracut 버전의 지원 옵션은 dracut --help로 확인합니다. dracut 명령 문서에 옵션과 커널 버전 지정 방법이 나와 있습니다.
오류가 났다면 디스크를 내보내지 말고 모듈 누락·공간 부족부터 해결합니다. 성공한 뒤에는 파일 내용과 dracut 기능 모듈을 확인합니다.
ls -lh "/boot/initramfs-${kver}.img"
lsinitrd "/boot/initramfs-${kver}.img" \
| grep -E 'virtio_(pci|scsi|blk|net).*\.ko'
lsinitrd -m "/boot/initramfs-${kver}.img"
grubby --info=DEFAULT
lsinitrd는 생성된 이미지 안을 보여주는 명령입니다. 외부 모듈로 제공되는 VirtIO 드라이버와 의존성이 포함됐는지 확인합니다. LVM 루트라면 lvm 기능도 확인하고, 기본 부팅 항목의 커널·initrd·루트 인자가 준비한 대상과 맞는지 봅니다. lsinitrd 사용법을 참고할 수 있습니다.
VMware용 스토리지 드라이버와 open-vm-tools를 이 단계에서 먼저 제거하지 않습니다. 가능하면 VMware에서 준비한 커널로 한 번 재부팅해 루트와 데이터 마운트가 유지되는지 확인한 뒤 최종 내보내기를 진행합니다. 이 확인은 AHV 부팅 검증을 대신하지 않습니다.
4. VM 종료 후 현재 상태의 VMDK 내보내기
애플리케이션·데이터베이스를 해당 제품의 절차대로 정지합니다. 그다음 Linux를 정상 종료하고 vSphere에서 전원이 꺼졌는지 확인합니다. sync만 실행하거나 VM을 일시 중지한 상태로 디스크를 복사하지 않습니다.
systemctl poweroff
vSphere의 Export OVF Template으로 VM을 내보내고, 내려받은 OVF·VMDK·매니페스트를 같은 작업 폴더에 보관합니다. 메뉴 위치는 클라이언트 버전에 따라 다릅니다. Broadcom의 OVF/OVA 내보내기 안내도 전원이 꺼진 상태를 전제로 합니다.
스냅샷이 있는 VM의 데이터스토어에서 베이스 disk.vmdk만 가져오면 최신 쓰기가 빠질 수 있습니다. 내보내기 결과가 현재 상태를 포함하는지 확인하고, 직접 파일을 복사하는 방식이라면 VMware에서 스냅샷 정리·통합을 완료한 뒤 관련 파일을 확보합니다. -delta.vmdk나 -sesparse.vmdk를 파일 관리자에서 직접 삭제하지 않습니다. VMware 스냅샷 구조를 먼저 확인하세요.
| 가져온 파일 | 변환할 때의 처리 |
|---|---|
| OVF 내보내기의 단일 VMDK | 해당 VMDK를 입력합니다. 여러 디스크면 각각 변환합니다. |
descriptor + -flat.vmdk | 두 파일을 함께 두고 작은 descriptor .vmdk를 입력합니다. |
| 분할 VMDK | descriptor와 모든 extent 파일의 상대 경로를 유지합니다. |
| 스냅샷 체인·누락된 부모·암호화 VMDK | 변환을 중단하고 VMware에서 완전한 내보내기 결과를 다시 확보합니다. |
OVF/OVA의 VMDK는 stream-optimized 형식으로 저장되어 원래 할당 용량보다 작을 수 있습니다. 파일 크기만 보고 디스크 누락이나 데이터 손실로 판단하지 않습니다. Broadcom의 내보낸 VMDK 크기 설명처럼 가상 용량과 실제 파일 크기를 나눠 확인합니다.
OVA로 받은 경우에는 변환 작업 PC에서 아래처럼 목록을 확인하고 별도 디렉터리에 풉니다. 파일명은 예시이며 실제 내보낸 파일로 바꿉니다.
tar -tf rocky9-export.ova
mkdir rocky9-export
tar -xf rocky9-export.ova -C rocky9-export
OVF의 디스크 참조와 원본 기록을 대조해 OS·데이터 디스크를 구분합니다. 부팅 디스크만 옮기고 LVM의 다른 PV나 fstab의 필수 데이터 디스크를 빠뜨리면 정상적으로 시작되지 않을 수 있습니다.
5. 작업 PC에서 VMDK를 qcow2로 변환
이제부터는 원본 VM이나 Nutanix CVM이 아닌 별도의 Ubuntu 24.04 작업 PC에서 실행합니다. 패키지를 설치하고 VMDK 전체와 변환 결과를 보관할 공간을 확인합니다. 필요한 여유 공간은 원본 가상 용량, 사용량과 출력 이미지 할당 방식에 따라 달라집니다.
sudo apt-get update
sudo apt-get install -y qemu-utils
qemu-img --version
df -h .
cd rocky9-export
ls -lh
qemu-img info --backing-chain -f vmdk rocky9-disk1.vmdk
rocky9-disk1.vmdk는 실제 OS 디스크 이름으로 바꿉니다. info에서 형식과 가상 용량을 원본과 비교하고, 부모·extent 파일 누락 오류가 없는지 확인합니다. 실행 중인 원본 디스크에 qemu-img를 적용하지 않습니다.
입력 파일이 확정되면 새 qcow2를 생성합니다. 출력 파일이 이미 있으면 다른 이름을 쓰거나 이전 결과인지 먼저 확인합니다. OpenStack 공식 이미지 변환 예제와 같은 -f vmdk -O qcow2 조합입니다.
qemu-img convert -p -f vmdk -O qcow2 \
rocky9-disk1.vmdk rocky9-os.qcow2
-p는 진행률, -f는 입력 형식, -O는 출력 형식입니다. 다중 디스크 VM은 OS·데이터 디스크마다 별도로 실행하고 대응표를 남깁니다. 여러 VMDK를 한 명령의 입력으로 나열해 하나의 OS 이미지로 합치지 않습니다.
6. 형식 검사와 디스크 내용 비교
변환 직후 아래 세 가지를 확인합니다. check는 qcow2 구조의 일관성 검사이며 게스트 파일시스템이나 애플리케이션 검사와는 별개입니다. compare는 형식이 다른 두 이미지가 게스트에 제공하는 디스크 내용을 비교합니다. QEMU의 qemu-img 문서에 각 명령과 종료 코드가 설명되어 있습니다.
qemu-img info -f qcow2 rocky9-os.qcow2
qemu-img check -f qcow2 rocky9-os.qcow2
qemu-img compare -p -f vmdk -F qcow2 \
rocky9-disk1.vmdk rocky9-os.qcow2
echo "$?"
sha256sum rocky9-os.qcow2 > rocky9-os.qcow2.sha256
compare가 성공하고 바로 이어서 출력한 종료 코드가 0인지 확인합니다. 변환 전후의 가상 용량도 같아야 합니다. 파일 형식과 메타데이터가 달라지므로 VMDK와 qcow2의 파일 SHA-256이 같아야 하는 것은 아닙니다. 만든 체크섬은 qcow2를 다른 업로드 PC로 옮겼을 때 전송 무결성을 확인하는 데 씁니다.
용량·비교 결과가 다르면 Prism 등록 전에 원본 선택과 누락 파일부터 확인합니다. qcow2가 작게 만들어졌다는 사실만으로 실제 복사 시간이나 데이터 압축률을 보장하지 않습니다.
7. Prism 이미지 등록과 AHV VM 생성
Prism의 이미지 관리에서 디스크 이미지로 qcow2를 업로드합니다. Prism Element의 경우 Settings → Image Configuration → Upload Image, Prism Central에서는 Images 관리 화면을 사용하며 제품 버전에 따라 이름과 위치가 다를 수 있습니다. ISO 유형으로 등록하지 않습니다. Cisco의 Nutanix AHV qcow2 업로드 절차도 이 이미지 서비스 경로를 사용합니다.
rocky9-os처럼 역할을 구분할 수 있는 이름을 입력하고Disk유형을 선택합니다.- 작업 PC의 qcow2 파일을 업로드합니다. URL 방식이면 브라우저뿐 아니라 클러스터에서도 해당 주소에 접근할 수 있어야 합니다.
- 업로드·변환 작업이 성공하고 대상 클러스터에서 사용할 수 있는 상태가 될 때까지 기다립니다.
- 여러 디스크라면 모든 qcow2를 각각 등록하고 원본 디스크 대응표를 유지합니다.
새 AHV VM을 만들고 원본의 vCPU·메모리와 부팅 방식을 맞춥니다. 등록한 이미지는 Clone from Image Service로 디스크에 연결하고, 이 글에서는 SCSI 버스를 사용합니다. Nutanix AHV 6.8 관리 가이드의 VM 생성·UEFI 항목을 참고하되 실제 메뉴는 설치 버전에서 확인합니다.
| 항목 | 설정과 확인 |
|---|---|
| 펌웨어 | BIOS는 BIOS, UEFI는 UEFI로 유지합니다. 형식 변환으로 펌웨어가 변환되지는 않습니다. |
| OS 디스크 | OS 이미지를 SCSI 디스크로 복제하고 부팅 대상으로 확인합니다. 빈 디스크로 대신 만들지 않습니다. |
| 데이터 디스크 | 각 이미지를 원본 역할·순서에 맞게 연결합니다. |
| NIC | VirtIO NIC와 검증용 격리 네트워크를 사용합니다. |
| 최초 콘솔 | Prism 콘솔에서 디스크 인식과 부팅 오류를 직접 확인합니다. |
UEFI 부팅 항목은 VMware의 NVRAM에 저장되어 있었을 수 있습니다. qcow2에 EFI 시스템 파티션이 있어도 새 AHV VM의 부팅 항목은 별도 확인이 필요합니다. No bootable device가 보이면 펌웨어와 EFI 파티션·부트로더 경로부터 점검합니다. 이 단계의 오류를 dracut만 다시 만들어 해결하려고 하지 않습니다.
8. 첫 부팅에서 디스크와 NIC 확인
원본 VM은 종료 상태로 보관하고, AHV VM은 먼저 격리된 네트워크에서 부팅합니다. 같은 IP의 두 VM이 운영망에서 동시에 동작하거나 복제된 스케줄러·DB 작업이 실행되지 않도록 합니다. 네트워크 연결이 없어도 콘솔로 로그인할 수 있어야 합니다.
sudo -i
uname -r
lsblk -f
findmnt /
findmnt --verify --verbose
systemctl --failed
journalctl -b -p err --no-pager
ip -br link
ip -br address
nmcli device status
nmcli connection show
모든 예상 디스크와 마운트 지점이 있는지 확인합니다. findmnt --verify의 오류가 없어도 애플리케이션 데이터가 정상이라는 의미는 아닙니다. DB 복구 상태, 데이터 경로, 서비스 계정·권한, 필요한 데몬도 따로 확인합니다.
VMware의 ens192가 AHV에서 다른 이름이 되거나 MAC 주소가 바뀌면 기존 NetworkManager 프로필이 NIC에 붙지 않을 수 있습니다. 다음 예시는 AHV 콘솔에서만 실행하며, PROFILE_UUID와 NEW_NIC를 위 조회 결과의 실제 값으로 바꿉니다. 단일 Ethernet 프로필을 전제로 합니다.
nmcli connection show "PROFILE_UUID"
nmcli connection modify "PROFILE_UUID" \
connection.interface-name "NEW_NIC" \
802-3-ethernet.mac-address ""
nmcli connection up "PROFILE_UUID" ifname "NEW_NIC"
ip -br address
ip route
nmcli device show "NEW_NIC"
이 명령은 기존 프로필의 IP·게이트웨이·DNS를 유지하면서 NIC 이름 조건을 바꾸고, 예전 MAC의 장치 일치 조건을 해제합니다. NetworkManager 프로필 속성 문서에서 각 조건의 의미를 확인할 수 있습니다. 여러 NIC·bond·VLAN 구성에서는 각 프로필과 물리 연결을 따로 대응시킵니다.
고정 MAC 설정, match 조건, 사용자 udev 규칙이 남아 있으면 추가 점검이 필요합니다. 검증망에서도 기존 IP를 그대로 쓸 수 있는지 먼저 확인하고, 실제 운영망 전환 때 IP·VLAN·라우팅·DNS·방화벽을 확인합니다. 설정을 자세히 점검하려면 Rocky Linux 9 고정 IP와 연결 복구 글을 참고하세요.
부팅이 멈출 때 확인할 위치
| 증상 | 먼저 확인할 내용 | 다음 조치 |
|---|---|---|
No bootable device | BIOS/UEFI, OS 디스크, EFI 부트로더 | 새 VM의 펌웨어·부팅 대상을 점검합니다. |
dracut-initqueue timeout | VirtIO 드라이버, root=, LVM, 누락 디스크 | 콘솔 로그와 initramfs를 확인합니다. |
| 루트는 올라오고 emergency mode 진입 | fstab의 필수 마운트와 UUID | 빠진 디스크와 잘못된 항목을 확인합니다. |
| 로그인되지만 네트워크 불가 | NIC 이름·MAC 조건, VLAN, IP·경로 | 콘솔에서 프로필과 AHV NIC 연결을 점검합니다. |
dracut 셸에서는 사용 가능한 명령부터 확인합니다. 아래 조회로 디스크 자체가 없는지, 루트 식별이 틀렸는지 나눠 볼 수 있습니다. lvm 도구는 이미지에 포함된 경우에만 사용할 수 있습니다.
cat /proc/cmdline
ls /dev/sd* /dev/vd* 2>/dev/null
blkid
cat /run/initramfs/rdsosreport.txt
# LVM 루트이며 lvm 명령이 있는 경우
lvm pvs
lvm vgs
lvm lvs
필요하면 GRUB의 해당 부팅 항목에서 quiet·rhgb를 일시적으로 지우고 rd.debug를 추가해 로그를 확보합니다. Red Hat의 dracut-initqueue timeout 안내처럼 이 메시지는 루트 장치를 찾지 못하는 상황에서도 나타납니다. 곧바로 파일시스템을 포맷하거나 초기화하지 않습니다.
VirtIO가 빠졌다면 원본 VMware VM에서 이관용 initramfs를 보완해 다시 내보내거나, 설치 ISO의 Rescue 환경에서 대상 루트와 별도 /boot를 올바르게 마운트한 뒤 chroot하여 재생성합니다. Rescue에서의 uname -r는 설치 ISO 커널이므로 대상 OS 커널 버전으로 쓰지 않습니다. 먼저 대상 /lib/modules와 부팅 항목을 확인해야 합니다.
운영망 전환과 원본 복귀 조건
AHV에서 한 번 부팅한 것만으로 이관을 마치지 않습니다. 다시 시작해 같은 커널로 올라오는지, 데이터 마운트·네트워크 프로필·서비스 자동 시작이 유지되는지 확인합니다. 업무의 읽기·쓰기 점검과 모니터링·백업 연결까지 확인한 뒤 운영망으로 전환합니다.
원본 VMware VM과 백업은 정한 검증 기간 동안 보관합니다. AHV에서 운영 쓰기가 발생하기 전이라면 AHV VM을 종료·격리한 뒤 원본을 다시 켜는 복귀가 가능합니다. 새 VM에서 운영 데이터가 바뀐 뒤에는 원본이 이전 시점의 데이터이므로, 단순 전원 복귀로 끝낼 수 없습니다. 애플리케이션별 데이터 복구·동기화 절차를 먼저 정합니다.
다음 VM으로 같은 작업을 반복할 때에는 대상 커널, initramfs 확인 결과, VMDK와 qcow2의 대응표, 내용 비교 결과와 첫 부팅 로그를 함께 남겨두면 차이를 찾기 편해요.
문서 기준과 검증 범위
공식 문서 확인 기준은 2026-10-23입니다. Prism의 화면·게스트 지원은 설치한 AOS/AHV 버전에서 다시 확인해야 합니다. 이미지 등록과 VM 생성 설명은 공개된 AHV 6.8 관리 가이드와 공급사 문서를 참고했습니다.
Ubuntu 24.04의 QEMU 8.2.2에서 비영(非零) 패턴을 넣은 64 MiB 임시 디스크로 streamOptimized VMDK와 descriptor+flat VMDK를 만들고, 각각 qcow2 변환·구조 검사·내용 비교가 성공하는 것을 확인했습니다. 이는 변환 명령의 확인 범위이며, VMware에서 내보낸 실제 게스트의 dracut 재생성과 AHV 부팅·서비스 전환은 실행하지 않았습니다.
대표 이미지는 물리 HDD·SSD의 참고 사진입니다. 이관한 VM이나 Nutanix 장비를 촬영한 사진이 아닙니다. 사진 원본 · machu. · CC BY-SA 2.0. 사이트에 저장한 WebP 변환본을 재사용했으며 변환 이미지에도 같은 라이선스를 적용합니다.



