Nie jest to idealne rozwiązanie ale działa.
1. Należy stworzyć wolumen na który będziemy zapisywać obraz dysku źródłowego. Wolumen ten powinien być conajmniej tej samej wielkości do dysk źródłowy.
lvcreate -n transfer_disk -L 200G xenvms
2. Podłączamy ten dysk do wirtualki, którą chcemy zmigrować i bootujemy ją z live-cd
kernel = '/usr/lib/xen-4.1/boot/hvmloader' #zmieniamy kernel żeby dało się odpalić wirtualkę w trybie graficznym przez VNC
builder = 'hvm'
vcpus = '1'
memory = '1024'
cdrom = 'file:/xen/ISO/ubuntu-16.04.3-desktop-amd64.iso' # montujemy ISO live cd jako CD-ROM
disk = [
'file:/xen/ISO/ubuntu-16.04.3-desktop-amd64.iso,hdc:cdrom,r', # montujemy ISO live cd jako CD-ROM
'phy:/dev/xenvms/vm-disk,xvda,w',
'phy:/dev/xenvms/transfer_disk,xvdb,w', #montujemy dysk do zapisania obrazu
]
boot = "dc" #bootujemy najpierw z CD-ROM
name = 'vm'
vif = [ 'ip=10.20.30.40 ,mac=00:11:22:33:44:55,bridge=xenbr0' ]
vnc=1 #konfiguracja VNC
vncconsole=1
vncpasswd='password'
vncunused = 1
vnclisten = '10.20.30.50'
stdvga = 0
serial = 'pty'
usbdevice = 'tablet'
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
3. Po uruchomieniu live-cd formatujemy dysk "transfer_disk" za pomocą gparted i montujemy go w systemie:
mount /dev/xvdb1 /mnt/transfer
4. Teraz możemy wykonać obraz dysku xvda do pliku obrazu za pomocą dd
dd if=/dev/xvda | gzip -1 > /mnt/transfer/vm-image.gz
5. Na docelowym serwerze robimy dokładnie taki sam wolumen do trasferu i tak samo bootujemy wirtualkę z nim z livecd
6. Przenosimy plik z obrazem z serwera źródłowego na docelowy
scp /mnt/transfer/vm-image.gz user@192.168.1.1:/mnt/transfer/
7. Odtwarzamy dysk na serwerze docelowym z obrazu
gunzip -c /mnt/transfer/vm-image.gz | dd of=/dev/xvda
8. Zamykamy docelową wirtualkę i zmieniamy configa tak aby bootowała się już z odtworzonego dysku
bootloader = '/usr/lib/xen-4.1/bin/pygrub'
vcpus = '1'
memory = '1024'
root = '/dev/xvda1 ro'
disk = [
'phy:/dev/xenvms/vm-disk,xvda,w',
]
name = 'vm'
vif = [ 'ip=10.20.30.40 ,mac=00:11:22:33:44:55,bridge=xenbr0' ]
# Behaviour
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
Źródło: