Was bedeutet es, Partitionen auszurichten?


Antworten:


15

Das Ausrichten der Partition bedeutet, sie an die wahre, zugrunde liegende Blockstruktur anzupassen.

Festplatten verwenden seit langem 512-Byte-Blöcke. Da dies schon lange so ist, ist es nun fast unmöglich, die Blockgröße zu ändern. Zu viel Software müsste repariert werden.

Auf einer SSD könnte die wahre Blockgröße 128 KB betragen. Auf einem RAID-Array können es 64 KB sein. Auf einem Laufwerk mit erweitertem Format sind es 4 KB.

Aus Gründen der Abwärtskompatibilität arbeitet das Laufwerk weiterhin mit 512-Byte-Blöcken. Aus Leistungsgründen sollte Ihr System jedoch die wahre Blockgröße kennen.

Eine der einfachsten Leistungsverbesserungen besteht darin, die Laufwerkpartition an der tatsächlichen Blockgröße auszurichten, sodass beim Schreiben von 4 KB oder 64 KB oder 128 KB durch das Betriebssystem ein vollständiger Block geschrieben wird.

Wenn die Partition nicht ausgerichtet wäre, würden 512 Bytes in den ersten Block und 4 KB - 512 Bytes in den zweiten Block geschrieben, wodurch die Festplatte / SSD / RAID gezwungen würde, zwei Lese-, Änderungs- und Schreibzyklen anstelle eines Schreibvorgangs durchzuführen.



@AnkurTank: Nein, die Frage scheint dort gut abgedeckt zu sein.
Zan Lynx

Vielen Dank für Ihre Aufmerksamkeit. Jetzt müssen Sie nur noch bestätigen, dass die Partitionen ausgerichtet sind. Denn für mich klagt parted immer noch darüber, dass Partitionen nicht ausgerichtet sind. Außerdem habe ich versucht, ein anderes Tool zu verwenden, zB gdisk, aber ich kann gdisk nicht für cross compile. Ich dachte mir, wenn Sie Vorschläge haben, wie Sie das überprüfen können, hilft das.
AnkurTank

3

Partitionen sind Sequenzen von Blöcken , und nach langjähriger Konvention besteht ein Block aus 512 Bytes.

Eine Partition kann also mit einem Vielfachen von 512 Bytes auf einer Festplatte beginnen, was als sehr lange Bytefolge "angesehen" wird.

Die zugrunde liegende Festplattenhardware, die ursprünglich dieselbe Sektorgröße von 512 Byte aufwies, verwendet jetzt aus Effizienzgründen eine größere Größe. Nehmen wir an, es sind 4096 Bytes.

Aus Kompatibilitätsgründen "redet" die zwischen Betriebssystem und Hardware stehende Firmware immer noch in Sektoren. Sie fragen also den ersten Sektor, und die Hardware ruft den ersten Block (4096 Bytes) ab, und die Firmware extrahiert und liefert den entsprechenden Slice. Sie fragen den zweiten Block und der Block wird wahrscheinlich aus dem Cache abgerufen.

Bisher hat die Nichtübereinstimmung der Sektorgröße keine Nachteile.

Das Betriebssystem verwendet jedoch auch Blöcke (normalerweise als Cluster bezeichnet ), um die Effizienz zu steigern, und richtet sie an der Partition aus. Ein Cluster mit vier Sektoren besteht also aus den Sektoren 5, 6, 7 und 8.

Wenn das Betriebssystem den Dateisystemcluster 2 anfordert , wird die Firmware nach den logischen Sektoren 5, 6, 7 und 8 gefragt . Befinden sich alle im selben Plattenblock , muss die Platte EINEN Lesevorgang ausführen.

Wenn die Partition jedoch im "falschen" Sektor beginnt, endet der erste Cluster im Dateisystem beispielsweise vereinfacht in den Sektoren 2, 3, 4 und 5. Diese befinden sich möglicherweise zur Hälfte im ersten Plattenblock (1 -2-3-4), die Hälfte in der Sekunde (5-6-7-8).

Sie benötigen jetzt eine zusätzliche Lektüre . Bei einem Verhältnis von Betriebssystem zu Festplatte von 1: 1 entspricht dies einer Verdoppelung der Lesezugriffe. Wenn das Verhältnis von Betriebssystem zu Festplatte 2: 1 beträgt, ein Cluster aus zwei Hardware-Festplattenblöcken besteht, benötigen Sie 2 + 1 = 3 Lesevorgänge, eine Strafe von 50%:

OS   |--- cluster  12 ---|--- cluster  13 ---|--- cluster  14...
     |                   |                   |
HDD  --|----|----|----|-a--|--b-|-c--|-d--|-e--|----|---        BAD
     |                   |                   |
HDD  |----|----|----|----|-a--|--b-|-c--|-d--|----|----|---     GOOD

Darüber besteht ein Cluster aus 4 Hardware-Blöcken (Verhältnis 4: 1) mit jeweils 2 Sektoren. Das Ausrichten auf "geraden" Sektoren bedeutet, dass zum Lesen eines Clusters diese 8 Sektorlesevorgänge in 4 Blocklesevorgänge übersetzt werden. Das Ausrichten auf ungeraden Sektoren bedeutet, dass die gleichen 8 Sektorlesevorgänge 4 + 1 = 5 Blocklesevorgänge erfordern, was einen Leistungsnachteil von 25% bedeutet (Sie addieren alle vier Lesevorgänge einen).

Wenn Sie eine falsch ausgerichtete Festplatte mit einem Verhältnis von 4: 1 haben, beschleunigt das Ausrichten diese um 20% (Sie sparen alle 5 Lesevorgänge einen Lesevorgang).

Um eine Partition "ausgerichtet" zu machen, verschieben / setzen Sie entweder ihren Versatz vom Anfang der Festplatte auf das entsprechende Vielfache von 512b-Sektoren, oder Sie können (je nach Werkzeug) eine kleine Partition am Anfang der Festplatte einfügen. mit einer solchen Größe, dass die nächste Partition genau an einer Plattensektorgrenze beginnt. In diesem zweiten Fall, während Sie theoretisch höchstens N-1 Sektoren benötigen, dh nur sehr wenige Kilobyte, müssen Sie in der Praxis wahrscheinlich einige hundert Kilobyte, möglicherweise ganze Megabyte, verschwenden, um die meiste Leistung aus Ihren herauszuholen Multi-Gigabyte-Festplatte.

(Sie könnten diesen Speicherplatz und vieles mehr wahrscheinlich wiederherstellen, indem Sie die Clustergröße des Betriebssystems richtig auswählen .)


1
Lesevorgänge sind nicht so schlecht, ja, Sie müssen ein wenig zusätzliche Daten lesen, aber das Lesen von drei zusammenhängenden Blöcken kostet nicht wesentlich mehr Zeit als das Lesen von zwei. Das eigentliche Problem besteht darin, dass zum Schreiben eines Abschnitts, der kleiner als die zugrunde liegende Blockgröße ist, das Lesen der Daten erforderlich ist und darauf gewartet wird, dass die Festplatte eine vollständige Umdrehung durchläuft und dann neu geschrieben wird.
Plugwash

1
Außerdem müssen keine zusätzlichen Partitionen erstellt werden. Es gibt keine Regel, dass der gesamte Speicherplatz auf einer Festplatte partitioniert werden muss.
Plugwash

2

Die Laufwerke sind fast immer in logische Sektoren mit 512 Byte unterteilt, andere Größen sind möglich, werden jedoch aufgrund von Kompatibilitätsproblemen selten verwendet. Bei älteren Festplatten handelte es sich um separate Sektoren, die einzeln beschrieben werden konnten.

Bis Mitte der 2000er Jahre wurden Trennwände traditionell an "Zylinder" -Grenzen ausgerichtet. Aus historischen Gründen bestand ein "Zylinder" normalerweise aus 63 Sektoren. Sektor 0 enthält den Bootsektor und die Partitionstabelle. Spätere Sektoren in Zylinder 0 enthielten manchmal zusätzliche Informationen für den Bootloader. Die erste Unterteilung begann typischerweise am Anfang von Zylinder 1.

Die meisten Dateisysteme gruppieren Sektoren in größere Blöcke (manchmal als "Cluster" bezeichnet). Diese sind normalerweise 4 KB groß.

Zu einem späteren Zeitpunkt war es effizienter, wenn die Hersteller von Laufwerken auch physische 4-KB-Sektoren verwendeten. Aus Kompatibilitätsgründen behielten sie jedoch die logische Sektorgröße bei 512 Byte. Wenn der Host den gesamten physischen Sektor auf einmal liest oder schreibt, sind die Dinge schnell. Wenn ein Teil davon gelesen wird, sind die Dinge immer noch ziemlich schnell, da das Laufwerk die unerwünschten Daten einfach verwerfen kann. Wenn der Host jedoch nur einen Teil eines physischen Sektors schreibt, muss das Laufwerk den physischen Sektor lesen, die gelesenen Daten mit den Daten vom Host kombinieren und dann den geänderten Sektor neu schreiben. Das bedeutet, dass Sie darauf warten müssen, dass sich der Antrieb zweimal statt einmal dreht.

Dies funktioniert gut, wenn die 4K-Cluster des Dateisystems auf die physischen 4K-Sektoren des Laufwerks ausgerichtet sind. Leider bedeutet die traditionelle Art der Partitionierung von Laufwerken, dass die erste Partition grundsätzlich fehlausgerichtet werden muss und spätere Partitionen nur eine 1: 8-Chance hatten, ausgerichtet zu werden. Anbieter von Laufwerken im fortgeschrittenen Format mussten daher Tools bereitstellen, um die Neuausrichtung ihrer Partitionen zu unterstützen.

Ähnliche Überlegungen können für RAID-Arrays und SSDs gelten. Während ein Raid-Streifen wahrscheinlich viel größer ist als ein einzelner Dateisystem-Cluster, können einige Dateisysteme Regionen oder Ähnliches aufweisen, die nach Potenz zweier Grenzen ausgerichtet sind.

Derzeit ist es üblich, Paritionen an 1-MB-Grenzen auszurichten, was hoch genug ist, um ein Vielfaches aller gängigen Blockgrößen zu ergeben.



0

Keine Ahnung, ob dies hilfreich ist, aber ich habe verstanden, dass die Partitionsausrichtung erfolgt, wenn Sie eine bestimmte Partition mit einer zugrunde liegenden RAID-Stripe-Einheit ausrichten.

Anscheinend kann die Leistung sinken, wenn Sie ein hardwarebasiertes RAID oder ein softwarebasiertes verwenden. Probleme können auftreten, wenn der Startort der Partition nicht an einer Stripe-Unit-Grenze in der Festplattenpartition ausgerichtet ist, die auf dem RAID erstellt wurde.

Abhängig vom Faktor für die Erstellung von Volumenclustern kann ein Volumencluster über einer Streifeneinheitsgrenze anstatt neben der Streifeneinheitsgrenze erstellt werden. Dieses Verhalten kann zu einer falsch ausgerichteten Partition führen.

Ich kann weit weg sein und das könnte nichts mit RAID zu tun haben;)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.