Platten-Misalignment bremst virtuelle Maschinen aus
Wer das Thema zum Ausrichtung von Partitionen verstehen will, der sollte zuerst wissen, wie ein Festplatten-Laufwerk die Daten speichert. Eine vereinfachte Darstellung eines Partitionsschemas sieht so aus, dass in einer einzigen Partition die gesamte Festplatte und damit sämtliche Sektoren belegt sind. Ein Sektor steht für die kleinste Speichereinheit, die das Betriebssystem auf einem Festplattenlaufwerk adressiert. Sinnvollerweise ist die Partition am ersten Sektor des Laufwerks ausgerichtet. Ihr Startpunkt stimmt also mit dem Beginn des ersten Sektors überein.
Diese erste – abstrahierende – Darstellung zeigt allerdings noch nicht alle relevanten Ebenen: Das Dateisystem eines Betriebssystems fasst seine Daten in Blöcken zusammen, den so genannten Clustern. Dabei ist ein Mapping der Cluster mit den zuvor erwähnten Sektoren nötig. Angenommen einem Dateisystem-Cluster sind zwei Sektoren zugeordnet – wenn das Betriebssystem zum Beispiel eine Textdatei einliest, die nur wenige Byte große ist, ruft es dabei einen Cluster ab und das Speichergerät liefert den Inhalt zweier Sektoren der physischen Ebene.
Doch die Realität sieht komplizierter aus: Üblicherweise ist ein Cluster mit deutlich mehr Sektoren verknüpft. Dabei stimmt der Beginn der Partition mit dem ersten Sektor überein. Denn alle Cluster sind an physischen Sektoren ausgerichtet – der ungebremste Datentransfer ist also gewährleistet, es tritt kein »Misalignment« auf.
Moderne Festplatten arbeiten mittlerweile intern (sozusagen auf den »Magnetscheiben«) mit Blöcken, die vier KByte groß sind. Nach außen hin – also nach dem Controller auf der Festplatte – erscheinen diese Laufwerke aber wie ihre Vorgänger: Sie liefern an der Schnittstelle zum Computer »emulierte« Sektoren aus, die 512 Byte groß sind. Dieser Schachzug macht die neuen Festplatten kompatibel zu alter Software. Allerdings kommt hier noch eine weitere Abstraktionsebene ins Spiel:
- Auf der untersten, physischen Ebene arbeitet die Festplatte mit den vier KByte großen Sektoren.
- Auf der zweiten Ebene verwendet die externe Schnittstelle des Laufwerks Sektoren, die 512 Byte groß sind (die emulierten Sektoren).
- In der oberen Schicht arbeitet das Dateisystem mit seinen Clustern, die ebenfalls vier KByte groß sind – das entspricht acht der »emulierten« Sektoren (von Ebene 2) und einem physischen Sektor, den die Platte intern speichert (unterste Ebene).
Sind nun alle drei Ebenen genau am Beginn der Festplatte ausgerichtet, ergibt sich der Best Case: Wenn eine Anwendung einen Cluster auf der Ebene des Dateisystems liest oder schreibt, wird er in acht 512-Byte-Sektoren und einem 4-KByte-Sektor aktualisiert. Damit ist die Zahl der Lese- und Schreibvorgänge für die gestellte Aufgabe minimal und es ergibt sich die optimale Performance.
Doch wenn die Cluster des Dateisystems im Bezug zu den darunterliegenden Schichten verschoben sind, kommen Probleme ins Spiel. Angenommen die Partition ist gegenüber dem Anfang der Festplatte um einen 512-Byte-Sektor verschoben. Dann ergibt sich für die Dateisystem-Cluster: Sie alle sind nun mit zwei physischen 4-KByte-Sektoren verbunden. Resultat: auf der unteren Ebene sind doppelt so viele Lese- und Schreibzugriffe für die Aufgabenstellung (Schreiben oder Lesen) nötig. Im schlimmsten Fall halbiert sich dadurch der Durchsatz des Ein-/Ausgabesystems.
Dabei stellt sich allerdings die Frage, wie es zu einer derartigen Verschiebung kommt. Die älteren Windows-Betriebssysteme, die Microsoft vor »Windows Vista« auf den Markt gebracht hat, verwenden Dateisystem-Cluster, die ein Vielfaches von 512 Bytes groß sind. Den Beginn einer Partition richten sie an 512-Byte-Sektoren aus, und nicht an 4 KByte großen, wie es für eine moderne Festplatte ideal wäre.
Alte Betriebssysteme erfordern kompatibles Verhalten
Die älteren Betriebssysteme legen zudem den Start der ersten Partition auf den Sektor 63. Diese Zahl stammt aus der Historie: Sie leitet sich von der längst veralteten Einheit der »Festplatten-Zylinder« ab: Alte MS-DOS- und Windows- Versionen verlangen, dass die erste Partition genau an einer Zylindergrenze des Festplatten-Laufwerks beginnt. Doch keines der aktuelleren Betriebssysteme verwendet noch das antike Adressierungs-Schema nach dem Modus »Cylinder-Head-Sector« (CHS; Zylinder/Kopf/Sektor).
Seit vielen Jahren ist die LBA (Logische Block Adressierung) im Einsatz. Bei ihr werden die Sektoren über durchnummerierte Adressen angesprochen. Windows XP und seine Vorläufer halten sich nur aus Kompatibilitätsgründen an die Zylindergrenzen-Regel. Das erweist sich allerdings nun, mit dem Aufkommen der Festplatten mit 4-KByte-Sektoren als ein Problem: Die am Sektor 63 ausgerichtete Partitionen sind nämlich in Bezug auf die 4-KByte-Sektoren verschoben, wie sich leicht nachrechnen lässt:
63 Sektoren mal 512 Byte und das geteilt durch einmal 4096 Byte)
Das Ergebnis ist keine ganze Zahl – somit ist die Partition (und alle folgenden) falsch ausgerichtet.
Diese Konstellation lässt sich allerdings beheben. Dazu muss ein Tool prinzipiell nur die falsch ausgerichteten Partitionen an den richtigen 512-Byte-Sektor verschieben, und schon sind sie korrekt ausgerichtet. Will man eine an Sektor 63 beginnende Partition korrigieren, genügt es, sie um einen Sektor nach vorne zu schieben. Dann lautet die zugehörige Rechnung:
64 Sektoren mal 512 Byte, das Ganze geteilt durch einmal 4096.
Das Ergebnis in diesem Fall ist eine ganze Zahl – die 8. Damit entspricht der Startpunkt der Partition der 4-KByte-Grenze. Das hat zur Folge, dass die Ausrichtung der ersten Partition (und aller folgenden) stimmt.
Manche Festplatten mit der 4-KByte-Adressierung erkennen falsch ausgerichtete Partitionen bereits selbständig – das kann zu einem weiteren Problem führen: Denn ihre interne Verwaltung verschiebt dann die emulierten Sektoren um eine Adresse. Das macht aus dem Sektor 63 den Sektor 64. Somit sind dann zwar alle Partitionen korrekt ausgerichtet. Die Anwendungs-Software und das Betriebssystem bemerken nicht, dass die Partition verschoben ist, denn intern sind alle Partitionen korrekt ausgerichtet. In einem derartigen Fall darf ein »Korrektur-Tool« keinerlei Änderungen ausführen – sonst hätte die Anwendung sogar eine negative Auswirkung.
Misalignment bei SSDs
Bei den SSDs erweist sich das Problem der falsch ausgerichteten Partitionen sogar als noch schwerwiegender. Viele SSDs verwenden intern Speicherseiten mit vier KByte Größe. Damit entstehen hier dieselben Probleme, die es bei den vier KByte große Sektoren auf herkömmlichen Festplatten gibt.
Bei den SSDs machen sich die Geschwindigkeits-Einbußen weniger stark bemerkbar als bei Festplatten – denn sie sind von den Zugriffszeiten her deutlich schneller als ihre rotierenden Pendants. Doch es kommt ein weiterer Faktor ins Spiel: die Lebensdauer der Speicherzellen. Sie sinkt mit der Zahl der Schreibzugriffe. Sind die Partitionen auf der SSD falsch ausgerichtet, fallen im »Worst Case« doppelt so viele Zugriffe an wie bei einer korrekten Ausrichtung. Daher sollte hier immer eine korrekte Ausrichtung der Partitionen gegeben sein.
Falsch ausgerichtete Partitionen bei RAID
Die RAID-Systeme verbinden in der Regel mehrere zu einem großen und/oder ausfallsichereren Medium. Das System erkennt den RAID-Speicher als ein einziges großes Laufwerk. Das RAID selbst teilt die Daten dabei in einzelne Stripes (Streifen) auf, die es reihum abwechselnd auf die Festplattenlaufwerke verteilt. Die Größe der Streifen lässt sich in vielen Systemen frei wählen. Typischer Werte sind zum Beispiel 8, 16, 32 oder 64 KByte.
Die Systemleistung eines RAID-Verbunds kann leiden, wenn der Beginn einer Partition, die auf dem RAID erstellt wird, nicht mit dem Anfang eines Streifens übereinstimmt. Im ungünstigen Fall betrifft ein Lese- oder Schreibzugriff dann sogar mehrere Streifen, die auf unterschiedliche Plattenlaufwerke verteilt sind. Dieses Problem betrifft Hardware-RAID-Systeme ebenso, wie Software-RAIDs.
Um derartige Probleme zu vermeiden, muss ein »Misalignment Tool« die Partitionen an Grenzen von 2048 Sektoren ausrichten. Ein derartiger Abstand ist für die meisten RAID-Konfigurationen ideal. Dann werden alle Datenzugriffe spürbar schneller sein, denn es finden keine redundanten Zugriffe mehr statt.
Ein Storage Area Network (SAN) lässt sich sozusagen als ein großes RAID-System interpretieren, das über ein lokales Netzwerk (Ethernet) oder per Fibre-Channel angebunden ist. Deswegen sind die für RAID beschriebenen Schwierigkeiten der Partitions-Ausrichtung auch für SAN-Speicher relevant.
Misalignment auf Virtualisierungs-Plattformen
Besteht eine Infrastruktur zusätzlich noch aus einer Virtualisierungs-Plattform und virtuellen Maschinen (VMs), ist die Ausrichtung der Partitionen auf den Datenträgern noch wichtiger für die Systemleistung, die Lebensdauer der Hardware und die Effizienz der Speichersysteme. Fehlausrichtungen können in einer derartigen Konstellation an noch mehr Stelle auftreten. Sie bewirken dann, dass mehr Daten von den darunterliegenden Speichermedien abgerufen werden, als eine virtuelle Maschine anfordert. So verbraucht das System mehr Hardware-Ressourcen als nötig, um die Last zu verarbeiten.
Bei einer Konfiguration eines »VMware Server« (er verwendet das »VMFS-Dateisystem« von VMware, auf dem dann die virtuellen Maschinen mit ihren logischen Dateisystem – bei Windows-Gastbetriebssystemen wird das üblicherweise das NTFS sein – residieren), der an einen RAID/SAN-Speicher angeschlossen ist, verursacht eine Fehlausrichtung sogar auf zwei Ebenen die Leistungseinbußen: Um etwa Daten des ersten Dateisystem-Cluster zu lesen, muss das System auf drei Blöcke der virtuellen Festplatte zugreifen, die wiederum mit vier Blöcken des RAID verbunden sind (und letztendlich in der Realität noch mehr RAID-Streifen).
Hier wäre ein Tool wünschenswert, das Laufwerke verschieben kann, die mit dem VMFS-Dateisystem formatiert sind – aber es kann die Partitionen innerhalb der virtuellen Festplatten korrigieren. Das Ziel ist dann, dass alle Dateisysteme und Partitionen korrekt ausgerichtet sind. Dann wird der Datenzugriff im Best Case doppelt so schnell: Nun muss das System nur noch zwei VMFS-Blöcke und zwei RAID-Blöcke lesen, um einen Cluster des Dateisystems zu liefern.Mehr Informationen unter: Paragon-Software
und noch mehr Infos zum Paragon Alignment Tool