Freigeben über


Как работают «снимки» (Snapshots) в Hyper-V

В последнее время я часто получаю вопросы по «снимкам» (snapshots) в Hyper-V. Как это работает, влияет ли на производительность, сколько может быть снимков у одной ВМ, как удалить снимки, как перенести ВМ со снимками на другой сервер?.. Вопросов много — давайте разберемся.

Для начала обсудим, что же такое снимок. Очевидно, часто при тестировании какого-то ПО, службы или драйвера желательно сохранить состояние ВМ, пробовать разные действия — и каждый раз иметь возможность вернуться в сохраненное состояние. Это сохраненное состояние и есть снимок или снапшот (Snapshot).

Представьте себе, что я участвую в разработке некого приложения, которое необходимо протестировать на работу установщика, совместимость с MS Office и работу с IIS 7.0. Сначала я устанавливаю и настраиваю ОС, ставлю драйверы, затем делаю снимок системы. После чего устанавливаю свое приложение и смотрю, как отработал процесс установки. Затем я возвращаюсь к исходному состоянию, устанавливаю MS Office, делаю новый снимок, устанавливаю приложение, тестирую работу с офисом. Возвращаюсь на шаг назад, устанавливаю IIS 7.0, делаю снимок, устанавливаю приложение, тестирую… И тут понимаю, что система стала неработоспособна. Благодаря дереву снимков я легко вычисляю, какая из настроек ОС, служб или приложений привела к такому жуткому результату. Нахожу проблему и отправляю разработчикам пошаговое руководство по ее повторению. Затем просто жду от них новую версию приложения. И тем временем удаляю все снимки кроме тех, где старой версии приложения нет (останутся три — чистая ОС и драйверами, с установленным MS Office и с MS Office + IIS). Ну а затем просто трижды тестирую установку и работу новой версии приложения в каждой из уже подготовленных сред.

Так как же работает механизм снимков? Что происходит, когда мы нажимаем заветную кнопку «Take Snapshot»?

  • Hyper-V приостанавливает (pause) вашу ВМ.
  • Создается резервная копия конфигурации ВМ (файла в формате VMC).
  • Для всех текущих виртуальных дисков (файлов VHD*) создаются новые разностные (Differencing) диски.
  • В свойствах ВМ старые диски заменяются на новые. (Теперь всегда имеем нетронутую копию дисков на момент создания снимка);
  • Работа ВМ возобровляется. (Все это происходит на лету — так что вы ничего не замечаете. Прерывания работы не происходит).
  • Как только ВМ возобновила работу, Hyper-V начинает сохранять в отдельный файл состояние ее оперативной памяти.
  • Во время этого процесса Hyper-V организует работу с памятью так, чтобы ВМ не вносила изменения в те области, которые еще не были сохранены. Для этого временно используется оперативная или виртуальная память основной системы. 

* Примечание. В текущей версии Hyper-V снимки создаются лишь с виртуальных дисков в формате VHD. Диски Pass-through и iSCSI не поддерживаются, так как нет практической возможности быстро сохранить их текущее состояние. 

После завершения этого процесса мы имеем: состояние конфигурации ВМ на момент снимка в файле VMC, состояние всех дисков ВМ на момент снимка в файлах VHD и состояние памяти ВМ на момент снимка в обычном формате приостановленной ВМ (Saved State).

Теперь вы можете в любой момент применить снимок (Apply Snapshot) и восстановить состояние ВМ. Однако очевидно, что вносить изменения в само сохраненное состояние ВМ невозможно. Зато снимки можно удалять. Если удаляемый снимок — последний в своей ветви, то удаляется только он сам. Если ниже него в дереве снимков имеется одно сохраненное состояние, то два разностных виртуальных диска (Differential VHD) объединяются в один. Если удаляемый снимок наследуется сразу несколькими, то файл его виртуального диска остается и будет использоваться этими потомками. При желании можно удалить любое поддерево снимков кнопкой Delete Snapshot Tree. Обьем всего дерева для одной ВМ ограничен 64 снимками. Это связано с максимальным количеством копий, которое может хранить служба VSS.

Если вам потребуется перенести с одного сервера на другой ВМ с сохранением снимков — помните, что это поддерживается только в пределах одной версии Hyper-V. То есть перенести ВМ со снимками с Beta-версии на RC0 невозможно. Если же версии Hyper-V совпадают, то на сервере-источнике воспользуйтесь экспортом ВМ во временную папку. И, соответственно, импортируйте ВМ на целевом сервере. Процедура экспорта-импорта переносит как снимки и настройки, так и сохраненное состояние ВМ.

О том, как изменился механизм снимков с Beta-версии Hyper-V до RC0, я расскажу на днях.

Comments

  • Anonymous
    January 01, 2003
    Многие из тех, кто работал в Virtual Server 2005 или Virtual PC, часто пользовались функционалом дисков с отменой (undo). Это давало возможность при выключении виртуальной машины вернуть ее в то состояние, в котором она находилась до включения. Помимо

  • Anonymous
    January 01, 2003
    А есть ли возможность перенести виртуальную машину на другой сервер вместе со "снимками", ежели хост "умер", но доступ к винчестеру, содержащему информацию о  машине сохранился? Импортировать не получается, а простое подключение VHD без "снимков" ну уж совсем не интересно...

  • Anonymous
    January 01, 2003
    При удалении снапшотов (или дерева снапшотов), идет объединение (merge) дисков до текущего (Now) состояния. То есть, имея пять подряд идущих снапшотов, и удалив все их, вы получите один VHD со всеми последними изменениями. Если надо просто удалить снапшоты не объединяя диски, то нужно сначала применить (Apply) нужное старое состояние (оригинальное или некий промежуточный снапшот) и удалить снапшоты. В объединенном диске останется примененное состояние.

  • Anonymous
    January 01, 2003
    Заменяет ли механизм снапшотов обычный бэкап? Можно ли его делать по расписанию, и в Hyper-v без графического режима? (то есть Hyper-v настраивался с удаленной консоли, однако затем компьютер с Windows Vista из сети заберут и возможности управлять Hyper-v не будет).

  • Anonymous
    January 01, 2003
    Пока мучилась - нашла решение через "редактировать диск" - "слияние", через коленку, но добила... Из домена пришлось выводить - вводить по-новой, а так вроде бы все получилось

  • Anonymous
    January 01, 2003
    Официально - нельзя. Поддерживаемого решения не существует. Для заказчиков, имеющих Премьер поддержку, мы в консалтинге разрабатывали утилиту, которая позволяла такое делать.

  • Anonymous
    April 10, 2008
    Лешка, было бы неплохо, если бы ты подробнее описал процесс удаления снапшотов и "объединение" дифференциальных дисков снапшотов при их удалении. Что бы люди не путались.

  • Anonymous
    December 05, 2008
    Кстати, присоеденяюсь к Константину. Так как найти мне даную функцию мне не удалось