Особенности использования дифференциальных дисков в Hyper-V
Технология разностных (дифференциальных) дисков Hyper-V присутствует в гипервизоре Microsoft уже довольно давно (если не ошибаюсь, с версии Hyper-V в Windows Server 2008). Как правило, большинству администраторов она знакома применительно к технологиям создания снапшотов (чекпоинтов) и широко используется различными системами резервного копирования ВМ. При создании снапшота или выполнении бэкапа текущее состояние ВМ фиксируется в одном vhd файле, а все изменения пишутся уже в другой, дифференциальный (или разностный) диск.
Дифференциальные диски Hyper-V
Еще одной интересной возможностью дифференциальных дисков является возможность создания некого базового образа ОС (в виде vhd файла) со всеми необходимыми настройками и ПО. Затем на базе этого образа можно развернуть множество типовых виртуальны машин, которые используют vhd диск базового образа, а все изменения пишут уже в собственные виртуальные диски. Тем самым достигается существенная экономия дискового пространства. Например, на примере ниже видно, что при использовании дифференциальных дисков для 4 ВМ на основе одного образа понадобится всего 40 Гб, а при классической модели развертывания для этих же машин нужно 150 Гб. Разница существенная, особенно для быстрых и дорогих SSD дисков!
Дифференциальный (разностный) диск Hyper-V является одним из поддерживаемых типов виртуальных дисков (vhd). Однако, в отличии от обычного vhd диска, он жестко привязан к другому родительскому диску. Дифференциальный диск выступает в роли дочернего диска и содержит не полную версию данных на диске ВМ, а лишь изменения, которые были внесены в процессе ее работы, т.е. это данные, отличающие его от родительского.
Родительский (шаблонный) vhd образ остается неизменным, а все дочерние виртуальные машины, созданные на его основе, пишут изменения в собственные разностные диски. Размер такого дифференциального диска как правило довольно небольшой (его максимальный размер не может превысить размеров родителя).
Создаем эталонный VHD образ системы
Создать эталонный VHD файл можно с помощью графического интерфейса Hyper-V Manager или с помощью PowerShell. В PowerShell намного быстрее.
Совет. Для работы следующих командлетов должен быть установлен модуль Hyper-V для Windows PowerShell :
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell
Создадим новый vhdx файл.
new-vhd -path e:datavhdWin2016.vhdx -SizeBytes 50GB –Dynamic
На его базе создадим новую ВМ:
new-vm -Name TemplateVM –Path e:datavhd -VHDPath e:datavhdWin2016.vhdx | `
set-vmmemory -DynamicMemoryEnabled $true -MaximumBytes 2GB -MinimumBytes 512MB -StartupBytes 1GB
Смонтируем установочный ISO образ с образом нужной ОС:
add-vmdvddrive -VMName TemplateVM -Path d:WinSrv2016.ISO
После того, как вы создали новую ВМ, нужно установить на нее ОС, которая будет использоваться в качестве базового образа. Данную ОС нужно настроить соответствующим образом (установить драйвера, обновления, поменять настройки системы). Затем с помощью Sysprep выполняем обезличивание ОС для последующего развертывания.
cd %SystemRoot%System32Sysprep
sysprep /generalize /oobe /shutdown
Таким образом, у нас получается эталонный образ ВМ.
Саму ВМ теперь можно удалить (сохранив ее vhd файл!!!). Чтобы избежать случайного изменения этого vhd файла, которое может в обрушить все дочерние ВМ, переведем его в режим ReadOnly:
Set-ItemProperty e:datavhdWin2016.vhdx -Name IsReadOnly -Value $true
Создаем разностные диски и ВМ на их основе
Теперь можно создать несколько зависимых (дочерних) vhd файлов:
New-VHD -ParentPath: e:datavhdWin2016.vhdx -Path e:datavhdWin2016-diff1.vhdx -Differencing
New-VHD -ParentPath: e:datavhdWin2016.vhdx -Path e:datavhdWin2016-diff2.vhdx –Differencing
При создании разностного диска через графический интерфейс Hyper-V Manager в качестве формата диска нужно выбрать VHDX-> Differencing, указать его имя и путь к родительскому диску.
Теперь на основе этих vhd файлов создадим 2 виртуальные машины Hyper-V:
New-VM -Name "Win2016-diff1" -Generation 2 -MemoryStartupBytes 1GB -VHDPath e:datavhdWin2016-diff1.vhdx -SwitchName "External Network"
New-VM -Name "Win2016-diff2" -Generation 2 -MemoryStartupBytes 1GB -VHDPath e:datavhdWin2016-diff2.vhdx -SwitchName "External Network"
Запустите их:
Start-VM Win2016-diff*
Объединение (Merge) дифференциальных дисков в Hyper-V
В Hyper-V версии Windows 2008 R2 и выше появилась возможность объединения дифференциальных дисков с родительским (или же другим диском) без приостановки ВМ. Для этого имеется специальный командлет Merge-VHD либо специальная опция в меню редактирования vhd диска в консоли Hyper-V Manager.
Set-ItemProperty e:datavhdWin2016.vhdx -Name IsReadOnly -Value $false
$Merge = @{
Path = ‘e:datavhdWin2016-diff2.vhdx'
DestinationPath = 'e:datavhdWin2016.vhdx'
}
Merge-VHD @Merge
Заключение
Для уменьшения нагрузки дисковой подсистемы при множественном обращении к одному родительскому vhd файлу со стороны всех ВМ, его рекомендуется размещать на быстрых дисках. Чтобы этот файл не стал единой точкой отказа, нужно предусмотреть стратегии его резервного копирования.
Windows Server 2016
Особенности использования дифференциальных дисков в Hyper-V