Hyper-V, PowerShell, Windows Server

Hyper-V: Difference Disk

Was ist Difference Disk? Der Name sagt eigentlich schon fast alles. Erklären möchte ich die Funktion von Difference Disk anhand eines Beispiels:

Wir wollen 50 VMs mit gleichem Betriebssystem installieren. Dadurch benötigen wir logischerweise 50 virtuelles Festplatten. Diese VHDs benötigen einen ausreichend großen Speicherplatz und obwohl sie in vielen Sektoren identisch sind. In großen Umgebungen finden wir passenden Speicherlösungen welche mit Deduplizierung diesen doppelten Speicherplatz freimachen.

Allerdings wollen wir nun einen Testumgebung auf unser Workstation oder gar Notebook betreiben, wir das mit der Deduplizierung etwas schwer werden.

Eine Alternative stellen da nun die Difference Disk dar. Dazu nehmen wir unsere VHD welche als Installationsbasis (Windows- Installation die mit sysprep generalisiert wurde) dient und hängen diese schreibgeschützt an die 50 VMs. Änderungen innerhalb der jeweiligen VMs können nicht in die Basis VHD geschrieben werden, sondern werden in eine jeweils zusätzliche VHD geschrieben. Also eine Basis VHD und 50 Differece Disk anstatt 50 komplette VHDs.

Die Verbindung zwischen Basis VHD und VM VHD erfolgt beim erstellen der einer VHD.
Wie die  Funktioniert zeigt folgendes Script:

# Basis VHDX (syspreped Windows installation)
$BasisVHD“\C:\Hyper-V\template\template2016.vhdx”
# Speicher Pfad für die neuen VMs

$HyperVpath = “C:\Hyper-V\vm\DiffDisk“

foreach ($i in 1..50)
{
#Ordner anlegen
$vmpath = “$HyperV\VM$i”
New-Item -Path $vmpath -ItemType “Directory”
New-Item -Path “$vmpath\Virtual Hard Disks” -ItemType “Directory”

#VHDX für VM anlegen – Differencing Disk zur Basis VHDX
$vmvhd = “$vmpath\Virtual Hard Disks\Disk0.vhdx”
New-VHD -ParentPath $BasisVHD -Differencing -Path $vmvhd

#VM Anlegen und VM VHD einbinden
New-VM -VHDPath “$vmvhd” -Name “VM$i” -Path “$vmpath\Virtual Machine” -SwitchName “TestNet“ -Generation 2

#VM Hardware- Parameter setzten
Set-VMMemory -VMName “VM$i” -DynamicMemoryEnabled $True -MaximumBytes 8GB -MinimumBytes 512MB -StartupBytes 1GB
Set-VMProcessor -VMName “VM$i” -Count 2

#VM starten
Start-VM “VM$i”
}

Der Vorteil liegt auf der Hand.  Die Ersparnisse beim Speicherplatz sind zwar nicht so hoch wie bei der Deduplizierung, aber immerhin wird es deutlich kleiner als bei einzelnen VHDs. Ein weiterer Vorteil ist das die VMs extrem schnell gebaut werden können, da die Basis VHD nicht kopiert werden muss.
Aufgrund dessen das nun die VMs alle an der selben Basis VHD gebunden sind ergibt sich diverse Nachteile beim verschieben dieser VMs.

Die Basis VM kann neben der Erstellung von Hand (Installation, Anpassung, sysprep) auch via Scipt erfolgen: Windows ISO nach VHD

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s