Frage von offeltoffel, 7

Windows: Größe auf Datenträger?

Hi zusammen,

ich habe mithilfe von Fortran einige Arrays als Binär-Datei abgespeichert (bestehend aus Integer, 16bit). Die Größe der Datei entspricht dem, was ich mir ausgerechnet hatte: 4202 Bytes (4.10KB). Unter "Größe auf Datenträger" zeigt mir Windows 8192 Bytes (8.00KB) an.

Mir ist klar, dass auch kleine Dateien in Blöcken auf den Datenträger geschrieben werden und somit oft mehr Platz einnehmen, als sie eigentlich müssten (schätze, das erhöht auch die Lese-Geschwindigkeit?). Jetzt wollte ich gerne zwei Dinge wissen:

1.) Ist davon auszugehen, dass bei einer neu gekauften, externen Platte die "Größe auf Datenträger" identisch ist?

2.) Brauchen die Dateien dann auch tatsächlich den ganzen Speicher, also ist die Platte voll, wenn ich die x * 8,00KB aufgebraucht sind?

Ich weiß, wir reden hier von wirklich kleinen Dateien. Aber ich mache eben PC-Simulationen und speichere Millionen solcher Dateien ab. Da entscheidet die Angabe von "Größe" und "Größe auf Datenträger" um Faktor zwei der Anzahl an Läufe, die ich starten kann!

Antwort
von DerOnkelJ, 4

Dass die Daten blockweise geschrieben werden hat nichts mit der Geschwindigkeit zu tun sondern mit der Organisation.

Ein Block auf der Festplatte kann immer nur zu genau einer Datei gehören, ansonsten müsste man in den ganzen Verwaltungsinformationen noch zusätzlich angeben, wo im Block eine Datei anfängt und aufhört. Dann würden diese Informationen die eigentlichen Nutzinformationen weit überschreiten.

Wenn eine Platte jetzt mal theoretisch 1000 Blöcke hat mit je 512 Byte, und du beschreibst diese Platte mit 1000 Dateien die jeweils 1 Byte groß sind, dann gilt die Platte als voll, da alle Blöcke belegt sind.

Kommentar von offeltoffel ,

Mal blöd gefragt: warum wähle ich die Blockgröße dann nicht super super klein, wenn es sich eh nicht auf die Geschwindigkeit ausübt? Mach ich Cluster mit 256 Bytes statt 4KB, dann verschwende ich weniger Platz.

Kommentar von DerOnkelJ ,

Weil dann wieder mehr Verwaltungsaufwand betrieben werden muss.
Jeder Block einer Festplatte hat eine eindeutige Nummer. Und bei aktuellen Festplatten von 10TByte sind das schon etliche Nummern, die natürlich auch irgendwo untergebracht werden müssen.
Wenn eine Datei geschrieben wird steht in dem Datenblock auch die Nummer des folgenden Datenblocks. Das nimmt natürlich auch etwas Platz weg.

Mit Blöcken von 4k oder 8k geht man einen Kompromiss ein. Die Dateien werden ohnehin immer größer, die Zeiten dass eine Datei nur wenige Byte oder KByte sind lange vorbei.

Kommentar von offeltoffel ,

Ok, sinnvoll...aber für mich eben nicht vorteilhaft...dann werde ich das beim Formatieren einfach ändern.

Antwort
von LeonardM, 4

Du hast vermutlich blockgrössen von 4KB. in deinem beispiel oben sind 2 blöcke als belegt markiert (8KB) obwohln nicht komplett belegt. Ändern kannst du das in dem du die blockgrösse der partition änderst mit der folge das es mehr blöcke geben wird und die mft demzufolge theoretisch grösser und länger wird

Kommentar von offeltoffel ,

Was ist denn eine MFT?

Kommentar von LeonardM ,

master file table

Antwort
von qugart, 4

Es kommt drauf an, wie groß die Festplatte ist und wie sie formatiert wird.

Es wird halt immer der letzte Cluster auch voll gemacht.

https://support.microsoft.com/de-de/kb/140365

Kommentar von offeltoffel ,

Danke für den Link!

Ich werde mir für die Simulation eine eigene Festplatte mit 1TB zulegen. Die ist dann vermutlich auch NUR dafür gemacht. Wenn alle meine Dateien nun 4,10KB haben, wären Cluster mit 4KB ja das Blödste, was ich wählen könnte. Weißt du, ob es ratsam ist, die größe auf 4,11KB zu setzen, oder sollten das schon irgendwie gerade Zahlen sein? Oder mache ich die Cluster auf 1KB und opfere 0.9KB am Ende jeder Datei?

Kommentar von qugart ,

Du änderst an den Cluster gar nichts und lässt das alles vom Betriebssystem machen.

Kommentar von offeltoffel ,

In deinem Link steht, dass man bei der Formatierung der Platte die Cluster-Größe angeben kann. Wenn das nicht geschieht, nimmt Windows den Standardwert (4KB)...

Kommentar von qugart ,

Ja und das ist in 99,9% (wie auch in deinem) aller Fälle richtig.

Kommentar von offeltoffel ,

Jo, aber es ist für mich nicht praktikabel. Dann ändere ich das einfach so, dass es für mich passt, solange die Platte noch neu und unbeschrieben ist, oder?

Kommentar von qugart ,

Wieso sollte das für dich nicht praktikabel sein?

Je größer die Clustergröße, desto größer der Speicherverlust.

Beispiel: wenn du deine 4,1kb-Dateien auf 4kb-Cluster speicherst, dann belegst du 8kb Speicher. Erhöhst du die Clustergröße auf 64kb, dann belegt eine Datei zwar nur einen Cluster, der belegt aber 64kb Speicher.

ABER: Je kleiner die Clustergröße, desto geringer die Geschwindigkeit.

Das liegt daran, dass eben der Aufwand bei Dateibewegungen steigt, da jeder Cluster angesprochen werden muss. Schimpft sich dann auch als "Overhead".

Ich verstehe eigentlich noch immer nicht, was du mit der Clusteränderung bezwecken willst.

Antwort
von hanfmannlein, 4

Zusätzlich zu den hier schon von anderen beschriebenen Clustern, können auch Metadaten noch eine Rolle spielen.

Keine passende Antwort gefunden?

Fragen Sie die Community