LINUX.ORG.RU
решено ФорумAdmin

Virtualbox => KVM [Save vbox snapshot]

 , ,


1

3

Есть виртуальная машина под VBox c несколькими снапшотами (порядка 3-х, 4-х).

Есть ли возможность мигрировать с VBox'а на KVM с сохранением снапшотов, под которыми я понимаю те снапшоты, что доступны в virt-manager'е?

Гуглёжь показал, что отдельный снапшот можно перевести в qcow2 диск kvm (см. ссылку). Также выяснилось, что в virt-manager'е отображаются внутренние (internal) снапшоты, а с внешними (external) дело обстоит неизвестно как (см. ссылку).

Не очень хочется создавать 4-е новых, практически одинаковых виртуальных машины.

P.S. был готов мириться с VBox'ом на машине с KVM, но они одновременно не работают, увы.

★★★★★

Последнее исправление: Jurik_Phys (всего исправлений: 2)

в принципе мигрировать возможно, я такое делал с vmdk много лет назад. важно делать по порядку, начинать с основного снепшота, а потом мигриривать по очереди снепшоты по цепочке, каждый раз после миграции указывая backing store как предыдущий снепшот. Я тогда на простом баше рекурсивную функцию писал, оно бежало около трех суток, но все (примерно 800 снепшотов) мигрировалось

dyasny ★★★★★
()
Ответ на: комментарий от dyasny

Можно пояснить на пальцах?

Дано. Основной диск виртуальной машины «Windows 10 (64-bit).vdi», снапшоты

# ls Snapshots/
2016-12-23T11-33-07-503956000Z.sav          {7fcaf072-17a7-4766-be74-700665290a22}.vdi  {acc04097-1972-44c4-a6af-51c7de4d9b2d}.vdi
{331640c6-4610-4490-b619-d300f3965c9e}.vdi  {9a34c40f-0ae5-4566-a4a6-d6e4ccbe254d}.vdi

Клонирую для примера снапшот 3316, в каталоге Snapshot выполняю

VBoxManage clonehd \{331640c6-4610-4490-b619-d300f3965c9e\}.vdi shap-01.vdi -format raw

В итоге, диск shap-01.vdi сразу размером в 49G, а сам снапшот 3316... только 3,3G т.е., получается raw disk со всей системой при клонировании любого снапшота.

Как я понимаю, идея состоит в том, чтобы перевести независимо все vdi диски в raw формат, а затем клеить зависимости через backing store. Но перевод vdi -> raw клонирует диск целиком со всеми предыдущими дисками в цепочке.

Собственно, что делать не понятно, когда есть, например, пара дисков по ~49G с разными снапшотами системы.

Jurik_Phys ★★★★★
() автор топика
Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от dyasny

Как я понял, алгоритм следующий.

1. Определить иерархию снапшотов в vbox'е, анализируя файл описания виртуальной машины *.vbox; Один из снапшотов будет идентичен изначальному файлу ВМ, который находится вне каталога Snapshots. Остальная иерархия определяется по названию снапшота.

2. Сконвертировать в vdi файлы в raw формат. Увеличение размера в 5 раз не должно смущать.

VBoxManage clonehd \{331640c6-4610-4490-b619-d300f3965c9e\}.vdi \{331640c6\}.raw -format raw

3. Сконвертировать полученные raw файлы в qcow2 формат;

qemu-img convert -f raw \{331640c6\}.raw -O qcow2 \{331640c6\}.qcow2

4. Установить связи между qcow2 файлами (по смыслу понятно, что ниже приведены файлы корневой фс и первого снапшота) через:

qemu-img convert -O qcow2 -o backing_file="Root.snap.qcow2" Sn01.temp.qcow2 Sn01.snap.qcow2

5. Чтобы Sn01.snap.qcow2 не испортить при включении ВМ (данный файл может использоваться в дальнейшей цепочке снапшотов), можно создать от него ответвление:

qemu-img create -f qcow2 -b Sn01.snap.qcow2 Sn01.work.qcow2

Похоже, что работает. Спасибо за помощь!

Jurik_Phys ★★★★★
() автор топика
Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от dyasny

Без проблем. Главное ничего не напутать и все должно сработать

Всё работает за исключением одного момента, когда включаю сжатие дисков qcow2 (опция -с)

qemu-img convert -O qcow2 -c -o backing_file="Root.snap.qcow2" Sn01.temp.qcow2 Sn01.snap.qcow2
то W10 отказывается запускаться. Снапшот из VBox'а сохранён в состоянии после чистой установки W10, возможно, после её первого запуска.

Так вот, если сжатие не использовать, то загрузка происходит корректно, система загружается, при этом жёсткий диск установлен в SATA, если же образ был сжат (базовый образ ВМ и образ снапшота), то W10 из снапшота не загружается, вываливается уведомление о том, что ядро ОС не доступно...

В базовом образе ВМ сохранено состояние W7 после чистой установки и она загружается вне зависимости от сжатия файла qcow2, главное, чтобы контроллёр жёстких дисков был SATA, а не IDE, как ставится по умолчанию в virt-manager'е.

Необъяснимое поведение, пришлось смириться и не использовать сжатие образов для backing files.

P.S. делюсь не очевидным моментом, возможно кому-то пригодится.

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

сжатие не нужно, там всегда были проблемы. конвертация в qcow2 уже вырежет все забитые нулями секторы из образа

dyasny ★★★★★
()
Ответ на: комментарий от Jurik_Phys

да, и еще, если будешь использовать KVM, то переходи на virtio. в принципе это сделать достаточно просто - цепляешь второй диск virtio, поднимаешь ВМ, ставишь драйвер, опускаешь ВМ, стираешь ненужный диск, а основной настраиваешь как virtio.

...хотя странно почему ты не использовал virtio в vbox, там оно тоже есть, и вроде как рекомендуется

dyasny ★★★★★
()
Ответ на: комментарий от dyasny

Про virtio на kvm в курсе. Этап настройки гостя под kvm впереди (virtio, qxl+spice, kvm agent). На vbox'e в госте стояли дополнения, должно быть, virtio и стоял контроллером жестких дисков, но я перестраховывался при экспериментах.

Со сжатием всё ясно.

Jurik_Phys ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.