Freigeben über


Block-Clone-Vorgänge auf ReFS

Gilt für: Windows Server 2022, Windows Server 2019, Windows Server 2016

Block-Clone-Vorgänge weisen das Dateisystem an, den Bytewert von Dateien im Namen einer Anwendung zu kopieren, bei der die Zieldatei entweder der Ausgangsdatei gleicht oder nicht. Herkömmliche Kopiervorgänge sind leider teuer, da sie teure Lese- und Schreibvorgänge in die zugrunde liegenden physischen Daten auslösen.

Block-Clone-Vorgänge auf ReFS führen jedoch Kopien als kostengünstige Metadatenvorgänge aus, anstatt Lese- und Schreibvorgänge auf Dateidaten durchzuführen. ReFS ermöglicht mehreren Dateien, die gleichen logischen Cluster (physische Speicherorte auf einem Datenträger) zu teilen, wodurch Kopiervorgänge nur einer Region der Datei auf einem separaten physischen Speicherort zugeordnet werden müssen und der teure, physische Vorgang zu einem schnellen logischen Vorgang konvertiert wird. Dadurch werden Kopien schneller erstellt und es wird weniger E/A im zugrunde liegenden Speicher generiert. Diese Verbesserung profitiert auch von Virtualisierungsworkloads, da .vhdx Prüfpunktzusammenführungsvorgänge bei Verwendung von Blockklonvorgängen erheblich beschleunigt werden. Da mehrere Dateien die gleichen logischen Cluster teilen können, werden identische Daten physisch nicht mehrmals gespeichert, was die Speicherkapazität verbessert.

Funktionsweise

Block-Clone-Vorgänge auf ReFS konvertieren eine Dateidatenoperation in einen Metadatenvorgang. Um diese Optimierung vorzunehmen, führt ReFS Referenzzähler in die Metadaten für die kopierten Regionen ein. Diese Referenzzähler zeichnen die Anzahl der eindeutigen Dateiregionen auf, die die gleichen physischen Regionen aufweisen. Dadurch können mehrere Dateien die gleichen physischen Daten gemeinsam nutzen:

Das Anzeigen der Referenzzähler wird aktualisiert, wenn mehrere Dateien auf die gleiche Region verweisen

Durch das Beibehalten der Referenzzähler für jeden logischen Cluster behält ReFS die Isolation zwischen Dateien bei: Schreibvorgänge auf freigegebene Regionen lösen einen Zuordnungsmechanismus der Schreibvorgänge aus, wobei ReFS dem eingehenden Schreibvorgang eine neue Region zuordnet. Dieser Mechanismus bewahrt die Integrität der freigegebenen logischen Cluster.

Beispiel

Angenommen, es gibt zwei Dateien: X und Y, wobei jede Datei aus drei Bereichen besteht und jede Region auf getrennte logische Cluster verweist.

Zwei Dateien, die jeweils drei unterschiedliche Regionen aufweisen, die alle auf Regionen mit der Referenzzahl 1 hinweisen.

Angenommen eine Anwendung erteilt einen Block-Clone-Vorgang von Datei X für Datei Y, bei dem die Regionen A und B auf den Versatz von Bereich E kopiert werden. Dies würde folgenden Dateisystemstatus ergeben:

Referenzzähler zeigt für die blockierte geklonte Regionen „2” an

Dieser Dateisystemstatus zeigt eine erfolgreiche Duplizierung der Block-Clone-Region an. Da ReFS diesen Kopiervorgang nur beim Update von VCN- auf LCN-Zuordnungen durchführt, werden keine physischen Daten gelesen und die physischen Daten in der Datei Y werden nicht überschrieben. Datei X und Datei Y teilen jetzt logische Cluster, was durch die Referenzzähler in der Tabelle dargestellt wird. Da keine Daten physisch kopiert wurde, reduziert ReFS den Kapazitätsverbrauch auf dem Volume.

Angenommen, die Anwendung versucht, den Bereich A in Datei X zu überschreiben. ReFS dupliziert den freigegebenen Bereich, aktualisiert die Verweisanzahl entsprechend und führt den eingehenden Schreibvorgang in den neu duplizierten Bereich aus. Dadurch wird sichergestellt, dass die Isolation zwischen den Dateien beibehalten wird.

Die Isolation wird durch das Schreiben auf die neue Region G und das Aktualisieren der Referenzzähler beibehalten

Nach dem Ändern des Schreibvorgangs wird Region B weiterhin von beide Dateien verwendet. Wenn Region A größer als ein Cluster war, wäre nur der geänderte Cluster dupliziert worden, und der verbleibende Teil wäre freigegeben geblieben.

Einschränkungen der Funktion und Hinweise

  • Die Quell- und Zielregion muss an einer Cluster-Begrenzung beginnen und enden.
  • Der geklonte Bereich muss kleiner als 4 GB lang sein.
  • Die maximale Anzahl von Dateiregionen, die derselben physischen Region zugeordnet werden können, lautet 8175.
  • Die Zielregion darf nicht über das Ende der Datei erweitert werden. Falls die Anwendung das Ziel mit geklonten Daten erweitern möchte, müssen sie zuerst SetEndOfFile aufrufen.
  • Wenn sich die Quell- und Zielregionen in derselben Datei befinden, dürfen diese nicht überlappen. (Die Anwendung kann möglicherweise durch Aufteilen des Block-Clone-Vorgangs in mehrere Block-Clone-Vorgänge ausgeführt werden, wenn diese nicht überlappen).
  • Die Quell- und Zieldateien müssen sich auf demselben Volume ReFS befinden.
  • Die Quell- und Zieldateien müssen die gleichen Integrity Streams-Einstellungen aufweisen.
  • Hat die Quelldatei eine geringe Datendichte, muss die Zieldatei ebenfalls eine geringe Datendichte aufweisen.
  • Der Block-Klonvorgang bricht freigegebene opportunistische Sperren (auch bekannt als Opportunistische Sperren der Ebene 2).
  • Das ReFS-Volume muss mit Windows Server 2016 formatiert worden sein und wenn Failoverclustering verwendet wird muss die Clustering-Funktionsebene Windows Server 2016 oder höher zum Zeitpunkt der Formatierung verwendet haben.
  • Ab dem Windows 11 Moment 5-Update (KB5034848) und späteren Versionen von Windows-Client- und Windows Server-Builds tritt das Klonen in unterstützten Windows-Kopiervorgängen nativ auf.

Weitere Informationen