перебазировать снимок virtualbox на другой родительский объект

перебазировать снимок virtualbox на другой родительский объект

Я чрезмерно использую снимки VirtualBox (для использования в CI-builders), поэтому обычно у меня есть несколько снимков на одной виртуальной машине. Часто я обнаруживаю, что я "разветвляю" новый снимок из существующего, например, для обновления системы:

base
└── A
    └── A1

После завершения обновления я заменяю родительский снимок его дочерним, просто удаляя A, VirtualBox затем объединяет набор изменений base->Aи A->A1:

base
└── A1

Прохладный.

Однако иногда мне нужно создать новое поддерево моментального снимка, котороеизначальноразветвляется на некие моментальные снимки и начинает жить своей собственной жизнью:

Например

base
└── A
    ├── A1
    └── B
        └── B1

Теперь: это довольно скоро становится некрасивым (поскольку я продолжаю обновлять поддерево), и в конце концов мне нравится очищать дерево снимков, поэтому оно становится таким:

base
├── A1
└── B1

К сожалению, VirtualBox не позволяет мне удалить снимок, Aвыдавая следующую ошибку:

Snapshot 'A' of the machine 'vagrantbox' cannot be deleted, because it has 2 child snapshots, which is more than the one snapshot allowed for deletion.

Теоретически я не вижу никаких проблем с удалением снимка A: VirtualBox просто должен выполнить слияние снимка дважды ( base->A->A1и base->A->B). Это, вероятно, увеличит размер снимка, но я могу с этим спокойно жить (и надеюсь, что получу лучшую производительность, уменьшив количество слоев FS)

Итак: как мне переместить снимок на родительский объект, оставив при этом снимки родственных объектов нетронутыми?

решение1

Вы можете сделать полный клон VM на основе снимка. Новая VM не будет иметь никаких снимков. Единственный другой способ — отменить регистрацию VM, а затем выполнить всю работу самостоятельно, используя vboxmanageобразы дисков и редактируя XML-файл VM.

Связанный контент