Huch! Einer will mein Geschwurbel lesen und fragt nach mehr! Was ist los mit dir? Bist du als Kind einmal zu oft vom Wickeltisch gefallen?
Also gut. 4Kn. Da stelle mer uns ma janz dumm und frache: Watt is 4Kn?
Im Pleistozän des gemeinen Personal Computers, da haben Festplatten mit einer Sektorgröße von 512 Bytes gearbeitet. Ein Sektor ist, vereinfacht gesagt, die kleinste Einheit von Speicher, die man bei einem Datenträger direkt ansteuern kann. Ich kann also nicht das 4.711-te Byte einzeln auslesen, sondern ich muss den ganzen Sektor, der dieses Byte enthält, komplett anfordern und mir dann selber das eine Byte, das ich haben wollte, raussuchen. Damals waren die 512 Bytes eine sinnvolle Größe, denn da war halt alles noch kleiner. Die Platten und auch die Dateien.
Dann wurden die Platten (und auch die darauf gespeicherten Dateien) immer größer und größer und diese Sektorgröße von 512 Bytes wurde immer mehr zu einem Problem.
Für jeden Sektor muss ich Verwaltungsstrukturen vorhalten und die brauchen auch Platz. Beispielsweise liegen die Sektoren auf einer Platte nicht direkt hintereinander, sondern da gibt's eine kleine Lücke. Dann einen Bereich, in dem sich der Lese-/Schreibkopf synchronisieren kann, eine sogenannte Data Allocation Map (DAM) und zu guter Letzt noch einen Bereich mit Fehlerkorrekturdaten (ECC). Insgesamt werden für 512 Bytes an Nutzdaten also 577 Bytes an Platz verbraten. Das gibt eine Effizienz von 88,7%.
Vergrößert man die Sektoren, hat man weniger Verschnitt. An der Lücke und der DAM ändert sich nichts, ich brauche nur weniger davon (weil es nun ja auch weniger Sektoren sind). Und für die Fehlerkorrektur braucht man bei größeren Sektoren zwar auch mehr Platz, aber da die effizienter arbeitet, wenn sie mehr Daten unter ihrer Fuchtel hat, braucht sie nicht sooo viel mehr Platz. So hat ein 4k-Sektor zwar 8x mehr Nutzdaten als einer mit 512 Byte, aber der ECC-Bereich muss nur 2x so groß sein (100 statt 50 Bytes). Insgesamt belegt ein Sektor mit 4096 Bytes Nutzdaten (4K) also 4211 Bytes auf der Platte. Das ist eine Effizienz von 97,3%.
Ergo passen auf den gleichen Datenträger mehr Nutzdaten, wenn man 4K-Sektoren nimmt. Der Nachteil soll nicht verschwiegen werden, denn natürlich gilt das nur bei optimaler Belegung. Wenn ich viele kleine Dateien verwende, habe ich den Verschnitt dann eben bei den Nutzdaten statt bei den physischen Sektoren. Wie bereits gesagt ist der Sektor die kleinste adressierbare Speichereinheit. Hast du also eine Datei, die nur 1 KB groß ist, dann verbraucht die trotzdem einen kompletten Sektor auf der Platte. 3 KB sind also weg, ohne wirklich benutzt zu werden. Einer der Gründe, warum man halt ursprünglich eher kleine Sektoren hatte. Moderne Dateisysteme versuchen, das Problem zu mindern, indem sie kleine Dateien direkt in ihren eigenen Verwaltungsdaten speichern oder anderweitig zusammenfassen. Dann muss man keinen eigenen Datensektor dafür opfern.
Ok, also sind größere Sektoren besser als kleine. Aber warum ausgerechnet 4K? Warum nicht 2K oder 8K? Oder 128K? Naja, so ganz große Sektoren mit 128K hätten halt viel zu viel Verschnitt (s.o.) und die machen auch aus diversen anderen Gründen keinen Sinn. Aber 2K oder 8K wäre durchaus machbar gewesen. Allerdings arbeiten die meisten aktuellen Dateisysteme (NTFS, HFS+, ext4) auch mit 4K als "kleinste ansteuerbare Einheit". Auch der RAM arbeitet mit 4K (dort nennt man das die "Seitengröße"). Macht also insgesamt Sinn, bei den Platten auch 4K nehmen.
Als die Plattenhersteller dann anfingen, mit 4K großen Sektoren zu arbeiten, gab's ein Problem: Die damals aktuellen Betriebssysteme waren darauf nicht vorbereitet. Die gingen felsenfest davon aus, dass ein Festplattensektor gefälligst 512 Bytes groß zu sein hat. Windows 7 beispielsweise kann's gar nicht und selbst Windows 8.1 hatte anfangs Probleme, wenn bspw. die Intel-Storage-Treiber installiert waren. Also haben sich die Plattenhersteller einen Trick einfallen lassen: Die Platten arbeiten zwar intern mit 4K, erzählen nach außen hin (auf der SATA-Schnittstelle) aber fröhlich, ihre Blöcke wären 512 Byte groß. Und die Platte hat dann intern umgerechnet. Das nannte man 512e (e für emuliert). Das hat allerdings auch so seine Probleme, bspw. bei der Ausrichtung von Partitionsgrenzen. Wie ich bereits schrieb, arbeiten viele Dateisysteme auch mit 4K. Wenn ich nun mit 512e defacto einen "Achtel Sektor" ansteuern kann, dann ist es möglich, dass ein Dateisystemblock von 4K mitten in einem der 4K-Festplattensektoren anfängt und daher über diesen hinausreicht. Einen Dateisystemblock anzufordern, kann also zwei Lesevorgänge in der Platte auslösen. Was logischerweise auf deren Durchsatz schlägt. Moderne Systeme (IIRC ab Win7) richten die Partitionsgrenzen so aus, dass das nicht passieren kann. Aber WinXP bspw. macht das nicht und auch, wer manuell partitioniert und Sektoren fest vorgibt, kann sich damit immer noch selbst ins Knie schießen (die meisten aktuellen Partitionierungsprogramme warnen allerdings davor - falls nicht: man muss darauf achten, dass die Sektornummern durch 8 teilbar sind, dann haut's hin).
Und nun kommt 4Kn. Hier lügt die Platte nicht mehr, sondern arbeitet tatsächlich sowohl intern als auch nach außen auf der Schnittstelle mit 4K großen Sektoren. Bei modernen Boards und Betriebssystemen (Windows ab 10 und Linux sowieso schon seit ewigen Zeiten) sollte das inzwischen kein Problem mehr sein. Wer noch Altlasten hat, kann aber immer noch Probleme kriegen.
Originally Posted by
Petrus
- Braucht man, um in den Genuss des 4Kn Formats zu kommen, spezielle Platten dazu oder wird es softwaretechnisch möglich gemacht? Warum geht nicht beides?
In den meisten Fällen ist das spezifisch für die jeweilige Platte. Im Prinzip spricht nichts dagegen, dass die Platte zwischen den beiden Formaten umschalten könnte. Sie müsste halt ein Low-Level-Format machen, um die jeweils neuen Sektoren einzurichten, aber machbar ist das. Und ein paar (teure) Platten aus den Enterprise-Sparten können das auch. Die allermeisten mir bekannten sind allerdings fest auf einen Typ voreingestellt und das war's. Und wenn der Hersteller diese Funktion nicht einbauen will, kannst du auch nix dagegen machen.
Vermutlich denken die meisten Hersteller, dass es letztlich eine Funktion ist, die man normalerweise höchstens einmal braucht. Bei der ersten Inbetriebnahme. Da kann man auch gleich die Platte so vorkonfektioniert kaufen, wie man sie braucht. Spart Geld.
- Nicht mal in dem archlinux wiki Artikel steht etwas davon, dass man mit 4Kn bis zu 16TB nutzen kann mit MBR. Wie funktioniert das Ganze?
Naja, bei MBR sind die Felder für die Partitionsgrößen halt 32 Bit groß. Und die Einheit sind Sektoren. Ich kann also maximal 2^32 Sektoren ansteuern. Der Unterschied ist, dass die Sektoren verschieden groß sind und sich damit verschieden große Partitionen ergeben.
Bei 512 bzw. 512e sind es ein halbes KB pro Sektor, also 2^32 * 0,5 = 2.147.483.648 KB = 2 TB. Bei 4Kn sind die Felder immer noch die gleichen, aber nun ist jeder Sektor acht mal so groß, also können die Partitionen bis 2^32 * 4 = 17.179.869.184 KB = 16 TB gehen.
Bei anderen Grenzen passiert übrigens das gleiche. Eine FAT32-Partition muss z.B. mindestens 65.536 Sektoren groß sein. Bei 512 Byte ergibt das 32 MB als kleinste mögliche FAT32-Partition. Bei 4K dagegen kommt man auf 256 MB. Kleiner kriegt man die nicht.
- Was ist der Translation Layer in Bezug auf Platten und wie wirkt sich das Fehlen dieses Layers bei 4Kn Platten aus?
Ich nehme mal an, dass sich das auf die oben angesprochene Emulation (512e) bezieht. Und wenn der Layer fehlt (und auch nicht nachträglich eingeschaltet werden kann), dann ist das halt eine Platte, die nur 4Kn kann und sich nicht auf 512e umschalten lässt.
- Der Arch Artikel weist auf die Inkompatibilität mit alten Tools hin. Worauf bezieht sich das und warum funktioniert unter Umständen etwas nicht nur aufgrund der größeren Speichersektoren?
Das hängt immer davon ab, wie das konkret programmiert ist. Wenn ich bspw. als Programmierer davon ausgehe, dass ein Sektor immer 512 Bytes hat und der Benutzer wünscht sich eine Partitionsgröße von 1 TB, dann muss das Programm das natürlich in Sektoren umrechnen. Und dann rechnet es 1 TB = 1.073.741.824 Bytes / 512 Byte = 2.097.152 Sektoren. Die trägt es dann ein. War die Platte aber in Wahrheit 4Kn, hast du nun eine Partition, die nicht 1 TB, sondern 8 TB groß ist.
Um mal ein mögliches Beispiel zu nennen.
- Warum hat die IDEMA sich überhaupt die Mühe gemacht so einen Standard einzurichten? Was haben die davon? Haben wir etwas davon ausser mit MBR mehr als 2TB nutzen zu können?
Das habe ich wohl oben schon ausreichend erklärt.
- Ist error correction (ECC?) für den Normaluser überhaupt relevant?
Ja. Du wirst immer mal Lesefehler haben und ohne die ECC wäre Hopfen und Schmalz verloren.
In deinen Signaturlinks habe ich nach Erläuterungen zu systemd und Dateisystemen Ausschau gehalten, was vielleicht etwas zentralere Themen sind. Falls du dich dazu mal einlassen willst, werde ich sie definitiv aufmerksam lesen.
Zu SystemD habe ich hier kurz was geschrieben. Und hier was zu Dateisystemen (was sind Dateien, Verzeichnisse, Links, etc.) abgeseiert. Ich denke nicht immer daran, mir den Müll in die Sig zu packen.