Заметки о Windows и других программных продуктах Microsoft...

Разностные виртуальные диски в Hyper-V

Разностные виртуальные диски в Hyper-V

Разностный, или дифференциальный (англ. differencing) виртуальный жесткий диск (VHD) является одним из трех типов виртуальных дисков, которые используются в Hyper-V. Разностный диск еще иногда называют «дочерним», так как он не является самостоятельным диском и в процессе работы полностью зависит от «родительского» диска.  Разностный VHD содержит не полную копию данных, а только изменения связанного с ним родительского VHD. Родительский диск может быть любым из из трех типов VHD, в том числе и другим разностным. Можно даже создавать цепочку дисков, объединив несколько разностных VHD.

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

дерево снапшотов в Hyper-V

 

Сохраняются снапшоты в виде файлов с расширением .AVHD, которые как раз и являются разностными VHD.  Для примера, виртуальная машина test-pc-01 имеет основной VHD диск и два разностных AVHD, из которых первый является родительским для второго.

файлы снапшотов

 

Разностные диски можно объединять. Для этого достаточно кликнуть правой клавишей на снапшоте и выбрать пункт Delete Snapshot (удалить). При этом снапшот будет убран из списка, все изменения будут перенесены в родительский диск (операция Merging), а разностный AVHD удален.

операции со снапшотами

 

Кстати, при удалении снапшотов в Windows Server 2008 есть один нюанс. Если в данный момент виртуальная машина запущена, то AVHD, связанный с этим снапшотом остается, и запись в него продолжается. Объединение состоится только тогда, когда виртуальная машина будет остановлена. В зависимости от объемов данных операция объединения может занять определенное время, в течение которого запустить виртуалку нельзя. В Server 2012 эта проблема была решена, и снимки можно удалять при работающей виртуальной машине.

Область применения разностных дисков не ограничивается одними снапшотами.  При желании разностные VHD можно использовать и при развертывании новых виртуальных машин.

Например, у нас есть шаблон виртуальной машины — VHD с установленой на нем и подготовленой к  переносу операционной системой (процесс создания шаблона ВМ описан в предыдущей статье). Используем его как родительский диск. Процесс этот выглядит следующим образом:

Создаем новую ВМ без жесткого диска — пункт «Attach a virtual hard disc later»

создание новой виртуальной машины

 

Идем в свойства машины и выбираем контроллер жестких дисков. Можно использовать как IDE, так и SCSI контроллер, особой разницы нет.

подключение контроллера дисков к виртуальной машине

 

Теперь к выбранному контроллеру необходимо подключить виртуальный жесткий диск. Для подключения идем в свойства контроллера и жмем кнопку «New», запуская мастер создания VHD.

создание нового VHD

 

Из предложенных мастером типов дисков выбираем разностный.

мастер создания виртуальных жестких дисков в Hyper-V

 

Указываем имя и месторасположение разностного диска.

указываем расположение разностного VHD

 

Затем указываем расположение родительского диска, которым является созданый нами шаблон ВМ.

указываем расположение родительского диска

 

Смотрим суммарную информацию и подтверждаем создание нового диска кнопкой «Finish».

окончание создания разностного диска

 

Теперь в свойствах ВМ будет указан в качестве основного разностный диск.

свойства виртуальной машины

 

Если посмотреть свойства диска кнопкой «Inspect», в них указан не только его тип, но и расположение родительского диска.

свойства разностного диска

 

Таким образом можно создать много однотипных виртуалок, используя всего один родительский диск. При этом мы сэкономим не только время на развертывание, но и дисковое пространство. К примеру, одна установка Windows Server 2008 R2 занимает примерно 10Гб. Развернув 10 виртуалок с одним родительским диском мы сохраним 90 Гб места на диске.
Однако подобное решение ограничено возможностями дисковой подсистемы,  ведь все 10 машин будут одновременно обращаться к одному диску, что отрицательно скажется на его производительности. Кроме того, у всех  ВМ появляется единая точка отказа — жесткий диск, т.е. уменьшается надежность.

Как и в случае со снапшотами, с разностными дисками можно провести процедуру объединения. Для этого надо остановить виртуальную машину, зайти в ее свойства и на вкладке жесткого диска нажать на кнопку «Edit» (редактирование). В открывшемся окне выбираем пункт «Merge» (объединение).

объединение разностных дисков

 

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

выбор режима объединения разностных дисков

 

И еще одно правило по работе с разностными дисками: не следует изменять родительский диск разностного виртуального жесткого диска. Если изменить родительский виртуальный жесткий диск или заменить его другим виртуальным жестким диском (даже с тем же именем файла), структура блоков между родительским диском и разностным виртуальным жестким диском будет нарушена, и разностный виртуальный жесткий диск будет поврежден.

 
 
Комментарии

Большое спасибо) Полезно)

Игорь

Спасибо. Почему то не работает с виртуальными машинами первого поколения.

Дмитрий

Игорь: Работает…

На работе делал следующую схему:
Диск родителя (Win7-Pro) записан на SSD RAID 1
Диски дочерних машин (от 25-35) работают на RAID 10
Все даже очень хорошо работает….. без тормозов…. главное что бы сеть была от 100 Мбит… лучше если будет Гигабитная сеть, т.к. если клиенты работают с графикой.. то по RDP примерно 10-15 Мбит надо… а если офисные приложения… то 100 Мбит хватит у клиентов. Сервер по любому надо подключать на Гигабит или лучше объединять несколько сетевых интерфейсов в один.