Dynamische, feste und differenzielle VHD erkennen


    Tags: ,

    Nachdem Windows 7 und Server 2008 R2 VHDs direkt verarbeiten können und Anwendungen wie das Backup-Programm VHDs erzeugen, werden Benutzer immer öfter mit diesem Dateiformat konfrontiert. Dazu trägt auch bei, dass man aus dem Web viele Virtual Appliances herunterladen kann, die teilweise ebenfalls VHDs nutzen. Daher ist es manchmal notwendig herauszufinden, welcher Typ von VHD gerade vorliegt.

    Microsofts Dateiformat Virtual Harddisk (VHD) gibt es in drei Ausprägungen:

    • Bei der fixed VHD muss legt man die endgültige Größe gleich beim Erstellen fest, sie kann nachher nicht mehr verändert werden.
    • Die dynamische VHD wächst mit steigendem Platzbedarf bis zum festgelegten Maximum, schlimmstenfalls, bis die Platte voll ist
    • Die differencing VHD zeichnet nur die Änderungen auf, die an einer mit ihr verknüpften Parent-VHD gemacht werden.

    Um herauszufinden, welche VHD vorliegt, kann man das Windows-Dienstprogramm diskpart bemühen. Man gibt dort folgende Befehle ein:

    select vdisk file="x:\pfad-zur-vhd\dateiname.vhd"
    detail vdisk

    diskpart antwortet allerdings nicht mit einer expliziten Auskunft über den VHD-Typ. Den muss man selbst aus den Größenangaben ermitteln:

    Geträtetyp-ID: 2 (Virtuelle Festplatte)
    Hersteller-ID: {EC984AEC-A0F9-47E9-901F-71415A66345B} (Microsoft Corporation)
    Status: Hinzugefügt
    Virtuelle Größe: 250 GB
    Physikalische Größe: 63 GB
    Dateiname: I:\WindowsImageBackup\a3e22c3e-8f58-11de-bb9a-806e6f6e6963.vhd
    Ist untergeordnet: Nein
    Übergeordneter Dateiname:
    Zugeordnete Datenträgernummer: Nicht gefunden.

    Wenn die physikalische und virtuelle Größe nicht übereinstimmen, dann liegt eine dynamische VHD vor (außer für den unwahrscheinlichen Fall, dass die VHD bis zum letzten MB gefüllt ist), sonst eine fixe. Enthält das "Übergeordneter Dateiname" die Kennung einer Parent-VHD, dann hat man es mit einer differenziellen VHD zu tun.

    Wenn man die Typ-Information exakt ermitteln möchte, dann kann sie mit Hilfe dieses vbs-Scripts aus dem Header der VHD auslesen.

    Keine Kommentare