Hallo zusammen,
habe mich heute ein wenig tiefer mit dem physischen Aufbau von HDDs und deren Partitionierung beschäftigt. Dabei bin ich an zahlreichen Stellen auf verschiedene Hinweise betreffend der Performance gestoßen, die ich mir nicht ganz erklären kann. Würde mich freuen wenn mich jemand aufklärt.
Zum einen wurde häufig darauf hingewiesen, dass man Partitionen doch auf Zylinder auf- bzw. abrunden solle, da dies der Performance zuträglich sei. Auch GParted bietet das per Auswahlbox an - und die Option ist standardmäßig sogar angewählt. Ich kann mir dabei aber beim besten Willen nicht den physikalischen Hintergrund dafür erklären. Sollen bei einer Festplatte mit 8 Köpfen (= 4 Scheiben) und 4K-Sektorgröße beispielsweise die ersten 32 kByte einer Partition gelesen werden, ist es natürlich vorteilhaft wenn alle Köpfe an der gleichen Position lesen können und nicht mehr wegen dem letzten Block eine Position (oder gar zusätzlich noch eine Spur weil man am Ende der Spur angekommen ist) weitergefahren werden muss. Dadurch dass die dem Kernel gemeldeten Zylinder aber nichts mit den physischen Zylindern zu tun haben, verliert sich dieser Vorteil doch - so ziemlich jeder HDD-Controller meldet dem Kernel er habe 255 Köpfe wodurch die dem Kernel bekannten Zylinder nichts mit den physischen Zylindern zu tun haben können. Kann es sein, dass das noch ein Relikt aus alten Zeiten ist, in denen dem Kernel nicht der Aufbau einer virtuellen Festplatte mit 255 Köpfen gemeldet wurde sondern der physische Aufbau?
Insbesondere im Zusammenhang mit den (jetzt ja nicht mehr so neuen) HDDs mit phyischer 4K-Sektorgröße wird häufig darauf hingewiesen, dass man beim Betrieb mit einer logischen Sektorgröße von 512B doch darauf achten solle, dass Partitionen an den Rändern eines physikalischen Sektors beginnen bzw. enden sollten. Grundsätzlich kann ich das nachvollziehen. Sollen bspw. die ersten 32 Kilobyte einer Partition gelesen werden, wird das deutlich: Die HDD liest nun die Daten von 64 logischen Blöcken á 512 Byte, da die physische Sektorgröße aber 4 kB beträgt, würde sie eigentlich 8 Blöcke á 4 kB lesen müssen. Wenn nun der Anfang der Partition nicht am Anfang des ersten physischen 4K-Sektors liegt, müssen dennoch die kompletten 4K des Sektors gelesen werden aber die nicht benötigten logischen Blöcke verworfen werden. Das was am Anfang entfernt wurde fehlt am Ende - es muss also noch ein physischer 4K-Sektor gelesen werden. Bei dem werden wieder entsprechend die nicht benötigten logischen Blöcke verworfen, wodurch letztlich 9 physische Sektoren á 4K gelesen und interpretiert werden müssen. Das kostet natürlich unbestreitbar Ressourcen. Aber wie viel? Das betrifft immerhin gerade mal die ersten und letzten 4 kB einer Partition, es ist nicht so als würden die am laufenden Band gelesen werden. Und selbst wenn, ich kann mir nicht vorstellen, dass das einen irgendwie nennenswerten Einfluss hat.
Grüße, Rudi