Диски с отменой (Undo) и Hyper-V

Многие из тех, кто работал в Virtual Server 2005 или Virtual PC, часто пользовались функционалом дисков с отменой (undo). Это давало возможность при выключении виртуальной машины вернуть ее в то состояние, в котором она находилась до включения. Помимо этого, изменения можно было сохранить до следующего включения или применить их к основному виртуальному диску навсегда. В Hyper-V такая возможность отсутствует. И я часто слышу вопрос — как же теперь отменять или применять изменения. Ответ на этот вопрос очевиден: в Hyper-V существует механизм снимков (snapshots), о котором я уже писал. Он позволяет значительно расширить сценарии применения дисков с отменой, так как появилась возможность строить несколько независимых деревьев снимков. Но сейчас я расскажу о том, как использовать механизм снимков Hyper-V аналогично использованию дисков с отменой в Virtual Server 2005.

Предположим, что для начала вы создали и настроили виртуальную машину, установили ОС и основные драйверы — и именно с этого состояния хотите начать свою работу. Вам потребуется выключить виртуальную машину и сделать снимок. Разумеется, снимки можно делать и во включенном состоянии, но для нашей цели лучше подойдет именно снимок, сохраняющий состояние выключенной ВМ.

Назовите этот снимок так, чтобы вам было позже понятно, что это и есть состояние, в которое можно вернуться — например, Undo Discard. Создав снимок, Hyper-V пометит основной файл виртуального диска доступным только для чтения и создаст дифференциальный файл, в который будут записываться изменения. Теперь можете запускать виртуальную машину и начинать работу.

Если теперь вы хотите выключить виртуальную машину и отменить все изменения — аналогично тому, как в Virtual Server 2005 вы выбирали действие «Turn off and discard changes» — вам нужно лишь вернуться к снимку «Undo Discard». Это вернет ВМ к начальному состоянию.

Если вы хотите сохранить ваши изменения в файле отмены — так как вы делали, выбирая в Virtual Server 2005 пункт «Save changes» — вам нужно… ничего не делать. Просто выключайте виртуальную машину, и все изменения останутся в дифференциальном файле.

Последним действием при использовании дисков с отменой в Virtual Server 2005 был вариант применения изменений к основному файлу виртуального диска — для этого использовалась команда «Commit changes to disk». В операциях со снимками консоли Hyper-V Manager нет действия с полностью аналогичной функциональностью. Но это не означает, что объединить исходный файл виртуального диска с изменениями, накопленными в дифференциальном файле, невозможно. Если вам необходимо применить текущее состояние к единому виртуальному диску, вам потребуется выполнить несколько шагов:

  1. Выключите виртуальную машину.
  2. Найдите ваш дифференциальный файл — он имеет расширение «.AVHD».
  3. Скопируйте его в файл с именем Child.vhd.
  4. Скопируйте исходный файл виртуального диска (он имеет расширение «.VHD») под именем Parent.vhd. (Мы используем копирование, а не переименование для надежности — чтобы случайно не повредить ВМ).
  5. В консоли Hyper-V Manager запустите мастер Edit Disk, выберите файл Child.vhd и запустите операцию Merge.
  6. В окне операции Merge выберите объединение диска с файлом Parent.vhd.
  7. После завершения процесса вы получили объединенный виртуальный диск.
  8. В зависимости от того, с каким состоянием ВМ вы хотите работать далее, настройте ВМ на использование свежесозданного объединенного диска или примените снимок «Undo Discard», что вернет ВМ к исходному состоянию.
  9. Включите виртуальную машину и продолжайте работу.

Еще один момент, о котором вы должны помнить, применяя снимки. В отличии от дисков с отменой в Virtual Server 2005, снимки хранят не только данные на дисках виртуальной машины, но ее настройки. То есть, применяя снимок «Undo Discard», вы возвращаете конфигурацию ВМ в исходное состояние. И если вы, например, добавляли второй сетевой адаптер после создания снимка, то при возврате к исходному состоянию он исчезнет. В Virtual Server 2005 и Virtual PC было не так. Диски с отменой позволяли отменить лишь состояние диска, но не настройки ВМ.