Конвертация xva в KVM формат qcow2
Итак…имеем XenServer на котором крутятся виртуалки.
Задача: нужно перенести их в другое место. А под рукой есть только сервак с KVM
Заходим на Xenserver, делаем Snapshot и сохраняем его куда то.
Закидываем бекап на сервер с KVM
Наш файл имеет формат xva, это ни что иное как обычный архив
Распаковываем его
tar vxf vm1.xva ..... tar: Ref:50/00008193: implausibly old time stamp 1970-01-01 01:00:00 tar: Ref:50/00008193.checksum: implausibly old time stamp 1970-01-01 01:00:00 ... |
Готовим скрипт
#!/bin/bash dd if=/dev/zero of=blank bs=1024 count=1k test -f $1.img && rm -f $1.img touch $1.img max=`ls ???????? | sort | tail -n1` for i in `seq 0 $max`; do fn=`printf "%08d" $i` echo -n "$fn of $max" if [ -f "$fn" ]; then echo " - appending chunk" cat $fn >> $1.img else echo " - filling blank" cat blank >> $1.img fi done rm -f blank echo "Done." |
В результате работы tar получаем конфиг виртуалки vm1.xml и папку “Ref :50” в которой куски нашехо диска с контрольными сумами.
Кидаем туда наш скрипт, переходим сами и запускаем его
cp conv.sh Ref\:50/ cd Ref\:50/ ./conv.sh vm1 |
Вывод будет типа таким
00015055 of 00015370 - appending chunk 00015056 of 00015370 - appending chunk 00015057 of 00015370 - appending chunk 00015058 of 00015370 - filling blank 00015059 of 00015370 - filling blank 00015060 of 00015370 - appending chunk 00015061 of 00015370 - filling blank 00015062 of 00015370 - filling blank 00015063 of 00015370 - filling blank 00015064 of 00015370 - filling blank 00015065 of 00015370 - filling blank |
На выходе получим файл vm1.img который теперь можно подключить в KVM
Или сконвертить из raw в qcow2
qemu-img convert -f raw -O qcow2 vm1.img vm1.qcow2 |
Если при загрузке виртуалки залипает VNC, то в grub нужно убрать переопределение консоли console=hvc0
cat /boot/grub/grub.cfg ..... linux /boot/vmlinuz-3.2.0-4-686-pae root=UUID=91ff1d8e-1cb3-4bab-883f-29118815f95a ro single console=hvc0 ..... |
Если сыпет такая ошибка:
init: Id "co" respawning too fast: disabled for 5 minutes |
Коментируем строку в inittab
nano /etc/inittab co:2345:respawn:/sbin/getty hvc0 9600 linux |