Tags: VHD, Hyper-V, Datei-Management
Während normale VM-Clones eine komplette Kopie der virtuellen Disks erhalten, speichern Linked Clones nur die Abweichungen von der übergeordneten VM. Microsoft bietet keine Linked Clones im Sinne von VMware, aber ihre Funktionalität lässt sich mit Hilfe von differenziellen Disks manuell nachbilden.
Wenn man in Hyper-V einen Snapshot einer virtuellen Maschine anlegt, dann erstellt der Hypervisor eine differenzielle Disk mit der Endung .avhd bzw. .avhdx und ordnet diese der VM als virtuelle Festplatte zu. Das ursprüngliche virtuelle Laufwerk wird von der VM nicht mehr verwendet, vielmehr schreibt Hyper-V alle Änderungen nach dem Anlegen eines Snapshots in die differenzielle VHD(X).
Snapshot-Technik für Linked Clones
Genau diesen Mechanismus kann man sich zunutze machen, um ein Äquivalent zu Linked Clones von VMware nachzubauen. Dabei ist es durchaus zulässig, mehrere VMs von einer VHD(X) abzuleiten. Deshalb muss gewährleistet sein, dass die ursprüngliche Disk keinesfalls verändert wird, weil sonst sämtliche Clones unbrauchbar werden. Im Unterschied zu VMware bietet Microsoft keinen Template Mode, um das übergeordnete Laufwerk zu schützen, so dass man dafür das Nur-Lese-Attribut auf Dateiebene einsetzen muss.
Der Vorteil einer solchen Konfiguration liegt auf der Hand, weil sich hier im Gegensatz zu Full Clones mehrere VMs eine gemeinsame VHD(X) als Master-Image teilen und daher weniger Plattenplatz beanspruchen. Da Hyper-V jedoch bei jeder Lese- und Schreiboperation das Stammlaufwerk mit der differenziellen Disk abgleichen muss, verursachen Linked Clones zusätzliches I/O und erzielen somit eine geringere Performance.
Microsoft rät daher vom Einsatz von AVHD(X) im produktiven Betrieb auf dem Server ab. Das betreffende Dokument bezieht sich zwar auf Windows Server 2008 R2, aber an der grundsätzlichen Problematik hat sich seitdem nichts geändert. Eine sinnvolle Maßnahme zur Verbesserung der Leistung besteht darin, zumindest die Eltern-VHD(X) auf einer SSD abzulegen.
Anleitung: Die Schritte zu Linked Clones
Für das Master Image verwendet man entweder eine VHD oder VHDX einer bestehenden VM oder man legt eine neue an, indem man eine VM erstellt und das Gastbetriebssystem frisch installiert. Wenn es sich beim Gast um Windows handelt, dann empfiehlt es sich, das Master-Image mit sysprep zu generalisieren, bevor man davon differenzielle Disks ableitet. Auf diese Weise bootet jede Child-VM in das OOBE und kann individuell aktiviert werden.
Das Stammlaufwerk für die differenziellen Disks sollte von der VM entkoppelt werden, unter der es ursprünglich angelegt wurde. Am sichersten ist es, diese VM zu löschen. Zusätzlichen Schutz gegen die Veränderung des Images erzielt man, indem man das Nur-Lese-Attribut für die VHD(X)-Datei setzt.
Nun kann man einen oder mehrere Linked Clones von der Master-Disk ableiten, indem man dafür jeweils eigene differenzielle Disks anlegt und diese mit dem Stammlaufwerk verknüpft. Dazu führt man im Aktionen-Fenster des Hyper-V Manager den Befehl Neu => Festplatte aus.
Dieser öffnet einen Wizard, in dem man sich zuerst zwischen VHD und VHDX entscheidet und dann unter Datenträgertyp auswählen die Option Differenzierung aktiviert. Im letzten Schritt verbindet man die neue AVHD(X) mit dem Eltern-Laufwerk, wobei abhängig vom Typ der differenziellen Disk nur VHD oder VHDX zur Auswahl stehen.
Schließlich erzeugt man die virtuellen Maschinen, denen die differenziellen Disks zugeordnet werden sollen. Dies erfolgt auf die übliche Weise mit Hilfe des Wizards, nur beim Dialog Virtuelle Festplatte verbinden ignoriert man die voreingestellte Option Virtuelle Festplatte erstellen und verknüpft stattdessen die VM mit der zuvor erzeugten AVHD(X).
Vorsicht bei Merge-Operation
Möchte man zu einem späteren Zeitpunkt die differenzielle Disk mit dem Master-Image zusammenführen, dann sollte man sich davon überzeugen, dass keine weitere AVHD(X) davon abhängt. Die betroffenen VMs wären sonst nach dem Merging unbrauchbar.
Man könnte sich in dieser Situation dadurch behelfen, dass man die Eltern-VHD(X) mit der differenziellen Disk zu einem neuen Laufwerk verschmilzt. Dies erfolgt im Hyper-V Manager über den Befehl Datenträger bearbeiten => Zusammenführen.
Zu bedenken bleibt schließlich, dass Hyper-V komplexe Abhängigkeiten zwischen Master-Image und differenziellen Disks erlaubt. Dazu gehört nicht nur, dass man mehrere Linked Clones von einer VHD(X) ableiten kann, sondern auch, dass sich differenzielle Laufwerke hintereinanderschalten lassen. Im Gegensatz zu VMware Workstation oder dem vSphere Client bietet Hyper-V dafür aber keine visuelle Darstellung, so dass man bei solchen Konfigurationen leicht den Überblick verlieren kann.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- VMs unter Hyper-V vollständig löschen mit PowerShell
- Windows-Features offline in einer virtuellen Maschine installieren
- Virtuelle Maschinen unter Hyper-V von Generation 1 auf 2 konvertieren
- OVA und OVF in Hyper-V importieren mit PowerShell
- Hyper-V 1709: VMs exportieren und importieren mit der Teilen-Funktion
Weitere Links