Freigeben über


Dateivorgänge mit geringer Dichte

Um zu bestimmen, ob ein Dateisystem Sparsedateien unterstützt, rufen Sie die GetVolumeInformation-Funktion auf, und untersuchen Sie das FILE_SUPPORTS_SPARSE_FILES Bitflag, das über den lpFileSystemFlags-Parameter zurückgegeben wird.

Die meisten Anwendungen kennen keine Sparsedateien und erstellen keine Sparsedateien. Die Tatsache, dass eine Anwendung eine Sparsedatei liest, ist für die Anwendung transparent. Eine Anwendung, die Sparsedateien kennt, sollte bestimmen, ob ihr Dataset geeignet ist, in einer Sparsedatei zu speichern. Nachdem diese Bestimmung vorgenommen wurde, muss die Anwendung eine Datei explizit als Sparse deklarieren, wobei der FSCTL_SET_SPARSE-Steuerelementcode verwendet wird.

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 Steuercode verwenden, um die Suche nach Daten ungleich null in der Sparsedatei zu beschleunigen.

Wenn Sie einen Schreibvorgang (mit einer anderen 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 die Geringe Dichte zu erhalten.

Eine Sparse-fähige Anwendung kann auch eine vorhandene Datei als Sparse festlegen. Wenn eine Anwendung eine vorhandene Datei als Sparse festlegt, sollte sie die Datei auf Regionen überprüfen, die Nullen enthalten, und FSCTL_SET_ZERO_DATA verwenden, um diese Regionen zurückzusetzen, wodurch möglicherweise die Zuordnung von physischem Datenträgerspeicher aufgehoben wird. Eine Anwendung, die auf die Erkennung von Sparsedateien aktualisiert wurde, sollte diese Konvertierung durchführen.

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

Wie bei jeder anderen Datei kann das System Daten an eine beliebige Position in einer Sparsedatei schreiben oder von ihnen lesen. Daten ungleich null, die in einen zuvor null gesetzten Teil der Datei geschrieben werden, können zu einer Zuweisung von Speicherplatz führen. Nullen, die über Daten ungleich 0 (nur mit FSCTL_SET_ZERO_DATA) geschrieben werden, können zu einer Freigabe des Speicherplatzes führen.

Hinweis

Die Anwendung muss die Sparse beibehalten, indem nullen mit FSCTL_SET_ZERO_DATA geschrieben werden.

 

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