Особливості використання диференціальних дисків в Hyper-V

Технологія різницевих (диференціальних) дисків Hyper-V присутній в гіпервізора Microsoft вже досить давно (якщо не помиляюся, з версії Hyper-V в Windows Server 2008). Як правило, більшості адміністраторів вона знайома стосовно технологіям створення снапшотов (чекпоінтів) і широко використовується різними системами резервного копіювання ВМ. При створенні снапшотов або виконанні бекапа поточний стан ВМ фіксується в одному vhd файлі, а всі зміни пишуться вже в іншій, диференційний (або різницевий) диск.

зміст:

  • Диференціальні диски Hyper-V
  • Створюємо еталонний VHD образ системи
  • Створюємо різницеві диски і ВМ на їх основі
  • Об'єднання (Merge) диференціальних дисків в Hyper-V
  •  висновок

Диференціальні диски 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: \ data \ vhd \ Win2016.vhdx -SizeBytes 50GB -Dynamic

На його базі створимо нову ВМ:

new-vm -Name TemplateVM -Path e: \ data \ vhd \ -VHDPath e: \ data \ vhd \ Win2016.vhdx | '
set-vmmemory -DynamicMemoryEnabled $ true -MaximumBytes 2GB -MinimumBytes 512MB -StartupBytes 1GB

Змонтуємо інсталяційний ISO образ з образом потрібної ОС:

add-vmdvddrive -VMName TemplateVM -Path d: \ WinSrv2016.ISO

Після того, як ви створили нову ВМ, потрібно встановити на неї ОС, яка буде використовуватися в якості базового образу. Дану ОС потрібно налаштувати відповідним чином (встановити драйвера, оновлення, поміняти настройки системи). Потім за допомогою Sysprep виконуємо знеособлення ОС для подальшого розгортання.

cd% SystemRoot% \ System32 \ Sysprep
sysprep / generalize / oobe / shutdown

Таким чином, у нас виходить еталонний образ ВМ.

Саму ВМ тепер можна видалити (зберігши її vhd файл !!!). Щоб уникнути випадкового зміни цього vhd файлу, яке може в обрушити всі дочірні ВМ, переведемо його в режим ReadOnly:

Set-ItemProperty e: \ data \ vhd \ Win2016.vhdx -Name IsReadOnly -Value $ true

Створюємо різницеві диски і ВМ на їх основі

Тепер можна створити кілька залежних (дочірніх) vhd файлів:

New-VHD -ParentPath: e: \ data \ vhd \ Win2016.vhdx -Path e: \ data \ vhd \ Win2016-diff1.vhdx -Differencing
New-VHD -ParentPath: e: \ data \ vhd \ Win2016.vhdx -Path e: \ data \ vhd \ Win2016-diff2.vhdx -Differencing

При створенні разностного диска через графічний інтерфейс Hyper-V Manager в якості формату диска потрібно вибрати VHDX-> Differencing, вказати його ім'я і шлях до батьківського диску.

Тепер на основі цих vhd файлів створимо 2 віртуальні машини Hyper-V:

New-VM -Name "Win2016-diff1" -Generation 2 -MemoryStartupBytes 1GB -VHDPath e: \ data \ vhd \ Win2016-diff1.vhdx -SwitchName "External Network"
New-VM -Name "Win2016-diff2" -Generation 2 -MemoryStartupBytes 1GB -VHDPath e: \ data \ vhd \ Win2016-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: \ data \ vhd \ Win2016.vhdx -Name IsReadOnly -Value $ false
$ Merge = @
Path = 'e: \ data \ vhd \ Win2016-diff2.vhdx'
DestinationPath = 'e: \ data \ vhd \ Win2016.vhdx'

Merge-VHD @Merge

 висновок

Для зменшення навантаження дискової підсистеми при множині зверненні до одного батьківського vhd файлу з боку всіх ВМ, його рекомендується розміщувати на швидких дисках. Щоб цей файл не став єдиною точкою відмови, потрібно передбачити стратегії його резервного копіювання.