Block-Clone-Vorgänge auf ReFSBlock cloning on ReFS

Gilt für: Windows Server 2019, Windows Server 2016, Windows Server (halbjährlicher Kanal)Applies to: Windows Server 2019, Windows Server 2016, Windows Server (Semi-Annual Channel)

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.Block cloning instructs the file system to copy a range of file bytes on behalf of an application, where the destination file may be the same as, or different from, the source file. Kopiervorgänge sind leider sehr kostspielig, da sie teure Lese- und Schreibvorgänge für die zugrunde liegenden, physischen Daten auslösen.Copy operations, unfortunately, are expensive, since they trigger expensive read and writes to the underlying, physical data.

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.Block cloning in ReFS, however, performs copies as a low-cost metadata operation rather than reading from and writing to file data. 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.Because ReFS enables multiple files to share the same logical clusters (physical locations on a volume), copy operations only need to remap a region of a file to a separate physical location, converting an expensive, physical operation to a quick, logical one. Dadurch werden Kopien schneller erstellt und es wird weniger E/A im zugrunde liegenden Speicher generiert.This allows copies to complete faster and generate less I/O to the underlying storage. Diese Verbesserung ist auch von Vorteil für Virtualisierungs-Workloads, da VHDX-Prüfpunkt-Mergevorgängen bei der Verwendung von Block-Clone-Vorgängen erheblich beschleunigt werden.This improvement also benefits virtualization workloads, as .vhdx checkpoint merge operations are dramatically accelerated when using block clone operations. Da mehrere Dateien die gleichen logischen Cluster teilen können, werden identische Daten physisch nicht mehrmals gespeichert, was die Speicherkapazität verbessert.Additionally, because multiple files can share the same logical clusters, identical data isn't physically stored multiple times, improving storage capacity.

FunktionsweiseHow it works

Block-Clone-Vorgänge auf ReFS konvertieren eine Dateidatenoperation in einen Metadatenvorgang.Block cloning on ReFS converts a file data operation into a metadata operation. Um diese Optimierung vorzunehmen, führt ReFS Referenzzähler in die Metadaten für die kopierten Regionen ein.In order to make this optimization, ReFS introduces reference counts into its metadata for copied regions. Diese Referenzzähler zeichnen die Anzahl der eindeutigen Dateiregionen auf, die die gleichen physischen Regionen aufweisen.This reference count records the number of distinct file regions that reference the same physical regions. Dadurch können mehrere Dateien die gleichen physischen Daten gemeinsam nutzen:This allows multiple files to share the same physical data:

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.By keeping a reference count for each logical cluster, ReFS doesn't break the isolation between files: writes to shared regions trigger an allocate-on-write mechanism, where ReFS allocates a new region for the incoming write. Dieser Mechanismus bewahrt die Integrität der freigegebenen logischen Cluster.This mechanism preserves the integrity of the shared logical clusters.

BeispielExample

Angenommen, es gibt zwei Dateien: X und Y, wobei jede Datei aus drei Bereichen besteht und jede Region auf getrennte logische Cluster verweist.Suppose there are two files, X and Y, where each file is composed of three regions, and each region maps to separate logical clusters.

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:Now suppose an application issues a block clone operation from File X to File Y, for regions A and B to be copied at the offset of region E. The following file system state would result:

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

Dieser Dateisystemstatus zeigt eine erfolgreiche Duplizierung der Block-Clone-Region an.This file system state reveals a successful duplication of the block cloned region. 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.Because ReFS performs this copy operation by only updating VCN to LCN mappings, no physical data was read, nor was the physical data in File Y overwritten. Datei X und Datei Y teilen jetzt logische Cluster, was durch die Referenzzähler in der Tabelle dargestellt wird.File X and Y now share logical clusters, reflected by the reference counts in the table. Da keine Daten physisch kopiert wurde, reduziert ReFS den Kapazitätsverbrauch auf dem Volume.Because no data was physically copied, ReFS reduces capacity consumption on the volume.

Angenommen die Anwendung versucht Region A der Datei X zu überschreiben. ReFS dupliziert den gemeinsamen Bereich, aktualisiert die Referenzzähler dementsprechend und führt den eingehenden Schreibvorgang auf die neu duplizierte Region aus.Now suppose the application attempts to overwrite region A in File X. ReFS will duplicate the shared region, update the reference counts appropriately, and perform the incoming write to the newly duplicated region. Dadurch wird sichergestellt, dass die Isolation zwischen den Dateien beibehalten wird.This ensures that isolation between the files is preserved.

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.After the modifying write, region B is still shared by both files. Falls Region A größer als ein Cluster wäre, würde nur der geänderte Cluster dupliziert und der verbleibende Teil würde freigegeben.Note that if region A were larger than a cluster, only the modified cluster would have been duplicated, and the remaining portion would have remained shared.

Einschränkungen der Funktion und HinweiseFunctionality restrictions and remarks

  • Die Quell- und Zielregion muss an einer Cluster-Begrenzung beginnen und enden.The source and destination region must begin and end at a cluster boundary.
  • Die geklonte Region muss kleiner als 4 GB lang sein.The cloned region must be less than 4GB in length.
  • Die maximale Anzahl von Datei Regionen, die derselben physischen Region zugeordnet werden können, ist 8175.The maximum number of file regions that can map to the same physical region is 8175.
  • Die Zielregion darf nicht über das Ende der Datei erweitert werden.The destination region must not extend past the end of the file. Falls die Anwendung das Ziel mit geklonten Daten erweitern möchte, müssen sie zuerst SetEndOfFile aufrufen.If the application wishes to extend the destination with cloned data, it must first call SetEndOfFile.
  • Wenn sich die Quell- und Zielregionen in derselben Datei befinden, dürfen diese nicht überlappen.If the source and destination regions are in the same file, they must not overlap. (Die Anwendung kann möglicherweise durch Aufteilen des Block-Clone-Vorgangs in mehrere Block-Clone-Vorgänge ausgeführt werden, wenn diese nicht überlappen).(The application may be able to proceed by splitting up the block clone operation into multiple block clones that no longer overlap).
  • Die Quell- und Zieldateien müssen sich auf demselben Volume ReFS befinden.The source and destination files must be on the same ReFS volume.
  • Die Quell- und Zieldateien müssen die gleichen Integrity Streams-Einstellungen aufweisen.The source and destination files must have the same Integrity Streams setting.
  • Hat die Quelldatei eine geringe Datendichte, muss die Zieldatei ebenfalls eine geringe Datendichte aufweisen.If the source file is sparse, the destination file must also be sparse.
  • Der Block-Clone-Vorgang durchbricht die Shared Opportunistic Sperrfunktion (auch bekannt als Level 2 Opportunistic Locks).The block clone operation will break Shared Opportunistic Locks (also know as Level 2 Opportunistic Locks).
  • 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.The ReFS volume must have been formatted with Windows Server 2016, and if Failover Clustering is in use, the Clustering Functional Level must have been Windows Server 2016 or later at format time.

Weitere VerweiseAdditional References