Warum ist die Standardzuordnungsgröße von exFAT in Windows so hoch?

12

Verweis auf diese Seite: https://support.microsoft.com/en-us/kb/140365

NTFS überschreitet die Clustergröße von 4 KB erst, wenn das Volume 16 TB überschreitet, und FAT32 erreicht bei modernen Windows-Versionen ein Maximum von 16 KB im Volumenbereich von 16 GB bis 32 GB.

exFAT ist jedoch standardmäßig nur 4 KB im Volumenbereich von 7 MB bis 256 MB. Danach springt es auf 32 KB im Bereich von 256 MB bis 32 GB und 128 KB darüber hinaus.

Warum ist das so? Eine relativ hohe Clustergröße erscheint verschwenderisch, insbesondere in einem Format, das für kleinere externe Geräte wie Flash-Laufwerke entwickelt wurde. Wenn Sie den Flash-Speicher formatieren, ist dies doppelt so wichtig, da der Hauptvorteil einer größeren Clustergröße meines Wissens eine schnellere E / A aufgrund einer geringeren Fragmentierung und weniger zu lesenden Gesamtcluster ist. Korrigieren Sie mich, wenn ich falsch liege, aber der Flash-Speicher ist viel, viel weniger anfällig für durch Fragmentierung verursachte Verlangsamungen. Warum also die Clustergröße so hoch machen?

InsanityOnABun
quelle
"Größe" und "hoch" passen nicht zusammen. Zahlen können "hoch" sein. "Groß" ist das Wetterwort anstelle von "hoch".
Sägemehl
Mögliches Duplikat der Nachteile einer kleinen Zuordnungseinheit
Sägemehl
Ich wollte nur erwähnen, dass ich gerade ein 1-TB-Laufwerk mit der Standard-Clustergröße formatiert habe und Windows eine Clustergröße von 2048 KB verwendet hat !!! Dies trotzt nicht nur den Spezifikationen auf ihrer Seite, dies ist immer viel zu hoch
woojoo666
Für alle, die dies durch Googeln erreicht haben und möglicherweise jemals ein Git-Verzeichnis auf dem betreffenden Laufwerk / der betreffenden Karte sichern, ist es wichtig, auch die Nachteile großer Sektoren zu kennen: Jede ~ 200-Byte-Datei in einem Git-Verzeichnis belegt 1 vollständige Zuordnungseinheit. Große Sektoren können dazu führen, dass Entwicklerverzeichnisse (die mehr als 10.000 winzige Dateien enthalten können) ein großes Vielfaches ihrer normalen Festplattengrößen einnehmen. Ex: superuser.com/questions/704218/... superuser.com/questions/1370780/...
kcrumley

Antworten:

11

Da exFAT hauptsächlich für SD-Karten mit großer Kapazität verwendet wird und Sie auf SD-Karten einen Sektor löschen müssen, bevor Sie darauf schreiben können. Wenn Sie kleine Cluster auf einer Karte mit einer großen Löschsektorgröße verwenden, führt dies dazu, dass viele Lösch- und Schreibbefehle in denselben Sektor mehrere aufeinanderfolgende Cluster von Daten auf die Festplatte schreiben, was nicht nur die Leistung verringert, sondern auch den Flash vorzeitig abnutzt Zellen. Die Größe des Löschsektors ist im Allgemeinen nicht in Kartendatenblättern dokumentiert, befindet sich jedoch im CSD-Register der Karte. Der Inhalt dieses Registers variiert je nach internem Design von Karte zu Karte. Da SD-Karten im Allgemeinen in Kameras verwendet werden, in denen große Dateien gespeichert sind, ist der verschwendete Speicherplatz einer großen Clustergröße nicht wichtig.

Diese Webseite enthält den Inhalt dieses Registers für etwa ein Dutzend Karten:

http://goughlui.com/2014/01/03/project-read-collect-decode-sd-card-csd-register-data/

Wenn Sie den Inhalt in den folgenden Taschenrechner eingeben, sehen Sie für einige der 32/64-GB-Karten, dass die Größe des Löschsektors 128 Blöcke beträgt, wobei ein Block 512 Byte beträgt. Bei einer 2-GB-Karte beträgt die Größe des Löschsektors 32 Blöcke, wobei ein Block 1024 Byte beträgt.

http://goughlui.com/static/csdecode2.htm

Ob Windows intelligent genug ist, um das CSD-Register abzufragen und eine Clustergröße vorzuschlagen, oder ob es einfach anhand der Partitions- oder Festplattengröße erraten wird, ist unbekannt. Wenn Sie eine SD-Karte mit einem Mikrocontroller emulieren würden, könnten Sie es herausfinden.

Muh Fugen
quelle
1
Ich wusste nicht, dass Flash-Speicher gelöscht werden muss, bevor Sie darauf schreiben können. Das macht jetzt Sinn. Vielen Dank!
InsanityOnABun
1
Sie scheinen davon auszugehen, dass SD-Karten keine Flash-Übersetzungsschicht haben, dh dass benachbarte logische Sektoren in NAND immer physisch benachbart sind. Andernfalls müssten die logischen Sektoren in einem Cluster nicht zum selben Löschblock gehören. Welche Beweise müssen Sie für diese Annahme haben?
Sägemehl
In der Tat haben einige Hochleistungs-SD-Karten und Flash-Laufwerke eine Übersetzungsschicht und sind dennoch mit 32-KB-Clustern vorformatiert? Ich habe überprüft, dass 4-KB-Cluster die Leistung für zufällige
Schreib-