Zitat von Astronuss
Wenn dies nicht der Fall ist, wähle ich besonders bei größeren CF FAT32, da es mit dem vorhandenen Speicherplatz etwas sparsamer umgeht. Die Quantisierung der Datenmengen ist etwas besser. Bei 2GB solltest du auf jeden Fall FAT32 benutzen.
Ein Beispiel für nicht Techniker:
Du hast 200Euro stellvertretend für 2GB Speicherplatz.
Wenn du Platz für Bilder Kaufst, bekommst Du von der Speicherkarte kein Restgeld zurück.
Im FAT16-Format hast Du die 200Euro in 2Euro Münzen. (100 x 2Euro)
Im FAT32-Format hast Du die 200Euro in 20Cents. (1000 x 20Cents)
Wenn Du nun für Dein Bild Speicherplatz für z.B. 2,38Euro kaufen musst, sparst Du, wenn Du FAT32 benutzt. Es kommt hier also auf die Stückelung an.
Ich hoffe das Beispiel konnte dir den Unterschied zwischen FAT16 und FAT32 zeigen. Einen Geschwindigkeitsunterschied wirst Du natürlich nicht erfahren.
Hallo Astronuss.
Es ist schon ein wenig frustrierend für mich, wenn ich lang und breit versuche,
die Zusammenhänge der die Geometrie bestimmenden Größen verschiedener
FAT-Dateisysteme mehr oder weniger allgemeinverständlich darzustellen,
und dann jemand das exakte Gegenteil von dem empfiehlt, was ich "hergeleitet"
habe... :-( Hast Du denn den oben zitierten Thread:
http://www.mi-fo.de/forum/viewtopic.php?t=5986
nicht gelesen?!? Bitte versteh' mich nicht falsch, wenn Du dazu Fragen hast,
beantworte ich die gerne, aber wenn Du die Sache noch nicht verinnerlicht hast
(verlangt niemand), solltest Du vielleicht besser nicht solch knackige Aussagen
treffen, die eben leider faktisch falsch sind und andere damit nur in die falsche
Richtung leiten. Wir wollen hier doch aufklären, statt Verwirrung zu stiften, oder?
Nochmal meine Kernaussage:
Auf Medien kleiner oder gleich 2 GB sollte man für den Anwendungsfall "Fotografie"
wann immer möglich FAT16 benutzen, da FAT32 hier nur Nachteile hat. Erst auf
Medien, die größer als 2 GB sind, muß man zwangsläufig auf FAT32 ausweichen,
da dies die Grenze von FAT16 übersteigt. (Eigentlich liegt die Grenze bei 4 GB,
aber ältere Betriebssysteme kommen nicht mit FAT16-Medien klar, die größer als
2 GB sind, insofern sollte man in diesem Bereich besser darauf verzichten.)
Warum?
Der signifikante Unterschied zwischen einem FAT16- und einem FAT32-Laufwerk
besteht in der Anzahl der allozierbaren Einheiten (Cluster). Bei einem FAT16-
Laufwerk sind das ca. 2^16 Zuordnungseinheiten, bei einem FAT32-Laufwerk
ca. 2^28 - eine um Größenordnungen größere Zahl. (Bei FAT32B sogar 2^32,
aber das gibt's nur bei DR-DOS.) In der Praxis sind die Zahlen noch etwas
kleiner, da bestimmte Bitmuster und bestimmte Cluster-Nummern für interne
Zwecke reserviert sind (das betrifft die Cluster 0 und 1, sowie Cluster am
oberen Ende des jeweiligen Bereichs). Fällt aber nicht ins Gewicht.
Die File Allocation Table (FAT), eine große Datenstruktur recht nah am Anfang
eines FAT-formatierten Mediums, enthält nun für jeden Cluster einen Eintrag.
Um 2^16 Cluster zu adressieren braucht man 16 Bit, also 2 Byte pro Eintrag.
2^28 passen bei einer Byte-Granularität von 8 Bit nur in 32 Bits, also 4 Bytes
pro Eintrag. Daraus ergibt sich, daß die maximale Größe der FAT bei einem
FAT16-Laufwerk 128 KB groß wird, bei einem FAT32-Laufwerk jedoch bis zu
1 GB (bei FAT32B sogar 16 GB)! Wohlgemerkt, es handelt sich bei der FAT
um eine semi-statische Verwaltungsstruktur. Ob Du jetzt keine, eine, oder
die je nach Größe unterschiedlich hohe Maximalzahl von Dateien auf dem
Medium speicherst, die FAT bleibt nach der Formatierung immer gleich groß.
Natürlich ist die FAT bei einem nur 2 GB großen FAT32-Medium noch nicht /so/
unglaublich riesig, aber je nach konkret gewählter Clustergröße immerhin
schon um Größenordnungen ausnehmender als die geradezu winzigen 128 KB
(der maximalen Größe der FAT bei FAT16). Das hat zwei Effekte:
Erstens steht der Speicherplatz, der durch die FAT belegt ist, nicht mehr für
Daten zur Verfügung. Auf ein 2 GB-FAT32-Laufwerk passen also weniger
Nutzdaten als auf ein 2 GB-FAT16-Laufwerk! (Um diesen Effekt zu relativieren,
braucht man schon ziemlich pathologische Fälle - mehr dazu siehe unten.)
Zweitens wird diese zentrale Datenstruktur ja auch bei jedem Dateizugriff
gelesen oder geschrieben. Damit man nicht ständig auf weit voneinander
entfernte Orte des Mediums zugreifen muß, wird die FAT vom Betriebsystem
in der Regel 'gecacht', d.h. im Arbeitsspeicher vorgehalten und nur bei Bedarf
auf dem Medium aktualisiert (als Hintergrundprozess) bzw. bei Speicher-
engpässen 'geflusht' (Änderungen ausgeschrieben). 128 KB im Speicher zu
halten sind selbst für ein Betriebssystem wie DOS kein Problem, im Extremfall
bis zu 1 GB nur für die FAT im Speicher zu halten ist hingegen illusorisch -
selbst für ein Desktop-System wie Windows. Also werden bei FAT32 nur Teile
der FAT im Arbeitsspeicher gepuffert werden können, bei einem System mit
begrenzten Ressourcen wie einem Kamerabetriebssystem dürfte sich der
FAT-Cache auf wenige 100 KB beschränken (im Vergleich zu einigen Megabyte
bei Windows) schließlich braucht die Kamera ihren Hauptspeicher für Bilder!
Das bedeutet, daß jeder Medienzugriff auf einem FAT32-Laufwerk umfang-
reiche Leseaktionen an weit voneinander entfernten Stellen des Mediums
anstößt. Da die geforderten Bereiche nicht hintereinanderliegen, kann
man auch nicht mit Blockadressiermechanismen längere Sequenzen in
einem Rutsch in den Speicher befördern (Burst), sondern muß sich Stück
für Stück vorarbeiten.
Zwar treten auf einer CF-Karte keine zeitraubenden Kopfbewegungen wie
bei einer Festplatte mehr auf, aber dafür gibt es andere Faktoren, die einen
solchen Zugriff überproportional verlangsamen. Z.B. sind Flash-Medien intern
in Pages organisiert, die nur komplett gelesen oder geschrieben werden können -
auch wenn Du nur ein einziges Byte brauchst. Diese Pages sind deutlich größer
(üblich 2 KB) als die Sektoren einer Festplatte (üblicherweise 512 Bytes), das
kostet also Zeit, inbesonderen wenn man viele kleine weitverteilte Bereiche
lesen oder schreiben muß.
Hinzu kommt noch, daß Flash-Medien nur eine begrenzte Anzahl Schreibzugriffe
erlauben. Früher hat man deshalb spezielle Abwandlungen des FAT-Dateisystems
für Flash-Speichermedien benutzt (z.B. FFS), bei CF ist das jedoch transparent
in der "Hardware" gekapselt - nichtsdestotrotz verteilt die Firmware der CF-Karte
selbst logisch relativ dicht beieinanderliegende Zugriffe möglichst gleichmäßig
über die Chipfläche, so daß die Ausbildung von weak spots möglichst lange
hinausgezögert wird. Das kostet alles Zeit - und eben bei FAT32 deutlich mehr
als bei FAT16.
Und zu allem Überfluß gibt es noch den sog. cluster overhang, also den Verschnitt,
der sich ergibt, wenn Du eine beliebig große Datei in Zuordnungseinheiten
aufstückeln mußt - denn auf dem Medium können nur Zuordnungsheiten
gespeichert werden. Eine 1 Byte große Datei kostet eine Zuordnungseinheit,
genauso wie eine Datei, die exakt so groß ist, wie die Zuordnungseinheit.
Ist die Datei größer, wiederholt sich das Ganze - in der letzten Zuordnungs-
einheit der Kette gibt es Verschnitt. Je kleiner die Zuordungseinheiten, desto
weniger Verschnitt (Vorteil für FAT32: Da es mehr Zuordnungseinheiten gibt,
können diese auch kleiner sein). Aber das Ganze relativiert sich, wenn die
Dateien, die Du speichern willst, groß gegenüber der Größe der Zuordnungs-
einheit sind. Denn alle Zuordnungseinheiten außer der jeweils letzten sind
vollbelegt, also fällt dort auch kein Verschnitt an. Und wenn der Prozentsatz
der gefüllten Cluster gegenüber den nur halbgefüllten Clustern groß wird, ist
der Verlust in der Praxis nicht mehr relevant. Die Cluster werden maximal
64 KB groß (in der Regel eher 32 KB und kleiner, und bei FAT32 tendenziell
kleiner als bei FAT16). Wenn Du lauter 1 Byte große Dateien speicherst, und
jedesmal 64 KB opfern mußt, dann tut das natürlich weh. Aber wenn Du 1 MB
große Dateien speicherst, dann gibt es insgesamt nur einige hundert Clusterketten,
bis das Medium voll ist. Und wenn ein paar hundert Mal ein paar KB wegfallen,
kann man das bezogen auf die Größe des Mediums guten Gewissens
vernachlässigen - insbesondere, wenn der Unterschied in der Größe der
Cluster zwischen FAT32 und FAT16 im Bereich bis 2 GB nur wenige KB beträgt.
Bilddateien sind - bezogen auf die Clustergröße - geradezu riesig, insofern fällt
der etwas höhere Verschnitt bei FAT16 hier nicht signifikant ins Gewicht, erst
recht nicht gegenüber dem Verlust durch die sehr viel größere FAT, die ein
FAT32 Laufwerks bedingt.
Um die Fehler in Deinem Beispielbild aufzuzeigen:
Wenn Du erstmal 100 Euro "Pfand" ausgeben mußt (für FAT32), damit Du mit
20 Cent Münzen zahlen darfst, relativiert sich der Vorteil der kleineren Stückelung
der kleinen Münzen gegenüber 2 Euro-Münzen ganz schnell. Faktisch lohnt sich
das Ganze nur dann, wenn Du extrem viele kleine Beträge zahlen möchtest -
da machst Du dann jedensmal maximal 19 Cent Verlust (bei Gleichverteilung im
Mittel 10 Cent), gegenüber maximal 1,99 Euro sonst (bei Gleichverteilung im
Mittel 1 Euro). Aber dafür dauert es auch länger, die ganzen 20 Cent Münzen
zusammenzusuchen. Und wenn Du sowieso nur wenige große Beträge zahlst,
kannst Du die paar Mal auch den höheren Verlust verschmerzen. Das ist immer
noch billiger, als erstmal 100 Euro Pfand auszugeben. (Und wenn Du die 100 Euro
Einsatz evtl. noch gar nicht hast, kommst Du nie in den Genuß, mit kleinerer
Stückelung etwas zu sparen - ganz wie im realen Leben. ;-)
Es hängt also immer von den zu speichernden Daten, also dem Anwendungsfall ab,
welches Dateisystem effizienter ist. Auf einem Desktop-System kann FAT32 Sinn
machen (muß es aber auch nicht immer), auf einem älteren System, auf einem
Embedded System mit begrenzten Ressourcen, oder auf einem System, das
praktisch nur sehr große Dateien verarbeiten muß, macht es keinen Sinn, solange
die Daten nicht die grundsätzliche Kapazitätsgrenze von 2 GB sprengen.
Viele Grüße,
Matthias