XCP-ng 에서 VM 을 꺼내는 방법에 따라 파일 형식이 다르고, 이후 절차가 갈린다.
| 형식 | 나오는 경로 | VMware 직접 인식 |
|---|---|---|
.xva |
XO 또는 xe vm-export |
불가 |
.vhd |
xe vdi-export --format=vhd |
불가. 변환 필요 |
.raw |
xe vdi-export --format=raw |
불가. 변환 필요 |
.ova |
XO 의 OVA 내보내기 | 대체로 가능 |
가장 손이 덜 가는 것은 XO 에서 OVA 로 내보내는 것이다. OVA 는 디스크와 VM 정의를 함께 담으므로 vSphere 나 Workstation 에서 바로 가져올 수 있다. 다만 변환 과정에서 실패하는 경우가 있어, 안 되면 디스크만 뽑아 변환하는 쪽으로 간다.
.xva 는 tar 묶음이다. 풀면 디스크 데이터가 나오지만 Xen 고유의 조각난 형태라 그대로 쓸 수 없다. 변환을 전제로 한다면 처음부터 vdi-export 로 VHD 나 RAW 를 받는 편이 확실하다.
XCP-ng 호스트에서 대상 VDI 의 UUID 를 찾는다.
xe vm-list name-label=<VM 이름>
xe vbd-list vm-uuid=<VM UUID> params=vdi-uuid,device
xe vdi-export uuid=<VDI UUID> filename=/var/tmp/disk.vhd format=vhd --progress
내보내는 동안 VM 은 꺼져 있어야 한다. 켜진 채로 하려면 먼저 스냅샷을 뜨고 그 스냅샷의 VDI 를 내보낸다.
받은 파일을 qemu-img 로 VMDK 로 바꾼다. VHD 의 형식 이름은 vpc 다.
qemu-img info disk.vhd
qemu-img convert -p -f vpc -O vmdk -o subformat=streamOptimized disk.vhd disk.vmdk
qemu-img convert -p -f raw -O vmdk -o subformat=streamOptimized disk.img disk.vmdk
ESXi 에 올릴 것이면 subformat=streamOptimized 로 만든 뒤 데이터스토어에 올리고 vmkfstools 로 다시 쓰는 것이 안전하다. Workstation 이라면 기본 subformat 으로도 된다.
vmkfstools -i disk.vmdk -d thin /vmfs/volumes/datastore1/vm/disk-thin.vmdk
디스크를 붙였다고 바로 뜨지는 않는다. 다음을 맞춘다.
펌웨어. 원본이 UEFI 였다면 VMware VM 도 UEFI 로 만든다. BIOS 로 만들면 부트로더를 찾지 못한다. XCP-ng 에서는 xe vm-param-get uuid=<VM UUID> param-name=HVM-boot-params 또는 VM 속성의 Boot firmware 로 확인한다.
디스크 컨트롤러. 처음에는 LSI Logic SAS 나 SATA 로 붙인다. PVSCSI 는 드라이버가 초기 램디스크에 없으면 부팅에 실패한다. 리눅스라면 부팅 후 dracut -f 로 드라이버를 넣고 나서 바꾼다.
게스트 도구. Xen 의 PV 드라이버(XenServer Tools · xe-guest-utilities) 를 제거하고 VMware Tools 또는 open-vm-tools 를 설치한다. 남겨 두면 부팅이 느려지거나 네트워크가 잡히지 않는다.
네트워크. NIC 이 새 장치로 잡히므로 인터페이스 이름이 바뀐다. 리눅스는 /etc/sysconfig/network-scripts 나 netplan 설정의 장치명·MAC 을 고치고, 70-persistent-net.rules 같은 잔재가 있으면 지운다.