DISKPAR und DISKPART

Achtung:
Nutzen Sie DISKPAR immer nur auf leeren Partitionen. Eine Veränderung bestehender Partitionen ist nicht möglich und führt zum Datenverlust. Diese Überlegungen eignen sich besonders für Server mit eigenen Festplatten für die Exchange Datenbank oder den Einsatz im SAN.

Der Einsatz mit iSCSI oder virtuellen Systemen ist nicht möglich bzw. sinnvoll. Dies gilt ebenso wenn der Massenspeicher die physikalischen Eigenschaften anders abbildet, so dass die hier gemachten Annahmen nicht mehr zutreffen. Fragen Sie den Hersteller ihres müssenspeichers nach den Spezifikationen bzw. Hinweisen zum Einsatz von DISKPAR.

Seit Windows 2003 SP1 wird ein alternatives Programm "DISKPART" mitgeliefert, welches ebenfalls korrekt ausgerichtete Partitionen anlegen kann. Ein kleines How-To finden Sie weiter unten.

Windows Vista und Windows 2008 Server benötigen diese Funktion nicht mehr, das beide System die Blöcke auf 1024k ausrichten.

Wenn Sie eine neue Festplatte an einen Server anschließen und partitionieren, dann denken Sie meist nicht daran, dass auch bei modernen Betriebssystemen einige Besonderheiten zu beachten sind. Früher musste ein Administrator darauf achten, dass die Startpartition kleiner als 32 Megabyte oder 2 oder 4 Gigabyte ist. Das ist bei modernen Systemen kein echtes Problem mehr. Aber eine anderen Stelle wird gerne übersehen, die zwar keinen Einfluss auf die Funktion aber auf die Performance hat. Aber dazu müssen wir etwas in die physikalische Struktur einer Festplatte eintauchen.

Die Physik der Festplatten

Festplatten sind mechanische Bauteile eines Computers, die große Datenmenge speichern und vor allem auch wieder bereit stellen müssen. Dazu drehen Sie in einer Festplatte magnetische Scheiben, auf die durch sich bewegende Köpfe Informationen geschrieben und gelesen werden können. Das stellt sich etwa wie folgt dar:

  • Köpfe (Head) und Scheiben
    Jede Scheibe hat zwei Seiten, daher haben die meisten Festplatten doppelt so viele Köpfe wie Scheiben. Das muss aber nicht immer so sein. Manchmal bleibt eine Seite ungenutzt. Es gibt wohl auch Festplatten mit zwei Köpfen pro Seite um schneller zu arbeiten
  • Zylinder/Spur
    Anders als bei einer Schallplatte, bei der sich eine Linie spiralförmig von außen nach innen windet, haben Festplatten mehrere kreisförmige Spuren.
  • Sektoren
    Diese Spuren werden nun in mehrere Sektoren unterteilt. Manchmal enthält eine Festplatte auf den inneren "kürzeren" Spuren weniger Sektoren als außen. Die Hersteller versuchen die "Dichte" der Bits eben überall ähnlich zu halten um außen nicht zu viel Kapazität zu verschenken.

Nun ist es aber heute so dass speziell SCSI-Festplatten ihre physikalische Struktur nach außen gar nicht mehr richtig preis geben, sondern einfach nur  Sektor 1 bis xxxx angesprochen wird. Auch moderne  IDE-Festplatten "übersetzen" ihre internen Strukturen so, dass Computer damit umgehen können.  Lange zeit war der IDE-Standard nämlich so definiert, dass maximal 1024 Spuren angesprochen werden konnten. Damals hat ja niemand damit gerechnet, dass die Informationen jemals so dicht gepackt werden können. Stichworte sind hier CHS (cylinder, head, sector) und LBA (logical block addressing) etc.

Für die Performance eines Systems zählt aber nicht nur die Kapazität, die sich aus der Anzahl der Köpfe, Spuren und Sektoren errechnet, sondern noch weitere Faktoren, die oft übersehen werden. Wenn das Betriebssystem einen Block einlesen wollen, dann ist der Lesebefehl zwar sehr schnell bei dem Controller aber es dauert etwas, bis die Daten dann auch vorliegen. Das hängt ab von

  • Positionierung
    Der Lesekopf muss erst an die Spur fahren, auf der der Block liegt. Diese Zeit wird of in Millisekunden angegeben und beträgt bei modernen Festplatten mittlerweile unter 10ms. Es gibt sogar spezielle Serverfestplatten mit zwei "Tonarmen".
  • Latenzzeit
    Und dann muss der Kopf warten, bis der Block auch unter dem Lesekopf vorbeikommt. Diese Latenzzeit ist um so geringer, je schneller sich die Festplatte dreht. Daher gibt es Festplatten mit 15.000 u/Min
  • Durchsatz
    Dann muss noch der komplette Block eingelesen werden, d.h. vom Anfang bis zum Ende, was von der Schreibdichte (also wie "lange" Der Block auf der Festplatte ist). Auch hier ist natürlich eine hohe Datendichte und schnelle Drehzahl von Vorteil
  • RAID
    Ist zwischen Betriebssystem und Festplatte noch ein RAID-Controller, dann kann es sogar sein, dass er erst von mehreren Daten die Festplatten erhalten muss, ehe er einen kompletten Block an das Betriebssystem zurückgeben kann

Sie sehen also, dass beim Einsatz von Festplatten weit mehr als nur die Gigabytes zählen.

Was ist nun mit der "Anordnung" ?

Betriebssysteme lesen keine einzelnen Bits sondern immer gesamte Blöcke. Über Verfahren wie "Read Ahead" lesen Betriebssysteme aber auch diverse RAID-Controller sogar auf Verdacht noch die folgenden Blöcke. Benötigt diese dann das Betriebssystem ebenfalls, dann sind diese schon im Cache. Das kann natürlich auch ein Irrtum sein. Der Durchsatz einer Festplatte bricht aber dann besonders ein, wenn der Lesekopf positioniert wird. Das Positionieren kann z.B.: 4 bis 10 Millisekunden dauern, während die Wartezeit auf den Block bei einer Festplatte mit 10000 u/Min im Schnitt noch mal 3ms dauert (2ms wären es bei 15000 u/Min). Viele Notebookfestplatten drehen sich nur mit 5200 u/Min und benötigen dann über 5ms. Und nun wird es interessant:

Um die Daten auf der Festplatte zu organisieren, legen Sie Partitionen an, die für Windows dann als logische Festplatte auftauchen. Bedenken Sie, dass zwei Partitionen auf einer Festplatte nicht die doppelte Performance bedeuten, da beide die gleiche Physik benutzen. Nun liest das Betriebssystem einen Block. Die Größe des Bocks ist abhängig von der Clustergröße ihres Dateisystems. Wenn Sie eine Festplatte mit NTFS formatieren, dann ist ein Blick in der Regel 4kByte groß. Es sind aber auch andere Blockgrößen möglich.

Nun ist es aber so, dass auf einer Festplatte die physikalischen Sektoren in der Regel 512 Byte groß sind. liest also das Betriebssystem einen Block zu 4k, dann muss die Festplatte acht aufeinander folgende Sektoren a 512 Byte einlesen. Es muss daher natürlich das Ziel  sein, dass innerhalb eines Blocks kein Spurwechsel erforderlich wird. Leider kommt uns da gerade Windows derart in die Quere, dass der Master Boot Record (MBR)  nur 63 Sektoren  lang ist und die Anordnung auf der Festplatte dann wie  folgen aussehen kann:


(Bildquelle: EMC Dokumentation. Link am Ende der Seite)

Track 1:0-2-3-4 .....61-62-63
Track 2:0-2-3-4 .....61-62-63

Der rote Abschnitt ist der MBR mit 63 Sektoren und die nächste Partition beginnt bei Block 63. Das bedeutet aber, wenn nun das Betriebssystem den ersten Block dieser Partition mit 4Kbyte Clustergröße lesen will, dann muss es Track0:Sektor0 und Track1:Sektor1-62 lesen. Es findet ein Spurwechsel statt. Je nach Anzahl der Blöcke auf einer Spur entsprechend häufig. Wenn Sie z.B.: eine Festplatte mit 64 Sektoren pro Track haben, dann entspricht dies 8x8 Sektoren oder acht 4kByte Blöcken.  Bei jedem achten Zugriff muss daher die Festplatte eine zusätzliche Kopfbewegung (Verzögerung von 2-3 Millisekunden) durchführen.

Daher muss das Ziel sein, die Partition immer an der Wechsel der Spur anzuordnen. Das ganze könnten dann wie folgt aussehen:


(Bildquelle: EMC Dokumentation. Link am Ende der Seite)

Track 1:0-2-3-4 .....61-62-63
Track 2:0-2-3-4 .....61-62-63

Der Sektor 63 des Track 0 bleibt "unbenutzt",  damit ein Block des Betriebssystems immer mit dem Start einer Spur beginnt und beim Lesen eines Blocks kein Spurwechsel erforderlich ist.  Wenn Sie nun auf Exchange Datenbank - ein Blick dahinter die Zugriffsmuster von Exchange gelesen haben, dann wissen Sie, dass Exchange die EDB-Datei überwiegend in 4KByte-Blöcken liest. Daher macht es auch wenig Sinn, die NTFS-Blockgrösse ungleich 4k zu setzen, da auch hierbei dann das Betriebssystem immer einen sehr großen Block lesen und schreiben würde, aus dem Exchange nur einen Teil der Daten nutzt.

Diskpar Sample Program (for Hard Disks with 32-bit Windows)
Diskpar finds and modifies the starting sector on a disk to fix mismatches between file system allocation units and stripe units. If the file system is not aligned correctly, requests that are only the size of a single file system allocation unit might still be split between disks. Diskpar has also been used on occasion to adjust the alignment of file system allocation units so that they match storage hardware cache line boundaries.

Quelle: TechNet ms-help://MS.TechNet.2006AUG.1033/itsolutions/tnoffline/itsolutions/msm/winsrvmg/whdc/whdcwp07.htm

Den Start der Partition festlegen

Es ist kein Problem, eine Partition an einem beliebigen Punkt auf der Festplatte beginnen zu lassen. Leider legt Windows wie schon geschrieben, den MBR mit 63 Sektoren an und das Windows Setup startet direkt dahinter die nächste Partition. Die einzige Lösung ist mit einem anderen Programm die Partition anzulegen. Das Windows Setup selbst erlaubt nur die Angabe von "Megabytes" und keine Sektorenanzahl. Um daher schon auf der Systempartition diese Anordnung zu erhalten, müssen Sie die Festplatte mit einem anderen Hilfsmittel partitionieren, z.B. an einem anderen Server oder mit DISKPAR mit PEBuilder oder eben einen Linux. Allerdings ist die Betriebssystempartition in einem Server eher unterbeschäftigt, so dass hier diese wenig optimale Platzierung doch akzeptiert werden kann.

Nur für alle weitere Partitionen können sie mit DISKPAR arbeiten, um den Start der Partition so zu legen, dass ein Cluster des Dateisystems auch immer mit dem Anfang einer Spur beginnt. Mit DISKPAR können Sie die Einträge so ändern, dass der erste Block der Datenpartition auf dem neuen Track liegt und damit die Zugriffe innerhalb eines Tracks erfolgen können. Kompliziert wird dies dadurch, dass viele Festplatten innen physikalisch ihre Daten umsetzen und nach außen nur virtuelle Eigenschaften melden. So kann es sein, dass der Festplatte zwar 2048 Sektoren a 512 Byte meldet aber in Realität eine andere Zahl hat.  Oft sind es aber Vielfache davon, so dass die Ausrichtung trotzdem passt. Letztlich muss ihnen aber ihr Subsystemhersteller (z.B. EMC, IBM, etc.) die Details für die optimale Formatierung und Nutzung nennen.

Wo finde ich DISKPAR ?
DISKPAR ist Bestandteil des Windows Ressource Kit. Seit Windows 2003 SP1 ist die Funktion in DISKPART ebenfalls enthalten.

 DISKPAR erlaubt zum einen die Anzeige der aktuellen Daten als auch das Anlegen einer Partition. Ungefährlich ist das Anzeigen mit

DISKPAR -i <Nr der Disk>

Die Zählung der Festplattennummer beginnt bei 0:

Interessant ist hier der Starting Offset (Haben Sie den Tippfehler bemerkt ?). Meine NTFS-Dateisystem hat eine  Blockgröße von 4096 Byte (4k). Daher ergibt sich folgende Rechnung:

32256 / 4096 = 7,875

7,785 ist keine ganze Zahl. Meine Festplatte ist also "nicht" optimal ausgerichtet. Mit der Option "-s" kann ich nun eine leere Partition so einstellen, dass die Ausrichtung passt.

ACHTUNG
Dieser Befehl löscht ohne weitere Rückfrage die gesamten Partitionen auf der angegebenen Festplatte.

Ausgeführt werden muss DISKPAR auf einer Festplatte, auf der es keine weitere Partitionen gibt. DISKPAR überschreibt ohne weitere Rückfrage eine bestehende Partitionstabelle und legt eine neue Partition mit dem angegebenen Offset (z.B.: 64) an. Die Nummer der Festplatte finden Sie im Festplattenmanager.

Partitionierung mit DISKPART

In der Exchange 2007 Online Hilfe ist mittlerweile auch dokumentiert, dass die Ausrichtung von Partitionen durchaus ein performancerelevantes Thema ist. Das Windows 2003 SP1 Tool "DISKPART" erlaubt nun auch eine korrekte Ausrichtung von neu anzulegenden Partitionen.

ACHTUNG
DISKPART kann nur leere Festplatten einrichten. Es eignet sich daher nur für die Verwaltung zusätzlicher Festplatten. Die Systemfestplatte oder eine weitere Partition auf der Bootfestplatte lässt sich damit nicht einrichten.

Die Einrichtung einer Partition mit DISKPART ist nicht per Maus möglich, sondern wird per Kommandozeile gesteuert.

  • Disk muss leer sein
    Die mit DISKPART zu partitionierende Disk muss leer sein. Ist dies nicht der Fall, dann sollten Sie diese z.B.: mit dem Festplattenmanager löschen
  • DISPART starten
    Führen Sie aus einer Command-Box das Programm "DISKPART" aus.
  • Festplatte auswählen.
    Der erste Schritt ist nun die Auswahl der zu partitionierenden Festplatte. Dabei hilft ein "LIST DISK" bei der Anzeige der verfügbaren Festplatten, die dann mit einem "SELECT DISK <Nr>" ausgewählt  wird.
  • Partition anlegen
    Über den Befehl "Create Partition primary align=64" wird dann eine primäre Partition angelegt. Fragen Sie bitte vorab ihren SAN-Hersteller, welches "Alignment" für das jeweilige System passend ist. Die Partition belegt immer die komplette Festplatte.
  • Laufwerk zuweisen
    Mit DISKPART können sie nun auch gleich einen Buchstaben zuweisen. Der Befehl lautet "Assign Letter= X", wobei X der gewünschte Buchstabe ist. Sie können aber auch über den Festplattenmanager die Partition weiter verwalten. Dies ist vor allem dann einfacher, wenn Sie keinen Buchstaben sondern einen Mountpount verwenden wollen.
  • Formatieren
    Die Partition muss allerdings noch mit NTFS formatiert werden. Dies geht ebenfalls für den Festplattenmanager oder über das klassische "FORMAT" bzw. den Windows Explorer.

Mit Exchange 2007 empfiehlt Microsoft übrigens die Formatierung der Festplatten mit NTFS und 64k Blocksize.

Achtung 64k und 3rd Party Partitionstools
Nicht alle Tools können mit von 4k abweichenden NTFS-Blockgrößen umgehen. Ältere Versionen von Partition Magic waren hier z.B. betroffen.

Weitere Links