Как использовать vhd-util для управления снимками

Я запускаю несколько виртуальных машин в Xen, и теперь я пытаюсь создать/отменить моментальные снимки своих виртуальных машин.

Вместе с Xen и blktap2 поставляется еще одна утилита, vhd-util, и, судя по ее описанию, я предполагаю, что смогу использовать ее для создания/отката снапшотов ВМ.

Создать снимок на самом деле легко, я просто вызываю:

vhd-util snapshot -n aSnapShot.vhd -p theVMtoBackup.vhd

Но когда дело доходит до восстановления моментального снимка, все становится очень раздражающим.

Команда «revert» требует обязательного аргумента «journal», например:

vhd-util revert -n aSnapShot.vhd -j someThingCalledJournalOfWhichIHaveNoIdea

И vhd-util ожидает какую-то информацию из журнала, а значит, это не какой-то пустой файл, в который можно писать логи.

Но я просмотрел код и интернет, так и не понял, откуда взялся этот журнал.

Аналогичный вопрос задается http://xen.1045712.n5.nabble.com/snapshots-with-vhd-util-blktap2-td4639476.html, но бедный парень так и не получил ответа.

Надеюсь, кто-нибудь здесь сможет мне помочь.


person Sean    schedule 25.11.2013    source источник
comment
Ответы ниже прекрасно объясняют, как работают моментальные снимки VHD, и для тех, кто, возможно, все еще ищет решение этой проблемы, вот что я делаю: НЕ НУЖНО вызывать vhd-util revert вообще! просто передайте моментальный снимок в tapdisk, который затем создаст виртуальное блочное устройство, все, что нам нужно сделать, это передать виртуальное блочное устройство в qemu вместо самого моментального снимка, вот и все. если возникнут проблемы с использованием tapdisk, попробуйте google tap-ctl.   -  person Sean    schedule 28.11.2013


Ответы (2)


Вам не нужно использовать revert, все, что вам нужно сделать, это выключить виртуальную машину, переименовать файл SnapShot.vhd в theVMtoBackup.vhd и перезапустить виртуальную машину.

person Thanos    schedule 26.11.2013
comment
Спасибо Танос! Наконец-то я заставляю это работать! Оказывается, это какая-то ошибка libxl, она не передает блок tapdisk в qemu, а вместо этого передает необработанный образ VHD. - person Sean; 27.11.2013

Создание моментальных снимков в виртуальном жестком диске работает путем размещения наложения поверх существующего образа виртуального жесткого диска, так что любые изменения записываются в файл наложения вместо перезаписи существующих данных. Для чтения возвращаются самые верхние данные: либо данные из оверлея, если этот сектор/кластер уже был перезаписан, либо из исходного файла VHD, если он еще не был перезаписан.

Команда vhd-util создает такой оверлейный VHD-файл, который использует существующий образ VHD в качестве так называемого «бэкап-файла». Важно помнить, что резервный файл никогда не должен изменяться, пока существуют снэпшоты, использующие этот резервный файл. В противном случае данные также изменились бы во всех этих моментальных снимках (если только данные уже не были перезаписаны там).

Процесс использования резервных файлов может повторяться несколько раз, что приводит к цепочке файлов VHD. Только самый верхний файл должен когда-либо записываться, все остальные файлы должны обрабатываться как неизменяемые.

Вернуться к снимку так же просто, как удалить текущий самый верхний файл наложения и снова создать новый пустой файл наложения, который снова предоставляет данные из резервного файла, содержащего снимок. Это делается с помощью той же команды, что и выше. Это сохранит ваш текущий снимок и позволит вам повторить этот процесс несколько раз. (переименование файла будет больше похоже на «вернуться к и удалить последний снимок».)

Предупреждение: перед повторным созданием файла моментального снимка убедитесь, что не существует других моментальных снимков, использующих этот (промежуточный) файл VHD в качестве резервного файла. В противном случае вы потеряете не только этот снимок, но и все остальные снимки, зависящие от него.

person pmhahn    schedule 27.11.2013
comment
вау, спасибо за такое подробное объяснение, сэкономило мне много времени на копании документов, очень ценю это! - person Sean; 28.11.2013