Mit „diskpart.exe“ in virtuelle Welten

21. Mai 2010

Bereits in zwei Artikeln auf nt4admins hat Mark Minasi sich eingehend mit den Windows-Tool „diskpart.exe“ beschäftigt. In diesem Teil unserer kleinen Artikelreihe rund um die Kommandozeilenwerkzeuge zeigt er nun einige Neuerung, die Microsoft in diesem Bereich mit der Einführung von Windows 7 und Windows Server 2008 zur Verfügung gestellt hat.

Bild 1. Das kann „diskpart.exe“ nur auf den aktuellen Windows-Systemen: Schnell und einfach kann der Administrator so direkt an der Kommandozeile einen virtuellen Datenträger in der gewünschten Größe anlegen.

Mark Minasi hat sich im ersten Teil dieser lockeren Artikelreihe rund um diskpart damit beschäftigt, wie mit Hilfe des Kommandozeilen-Programms die Partitionen auf Festplatten angesehen, ausgewählt und angelegt werden können. Im zweiten Beitrag widmete er sich dann der Formatierung und der Vergabe von Laufwerksbuchstaben an diese Festplattenbereiche.

Nicht nur für physikalische sondern auch für virtuelle Festplatten geeignet

Schon mit den in diesen beiden Artikeln gezeigten Möglichkeiten steht dem Administrator eine ganze Reihe von Optionen offen, wenn es um die Bearbeitung und Verwaltung von Festplatten geht. Doch IT-Profis sehen sich heute nicht nur mit den physikalischen „echten“ Festplatten sondern zunehmend mit den virtuellen Festplatten konfrontiert, die viele Virtualisierungs-Lösungen einsetzen. Auch die Virtualisierungs-Werkzeuge von Microsoft wie etwa der Hyper-V-Server oder der XP-Modus unter Windows 7 benötigen einen Standardweg, um ihre „imaginären" Festplatten zu verpacken, auf die ihre virtuellen Maschinen (VMs) dann aufsetzen.

Dieser Standard ist das Dateiformat VHD (Virtual Hard Disk).Wer irgendeine der virtuellen Maschinen etwas näher betrachtet, die mit einem der Management-Werkzeuge (wie beispielsweise den System Center Virtual Machine
Manager SCVMM
) für virtuelle Umgebungen erstellt wurde, wird darin mindestens eine dieser VHD-Dateien finden können.

Aber nicht nur die virtuellen Maschinen nutzen das VHD-Format: Die gesamten PC-Backup-Werkzeuge von Microsoft speichern ihre Sicherungen in VHD-Dateien ab. Weiterhin stellen VHD-Dateien auch eine großartige Möglichkeit dar, eine ganze Reihe von Dateien und Verzeichnissen zusammen zu „verpacken“. Wer jetzt sagt, dafür gibt es doch die altbewährten ZIP-Dateien, die ja auch standardmäßig von allen aktuellen Windows-Versionen unterstützt werden, hat sicher Recht.

Aber VHD-Dateien besitzen einen großen Vorteil im Vergleich zu den bekannten ZIP-Dateien: Sie können auch alle NTFS-Attribute und Zugriffsberechtigungen für die Dateien und Ordner richtig mit abspeichern. Zudem gehört es unzweifelhaft zu den interessantesten Neuerungen bei Windows 7 und Windows Server 2008 R2, dass diese Betriebssysteme dazu in der Lage sind, vom einer VHD-Datei aus zu starten, wenn die darin enthaltene virtuelle Festplatte ein boot-fähiges Betriebssystem aufzuweisen hat.

VHD-Dateien werden als Format immer häufiger eingesetzt werden

Es besteht also kaum ein Zweifel darin, dass die VHD-Dateien auch in Zukunft weiter zum Einsatz kommen werden und dass sie sich gerade in der Windows-Welt zu einem Standard-Dateiformat für viele Einsatzzwecke entwickeln werden. So ist es dann auch für die meisten Systemadministratoren klar, dass sie mit diesem Dateiformat so verfahren, wie sie es in ihrer langen Praxis eigentlich immer bei neuen oder veränderten Dateiformaten tun:

Sie schauen sich nach Diagnosewerkzeugen und Konfigurations-Tools um, mit deren Hilfe sie dieses Dateiformat bearbeiten und warten können. Unter den Betriebssystemversionen Windows 7 Enterprise, Windows 7 Ultimate und Windows Server 2008 R2 heißt dieses Werkzeug ohne Frage „diskpart.exe“. Mit diesem Programm kann ein Systemverwalter VHD-Dateien direkt neu anlegen oder existierende virtuelle Festplatten in diesem Format untersuchen. Zudem ist es ebenfalls möglich, auch diesen „imaginären“ Festplatten einen Laufwerksbuchstaben zuzuweisen, damit der Anwender sie im Explorer wie eine normale Festplatte verwenden kann.

Als ersten Schritt wollen wir hier zeigen, wie einfach direkt im Dateisystem eine neue VHD-Datei angelegt werden kann. Der grundsätzliche Aufruf unter diskpart dabei besitzt die folgende Form:

create vdisk file=<Dateiname> maximum=<Größe in MByte>

Ein Beispiel aus der Praxis, wie es auch im Screenshot in Bild 1 zu sehen ist, würde dann so aussehen:

create vdisk file="T:\tmp\testorette.vhd" maximum=200

Diese Kommando legt dann sofort eine 200 MByte große Datei in dem spezifierten Verzeichnis ab, die als VHD-Datei strukturiert ist. Wie im Screenshot ebenfalls zu sehen ist, wird das Windows-Betriebssystem zu diesem Zeitpunkt dann auch automatisch den virtuellen Hostbus-Adapter (HBA) mitsamt dem entsprechenden Treiber für dieses „Gerät“ installieren.

Bild 1. Das kann „diskpart.exe“ nur auf den aktuellen Windows-Systemen: Schnell und einfach kann der Administrator so direkt an der Kommandozeile einen virtuellen Datenträger in der gewünschten Größe anlegen.

Was wieder einmal ein bisschen stört am Aufruf dieses Kommandozeilen-Programms ist die Tatsache, dass sich die Microsoft-Entwickler scheinbar grundsätzlich nicht einigen können, wie sie die verschiedenen Parameter benennen: Während die Größe einer anzulegenden Datei oder auch eines Volumens ansonsten mit „size=“ angegeben wird, hat man sich hier für „maximum=“ entschieden. Warum sollte diese schlechte Tradition aus alten Unix-Tagen (auch dort hatte jedes Kommandozeilen-Tool seine ureigene Syntax) hier auch gebrochen werden…

Bei einem Aufruf wie dem oben gezeigten wird das Programm die 200 MByte an
Speicherplatz sofort auf der Festplatte allokieren, im Dateisystem findet sich eine 200 MByte große Datei mit dem Namen „testorette.vhd“. Bei einer so geringen Größe wie 200 MByte ist das auch sicher ein sinnvoller Weg. Doch im praktischen Einsatz werden wohl viel häufiger VHD-Dateien in ganz anderen Dimensionen benötigt werden. So kann es dann durchaus sein, dass der Administrator zunächst noch nicht den gesamten Speicherplatz für seine zu erstellende VHD-Datei auf der Festplatte allokieren möchte.

Deshalb steht hier auch die Möglichkeit einer erweiterbaren virtuellen Festplatte zur Verfügung, bei der zunächst nur ein geringer Teil des maximal zur Verfügung stehenden Speicherplatzes auf der Festplatte angelegt wird. Der Platz wird nur dann erweitert, wenn es wirklich notwendig wird. Dies kann ganz einfach geschehen, in dem das Kommando zum Anlegen der virtuellen Festplatte um den Parameter „type=expandable“ erweitert wird:

create vdisk file=“T:\tmp\testorette.vhd“ maximum=200 type=expandable

Wer dieses Kommando ausführt wird feststellen, dass das Anlegen der „imaginären“ Festplatte nicht nur deutlich schneller vonstattengeht, sondern dass danach im Dateisystem auch nur eine circa 3 KByte große Datei aufzufinden ist. So wird natürlich auch der Begriff „maximum“ weitaus sinnvoller, legt er doch fest, bis zu welcher Grenze die virtuelle Festplatte maximal wachsen darf. Es steht auch noch die Möglichkeit zur Verfügung, diesen Aufruf mit der Einstellung „type=fixed“ aufzurufen, was uns aber weniger sinnvoll erscheint, da er das gleiche Ergebnis zur Folge hat, wie ein Aufruf ohne den „type“-Parameter.

Bleibt eigentlich nur noch die Frage zu klären, welche Art der virtuellen Festplatte hier die bessere Wahl darstellt: „fixed“ oder „expandable“? Die VHD-
Dateien mit fester Größe können im Prinzip schneller sein, da all die Zeit, die das System benötigt um den Speicherplatz auf der Festplatte zu allokieren, schon beim Anlegen der virtuellen Festplatte verbraucht wird.

Die virtuellen Festplatte mit variabler Größe haben den Platz auf der Festplatte noch nicht festgelegt – wenn dieser Zusatzplatz also dann wirklich benötigt wird, dann muss die Anwendung, die in diesem Moment eine Schreiboperation auf die virtuelle Festplatte ausführen will, im Zweifelsfall auf das Betriebssystem warten, bis es genügend Platz auf der physikalischen Festplatte für die Anfrage allokiert hat. Dies kann die gesamte Verarbeitung verlangsamen und kann in bestimmten Einsatzszenarien unakzeptabel sein.

Auf der anderen Seite ist natürlich deutlich einfacher und schneller eine 20 GByte große virtuelle Disk über das Internet oder auf einen USB-Stick zu
kopieren, wenn es sich dabei um eine erweiterbare Platte handelt, die noch nicht zu ihren vollen Größe „gewachsen“ ist und aktuell vielleicht nur 1 GByte beansprucht. Eine virtuelle VHD-Platte mit der festen Größe von 20 GByte ist
immer 20 GByte groß, auch wenn in ihr beispielsweise nur 500 MByte belegt wären.

Die erweiterbaren VHD-Dateien können aber noch einen weiteren Vorteil auf ihrer Seite verbuchen: Sie können komprimiert (compacted) werden, so dass sie die kleinstmöglichste Größe (in Abhängigkeit von den darin gespeicherten Daten) besitzen. Das Werkzeug diskpart kann die Größe einer VHD-Datei mit fester Größe hingegen nicht verringern.

Nachdem wir in diesem Artikel gezeigt haben, wie virtuellen Festplatten mittels diskpart angelegt werden können, werden wir demnächst in einem weiteren Artikel demonstrieren, welche Befehle und Möglichkeiten an der Kommandozeile zur Verfügung stehen, um mit diesen VHD-Dateien in der Praxis zu arbeiten.

Mark Minasi/fms

Lesen Sie auch