Unterstützt Windows (oder NTFS) Platzhalterdateien mit falschen Größen?

Unterstützt Windows (oder NTFS) Platzhalterdateien mit falschen Größen?

Jedes Mal, wenn ich Photoshop starte, wird sofort eine temporäre Datei mit 2 GB auf der Festplatte erstellt, auf der sich der Cache befindet. Es handelt sich um ein Plattenlaufwerk, und ich höre keine der Festplattengeräusche, die normalerweise mit dem Schreiben von 2 GB Daten verbunden sind. Ist es möglich, eine leere Platzhalterdatei mit einer „falschen“ Größe zu erstellen, um Speicherplatz zu reservieren, falls später tatsächlich einige Daten zwischengespeichert werden müssen?

Antwort1

Dies kann auf einem NTFS-Volume auf zwei verschiedene Arten erreicht werden.

DerSetEndOfFileFunktion, auf NTFS-Dateisystemen, reserviert den Speicherplatz für die Datei, füllt diesen aber nicht mit irgendetwas. Es kann hier zu einer geringen Festplattenaktivität kommen, da die NTFS-Buchhaltung aktualisiert wird. Wenn ein Programm irgendetwas mit einer Datei nach dem letzten zuvor geschriebenen Byte macht, überschreibt NTFS den Bereich zwischen dem letzten geschriebenen (letzten "gültigen") Byte und dem angeforderten Byte (umSicherheitsprobleme) und aktualisiert den gültigen Datenzeiger.

Dann gibt esSparse-Dateien. Anders als normale Dateien mit der Erweiterung SetEndOfFile, merkt sich NTFS, welche Sektoren tatsächlich Daten enthalten und nicht nur, welches Byte das letzte mit gültigen Daten ist. Lange Folgen von Nullen, in denen nichts geschrieben wurde, werden nicht auf der physischen Festplatte gespeichert.

Sie können prüfen, ob eine Datei spärlich ist, fsutil sparse queryflagindem Sie den Pfad zur Datei eingeben. Wenn die Datei nicht spärlich ist, verwendet das Programm den ersten Ansatz.

Weiterführende Literatur:Warum dauert mein Einzelbyte-Schreibvorgang ewig?

Antwort2

Ja, dies wird als „Sparse-Datei“ bezeichnet.

NTFS und ReFS unterstützen es, FAT32 und ExFAT jedoch nicht.

Ein Programm kann dem Betriebssystem explizit mitteilen, welche Bytebereiche einer Datei auf der Festplatte Platz haben sollen (standardmäßig ist das alles). Die anderen, nicht zugeordneten Teile werden so behandelt, als ob sie nur eine Menge Bytes mit dem Wert 0 enthalten würden, wenn sie vom Programm gelesen werden.

Im Dialogfeld „Dateieigenschaften“ sehen Sie eine „normale“ Dateigröße, also die „falsche“ Größe, und eine Größe, die angibt, wie viel von der Festplatte genutzt wird, also den zugewiesenen Teil (plus einige Bytes, um volle Festplattenblöcke zu erhalten).

Siehe auchhttps://en.wikipedia.org/wiki/Sparse_file

Antwort3

Das eingebaute Werkzeugfsutilkann mit schnell eine nicht-sparse Datei voller Nullen erstellen fsutil file createNew <filename> <bytes>. Sie nimmt zwar Speicherplatz auf der Festplatte ein, aber in die Nullblöcke muss nicht geschrieben werden (vorausgesetzt, Sie verwenden NTFS oder ein ähnliches System).

Hier ist ein Beispiel für die Erstellung einer 10 GB großen Datei. Der freie Speicherplatz auf der Festplatte verringert sich um 10 GB, aber die Aktion sollte sehr schnell erfolgen.

C:\>fsutil file createNew dummy 10737418240
File C:\dummy is created

C:\>fsutil sparse queryFlag dummy
This file is NOT set as sparse

verwandte Informationen