Freigeben über


Dateivorgänge mit geringem Zeitschoner

Um festzustellen, ob ein Dateisystem sparse Dateien unterstützt, rufen Sie die GetVolumeInformation-Funktion auf, und überprüfen Sie das FILE_SUPPORTS_SPARSE_FILES Bit-Flag, das über den lpFileSystemFlags Parameter zurückgegeben wird.

Die meisten Anwendungen sind nicht über sparse Dateien informiert und erstellen keine sparsamen Dateien. Die Tatsache, dass eine Anwendung eine geringe Datei liest, ist für die Anwendung transparent. Eine Anwendung, die sparse-dateien kennt, sollte bestimmen, ob ihre Datenmenge geeignet ist, in einer sparse-Datei gespeichert zu werden. Nach dieser Bestimmung muss die Anwendung eine Datei mithilfe des FSCTL_SET_SPARSE-Steuerelementcodes explizit als sparsam deklarieren.

Nachdem eine Anwendung eine Datei auf "sparse" festgelegt hat, kann die Anwendung den FSCTL_SET_ZERO_DATA Steuerelementcode verwenden, um einen Bereich der Datei auf Null festzulegen. Darüber hinaus kann die Anwendung den FSCTL_QUERY_ALLOCATED_RANGES Steuerelementcode verwenden, um Suchvorgänge nach Nichtzerodaten in der sparse-Datei zu beschleunigen.

Wenn Sie einen Schreibvorgang (mit einer Funktion oder einem anderen Vorgang als FSCTL_SET_ZERO_DATA) ausführen, dessen Daten aus nichts als Nullen bestehen, werden Nullen für die gesamte Länge des Schreibvorgangs auf den Datenträger geschrieben. Verwenden Sie FSCTL_SET_ZERO_DATA, um einen Bereich der Datei auf null zu setzen und sparsam zu halten.

Eine sparsame Anwendung kann auch eine vorhandene Datei als sparsam festlegen. Wenn eine Anwendung eine vorhandene Datei auf "sparse" festlegt, sollte sie die Datei nach Regionen scannen, die Nullen enthalten, und FSCTL_SET_ZERO_DATA verwenden, um diese Regionen zurückzusetzen, wodurch möglicherweise ein Physischer Datenträgerspeicher zugeordnet wird. Eine Anwendung, die auf einen geringen Dateibewusstsein aktualisiert wurde, sollte diese Konvertierung ausführen.

Wenn Sie einen Lesevorgang aus einem Null-Out-Teil einer sparse-Datei ausführen, liest das Betriebssystem möglicherweise nicht von der Festplatte aus. Stattdessen erkennt das System, dass der zu lesende Teil der zu lesenden Datei Nullen enthält und einen Puffer voller Nullen zurückgibt, ohne tatsächlich vom Datenträger zu lesen.

Wie bei jeder anderen Datei kann das System Daten an eine beliebige Position in einer spärlichen Datei schreiben oder aus dieser lesen. Nichtzero-Daten, die in einen zuvor nulligen Teil der Datei geschrieben werden, können zu einer Zuweisung von Speicherplatz führen. Nullen, die über Nichtzerodaten geschrieben werden (nur mit FSCTL_SET_ZERO_DATA), können zu einer Verlagerung von Speicherplatz führen.

Anmerkung

Es liegt an der Anwendung, sparsam zu bleiben, indem Nullen mit FSCTL_SET_ZERO_DATAgeschrieben werden.

 

Defragmentierungstools, die komprimierte Dateien auf NTFS-Dateisystemen verarbeiten, verarbeiten sparsame Dateien auf NTFS-Dateisystemvolumes ordnungsgemäß. Große und stark fragmentierte Sparsedateien können die NTFS-Beschränkung auf Datenträgerausdehnungen überschreiten, bevor verfügbarer Speicherplatz verwendet wird.