Höhere Festplattengeometrie

25.02.2007 von Holger Kattner
Exchange ist, wie die meiste heutige Software, ein komplexes Gebilde, das über zahlreiche Abstraktionsebenen hinweg die eigentliche Rechnerhardware für ihre Zwecke nutzt. Auch eine Optimierung der unteren Ebenen kann manchmal sinnvoll sein. Das Programm Diskpart zur Festlegung der Festplattengeometrie ist hierfür ein gutes Beispiel.

Für viele Anwendungen, ganz besonders Datenbankapplikationen wie die Exchange Postfach-Server, ist der Festplattenzugriff ein wichtiger Leistungsfaktor. Durch zunehmende Konsolidierungsmaßnahmen muss ein Server immer mehr Datenmengen zwischen Festplatte und Hauptspeicher hin- und herbewegen. Nach dem Schritt zu 64-Bit-Systemen wird die Speicherausrüstung wohl noch einmal sprunghaft ansteigen und die Anzahl der Benutzer pro Server weiter wachsen. Da sich Faktoren wie Busdatenraten und Plattengeschwindigkeit voraussichtlich nicht im gleichen Maße steigern lassen werden, wird die Optimierung des Platten-Subsystems umso bedeutender.

Meist vertrauen Administratoren aber hier darauf, dass in diesen tiefen Ebenen des Betriebssystems alles automatisch optimiert wird, oder sie finden sich damit ab, dass die Konfigurationsmöglichkeiten an dieser Stelle zu gering sind. Optimierungspotenzial wird dann im Wesentlichen bei der Auswahl leistungsstarker Hardware gesucht. Das Hilfsprogramm Diskpar(t) ist ein gutes Beispiel, dass es nicht immer damit getan ist. Zudem ergeben sich dabei einige Einblicke, wie die Exchange-Datenbank die Festplatte verwendet und welche anderen Optimierungsstrategien den größten Erfolg versprechen.

Diskpar ist bei Windows 2000 Teil des Betriebssystem-Resource Kits, kann aber nicht mehr von Microsofts Website bezogen werden. Seit Windows 2003 SP1 sind die Funktionen des Programms in der Diskpart-Anwendung integriert, das Teil des Betriebssystems ist.

Grundlegendes

Um einige Begriffe zu klären, ist ein kurzer Überblick über die wichtigsten Grundlagen einer einfachen Festplatte eventuell hilfreich. Jede Festplatte, also in diesem Fall die gesamte Hardwarekomponente, besteht heute intern in der Regel aus mehreren elektromagnetisch beschreibbaren Scheiben oder Platten, die ihr den Namen gegeben haben.

Die Daten sind ringweise in Spuren (Tracks) auf den einzelnen Platten abgelegt. Innerhalb einer Spur sind die Daten in Sektoren unterteilt. Diese enthalten Datenblöcke mit fester Größe. Um einen Schreib- oder Lesevorgang auszuführen, hat jede einzelne Platte einen Schreib-/Lesekopf, der zu der betreffenden Spur bewegt wird und den Schreib- oder Lesevorgang ausführt. Die Platten rotieren mit fester Geschwindigkeit an dem Kopf vorbei. Da die mechanische Bewegung des Kopfes vergleichsweise viel Zeit in Anspruch nimmt, ist es am effizientesten, Daten in aneinander grenzenden Sektoren einer Spur zu lesen. Sind die Daten auf mehrere Spuren verteilt, muss der Lesekopf bewegt werden, was zusätzliche Zeit kostet. Zur weiteren Optimierung werden heute Daten auf der gleichen Spur, die ohnehin am Lesekopf vorbei geführt werden, gleich mitgelesen und in einem in der Festplatte integrierten chipbasierten Cachespeicher abgelegt, falls sie danach wieder benötigt werden sollten.

Fragmentierung

Aus dem Genannten ergibt sich, dass zusammenhängende Daten am besten auf einer einzelnen Spur einer Platte abgelegt werden. Nachdem eine Festplatte eine Zeit lang verwendet wurde, ergibt sich durch das beständige Löschen und Neuanlegen von Dateien schnell die Situation, dass eine Datei auf einer Platte nicht mehr auf einer Spur abgelegt werden kann. Sie muss in Fragmenten auf zwei oder mehr Spuren verteilt werden. Dies ist die so genannte Festplattenfragmentierung. Im Extremfall wird die
Datei in Sektorgröße zerteilt und in jeweils einzelnen Sektoren auf verschiedenen Spuren abgespeichert. Das Einlesen einer solchen Datei dauert dann wesentlich länger, als wenn sie zusammenhängend auf einer einzelnen Spur abgelegt wäre. Es wurden deshalb schnell Hilfsprogramme zur Defragmentierung von Festplatten entwickelt, die Daten auf der Platte neu ordnen, sodass sie wieder zusammenhängend abgelegt sind. Die modernen Windows-Versionen führen eine solche Defragmentierung teilweise automatisch im Hintergrund durch. Sie sind zusätzlich mit einem Defragmentierungsprogramm zur manuellen Ausführung ausgestattet.

Die Exchange-Datenbank

Exchange Server speichert seine Daten in einem oder mehreren Postfachspeichern. Sie bestehen in letzter Instanz aus sehr großen Dateien, die auf der oder den Festplatten abgelegt werden müssen. Auf Grund ihrer Größe sind sie besonders von Fragmentierung betroffen, da sie allein von der Größe her nicht auf eine einzelne Spur passen. Durch fortwährendes Einfügen und Löschen schlängeln sie sich trotz aller softwarearchitektonischer Vorkehrungen sehr schnell quer über die vorhandenen Platten. Allerdings führt dies nicht zu derartigen Leistungseinbußen, wie man das vielleicht auf Grund des Gesagten erwarten würde. Eine Defragmentierung führt zwar zu einer gewissen Leistungsverbesserung, aber der Gewinn hält sich in Grenzen.

Der Grund hierfür liegt in der Architektur und Arbeitsweise der zugrunde liegenden Jet-Datenbank. Ein Postfachspeicher, der nichts anderes ist als eine Jet-Datenbankinstanz, ist viel zu groß, um als Ganzes verarbeitet zu werden. Stattdessen weiß Jet, wo in der Datei bestimmte Informationen zu finden sind, und liest und schreibt immer nur kleine Teile innerhalb der Datei. Zu diesem Zweck sind sämtliche Daten in 4 KByte große Fragmente zerlegt. Jet liest die Daten in diesen Fragmenten.

In einer Umgebung mit vielen parallel zugreifenden Benutzern muss Exchange mehr oder weniger willkürlich auf die verschiedensten Teile der Datei und damit der Festplatte zugreifen. Die festplatteneigenen Optimierungen wie Defragmentierung oder der eingebaute Chipcache stoßen dabei sehr schnell an ihre Grenzen. Exchange und Jet weisen deshalb eigene Strategien auf, um die Festplattenverwendung zu optimieren.

Trotzdem sollte man nicht auf Defragmentierung verzichten. Auch wenn Exchange ganz gut mit einer fragmentierten Platte zurechtkommt, gilt das weniger für das darunter liegende Betriebssystem. Eine gelegentliche Defragmentierung ist aber ausreichend.

Sectoralignment

Ein weiterer die Leistung beeinflussender Faktor im Bereich Festplattengeometrie ist das so genannte Sectoralignment. Aus historischen Gründen adressieren Festplatten auch heute noch 63 Sektoren auf jeder Spur. Eine derartige virtuelle Adressierung wird dann intern von der Festplattensteuerlogik auf die reale Geometrie umgesetzt. Die erste Spur war ursprünglich für den Master Boot Record vorgesehen, der die Festplattenaufteilung und Bootcode für das Betriebssystem enthält.

Festplattengeometrien arbeiten allerdings heute in ganz anderen Dimensionen als diese virtuelle Adressierung. Der MBR nimmt deshalb nicht mehr genau eine Spur ein. In der Realität bedeutet dies heute nur, dass die ersten 63 Sektoren der ersten Spur für den MBR reserviert sind. Das Sectoralignment soll dafür sorgen, dass die Grenzen der Datenblöcke, die üblicherweise vom Betriebssystem gelesen werden, und die realen Spurgrenzen aufeinander fallen. Andernfalls müsste in regelmäßigen Abständen zum Lesen eines Datenblocks auf zwei verschiedene Spuren zugegriffen werden. Hierzu wird eine Anzahl von Sektoren größer als 63 am Anfang der Platte für den MBR reserviert, der Rest bleibt entsprechend ungenutzt.

Exchange und Jet verwenden, wie gesagt, eine Blockgröße von 4 KByte. Das Dateisystem NTFS erlaubt die Festlegung der verwendeten Blockgröße. Der Standardwert liegt aber, nicht ganz zufällig, ebenfalls bei 4 KByte. Die normale Größe eines Sektors beträgt 512 Byte. Wenn jetzt beispielsweise eine Festplatte real 128 Sektoren pro Spur hat, dann müsste das Betriebssystem bei jedem sechzehnten Zugriff doppelte Arbeit verrichten, weil jeder sechzehnte Block über die Spurgrenze kippt.

Allgemein gilt von den meisten Herstellern die Empfehlung, 64 Sektoren für den MBR zu reservieren, da üblicherweise mit Zweierpotenzen als Anzahl von Sektoren pro Spur gearbeitet wird. Allerdings werden heute beim Design von Festplatten viele Tricks angewandt. Da beispielsweise bei einer gleichmäßigen Verteilung von Sektoren außen viel mehr Moleküle als notwendig zur Speicherung genützt würden, zerfällt eine Spur beim so genannten Zoned Bit Recording außen in mehr Sektoren als innen. Der Wert muss dann für alle verwendeten Sektorzahlen passen.

Im Einzelfall sollte die reale Plattengeometrie anhand der Produktdokumentation oder durch eine Anfrage beim Hersteller abgeklärt werden. Häufig werden in größeren Umgebungen spezialisierte Speicherlösungen verwendet, die gerade auch im Hinblick auf den Einsatz mit Exchange entwickelt wurden. In diesen Fällen gibt es häufig vom Hersteller bereits eine ausführlichere Dokumentation zum Thema.

Schließlich hat man auch noch die pragmatische Möglichkeit, verschiedene Konfigurationen an einem Testsystem mit repräsentativer Hardware zu testen und Leistungsmessungen beispielsweise mit JetStress durchzuführen. JetStress ist ein spezialisiertes Hilfsprogramm von Microsoft zur Leistungsmessung der Exchange-Datenbank. Es kann von Microsofts Exchange-Seiten heruntergeladen werden.

Verwendung von Diskpar

Bei Diskpar (ohne T am Ende) handelt es sich um ein einfaches Kommandozeilenprogramm. Es verfügt über zwei Funktionen, die über Kommandozeilenparameter aufgerufen werden.

Bild 1: Ein Festplattenspeic her zerfällt in Platten, Spuren und Sektoren.

Bild 2: Diskpar ermöglicht es, ein Sectoralignment durchzuführen.
Bild 3: Diskpar reserviert eine individuell festlegbare Anzahl von Sektoren für den MBR.

Als zusätzlichen Parameter benötigt Diskpar noch die Nummer der Festplatte. Sie kann beispielsweise über die Datenträgerverwaltung herausgefunden werden (Datenträger X).

Diskpart

Windows Server 2003 Service Pack 1 hat das im Betriebssystem enthaltene Hilfsprogramm Diskpart (mit T am Ende) um die Möglichkeit des Sectoralignments erweitert. Der Befehl Create Partition Primary unterstützt jetzt einen Align- Parameter, der den für den MBR zu reservierenden Platz angibt. Etwas verwirrend ist dabei, dass der Platz in KByte und nicht in Sektoren angegeben werden muss. Bei einer Sektorgröße von 512 Byte ergibt sich immer die Hälfte der Sektorenanzahl. Um 64 Sektoren auf Festplatte 1 zu reservieren, muss deshalb die in Bild 4 dargestellte Befehlssequenz eingegeben werden.

Bild 4: Diskpart ermöglicht in Windows 2003 ebenfalls das Sectoralignement.

Zusammenfassung

Mit immer mehr Anwendungen, die durch leistungsfähigere Hardware auf einem Server abgelegt werden können, wird das Festplatten-Subsystem zunehmend zum primären Flaschenhals im System. Dabei ist Exchange weniger anfällig gegen Probleme wie Diskfragmentierung als beispielsweise das Betriebssystem, da es ohnehin willkürlich verteilte kleine Datenfragmente liest und schreibt. Andere Faktoren wie das Sectoralignment betreffen Exchange Server aber genauso. Insgesamt kann durch eine sorgfältige Anlage der Festplattenkonfiguration bei gleicher Hardwareausstattung ein merklich leistungsfähigeres System erreicht werden. Programme wie Diskpar(t) helfen dabei.