Как объединить vhdx и avhdx
При корректном удалении снимков виртуальной машины при её выключении снимки жёстких дисков должны объединяться автоматически. К сожалению, не всегда это получается и в силу разных причин папка со снимками может распухать и привести ко всяким неприятным последствиям. Инструмента по автоматическому объединению таких “бесхозных” снимков нет. Приходится делать объединение вручную. Для этого необходимо знать где находятся снимки жёстких дисков (находятся обычно в папке виртуальной машины в подпапке Snapshots) и где находится исходный vhd-файл, к которому эти снимки мы будем прикреплять. Так же необходимо понять в каком порядке объединять снимки. Сначала объединяем самый свежий снимок (дата изменения снимка при включённой виртуалке совпадает с текущей, например 20/05/2010) со снимком более старшим (дата изменения снимка меньше предыдущей, но больше остальных, например 15/05/2010). Получившийся в итоге снимок объединяем со следующим по старшинству. Процедуру повторяем до тех пор пока не остается один снимок, который объединяется с исходным vhd-файлом. Процедура получается следующая:
Объединяем снимки/snapshots/checkpoints Hyper-V вручную
Таких статей тысяча, но ну русском вики не видел (возможно ошибаюсь). На форумах очень часто поднимается вопрос "как мне объединить AVHD с VHD" , "что делать, если ВМ стала недоступна, но остались AVHD и VHD" и т.д. Ниже приводятся краткое и базовое описание действий в таких случаях на примере 1 AVHD и 1 VHD. Если у Вас более одного checkpoint/snapshot Вам необходимо определить какой из AVHD является последним в цепочке (смотрите свойства диска в ВМ) и начинать объединение начиная с него.
К примеру, имеется ВМ c VHD и Вы сделали 3 снимка вирт.машины. Итого получилась цепочка: VHD <> AVHD1<>AVHD2<>AVHD3.
Родительским диском для AVHD3 будет AVHD2 и так далее. И процесс слияния примет такой вид: AVHD3 в AVHD2 , AVHD2 в AVHD1, AVHD1 в VHD
На картинке ниже 1 VHD и 1 AVHD. Процесс слияния большего кол-ва снимков в vhd идентичен.
Измените расширение AVHD в VHD (Св-ва папки/view на панели инструментов -> file name extensions/показывать расширения..)
Перейдите в Hyper-V Manager , клик на Edit Disk на правой панельке , Browse и выберите Ваш снимок (.vhd)
![]()
Жмем Next и выбираем Merge
Слить изменения с родительским диском ( to the parent virtual disk)
![]()
Занудный клик на "Finish"
![]()
И наконец-то можно выпить чашечку кофе и отдохнуть
Кофе допит. VHD создан. Используем его при создании новой ВМ.
Разностные виртуальные диски в Hyper-V
Разностный, или дифференциальный (англ. differencing) виртуальный жесткий диск (VHD) является одним из трех типов виртуальных дисков, которые используются в Hyper-V. Разностный диск еще иногда называют «дочерним», так как он не является самостоятельным диском и в процессе работы полностью зависит от «родительского» диска. Разностный VHD содержит не полную копию данных, а только изменения связанного с ним родительского VHD. Родительский диск может быть любым из из трех типов VHD, в том числе и другим разностным. Можно даже создавать цепочку дисков, объединив несколько разностных VHD.
Принцип работы разностных дисков состоит в следующем: родительский диск содержит неизменный набор данных, а все изменения записываются на разностный диск. На этом принципе основана система создания моментальных снимков — снапшотов (или чекпойнтов в VMM). При создании снапшота как раз создается разностный диск, в который и продолжают писаться все изменения виртуальной машины, а основной диск становится родительским и уже не изменяется. При создании следующего снапшота создается еще один разностный диск, а предыдущий становится по отношению к нему родительским. Называется эта конструкция деревом снапшотов.

Сохраняются снапшоты в виде файлов с расширением .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.

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

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

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

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

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

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

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

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

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