Clonazione dei blocchi su ReFSBlock cloning on ReFS

Si applica a: Windows Server 2019, Windows Server 2016, Windows Server (Canale semestrale)Applies to: Windows Server 2019, Windows Server 2016, Windows Server (Semi-Annual Channel)

La clonazione dei blocchi indica al file system di copiare un intervallo di byte di file per conto di un'applicazione in cui il file di destinazione può essere lo stesso oppure può essere diverso dal file di origine.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. Le operazioni di copia sono costose in quanto attivano letture e scritture impegnative sui dati fisici sottostanti.Copy operations, unfortunately, are expensive, since they trigger expensive read and writes to the underlying, physical data.

La clonazione dei blocchi in ReFS, tuttavia, esegue le copie come un'operazione di metadati a basso costo invece che leggere e scrivere nei dati dei file.Block cloning in ReFS, however, performs copies as a low-cost metadata operation rather than reading from and writing to file data. Poiché ReFS consente a più file di condividere gli stessi cluster logici (posizioni fisiche su un volume), le operazioni di copia devono solo rimappare un'area di un file in una posizione fisica separata, trasformando in questo modo un'operazione fisica costosa in una rapida operazione logica.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. Ciò consente di completare le copie in modo più rapido e di generare meno I/O nell'archiviazione sottostante.This allows copies to complete faster and generate less I/O to the underlying storage. Questo miglioramento offre vantaggi anche ai carichi di lavoro della virtualizzazione in quanto, quando si utilizzano le operazioni di clonazione dei blocchi, le operazioni di unione del checkpoint .vhdx. vengono estremamente velocizzate.This improvement also benefits virtualization workloads, as .vhdx checkpoint merge operations are dramatically accelerated when using block clone operations. Inoltre, poiché più file possono condividere gli stessi cluster logici, i dati identici non vengono fisicamente archiviati più volte, migliorando la capacità di archiviazione.Additionally, because multiple files can share the same logical clusters, identical data isn't physically stored multiple times, improving storage capacity.

Come funzionaHow it works

La clonazione dei blocchi su ReFS converte un'operazione dati dei file in un'operazione di metadati.Block cloning on ReFS converts a file data operation into a metadata operation. Per effettuare questa ottimizzazione, ReFS introduce nei metadati i conteggi dei riferimenti per le aree copiate.In order to make this optimization, ReFS introduces reference counts into its metadata for copied regions. Questo conteggio dei riferimenti registra il numero delle aree distinte del file che si riferiscono alle stesse aree fisiche.This reference count records the number of distinct file regions that reference the same physical regions. Ciò consente a più file di condividere gli stessi dati fisici:This allows multiple files to share the same physical data:

Mostra gli aggiornamenti del conteggio dei riferimenti quando più file fanno riferimento alla stessa area

Mantenendo un conteggio dei riferimenti per ogni cluster logico, ReFS non interrompe l'isolamento dei file: la scrittura nelle aree condivise attiva un meccanismo di allocazione in fase di scrittura dove ReFS alloca una nuova area per la scrittura.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. Questo meccanismo preserva l'integrità dei cluster logici condivisi.This mechanism preserves the integrity of the shared logical clusters.

EsempioExample

Si supponga ci siano due file, X e Y; ciascun file è formato da tre aree e ciascuna area è mappata su cluster logici separati.Suppose there are two files, X and Y, where each file is composed of three regions, and each region maps to separate logical clusters.

Due file, ciascuno con tre aree distinte che mappano tutte su aree che hanno il conteggio dei riferimenti 1

Si supponga ora che un'applicazione avvii un'operazione di clonazione dei blocchi dal File X al File Y per copiare le aree A e B all'offset dell'area E. Lo stato del file system sarà il seguente: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:

Il conteggio dei riferimenti indica 2 per l'area con la clonazione dei blocchi

Questo stato del file system indica una duplicazione corretta dell'area con i blocchi clonati.This file system state reveals a successful duplication of the block cloned region. Poiché ReFS effettua questa operazione di copia aggiornando solo le mappature VCN su LCN, non sono stati letti dati fisici, né sovrascritti dati fisici nel File Y.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. I file X e Y ora condividono cluster logici, riflessi dai conteggi dei riferimenti nella tabella.File X and Y now share logical clusters, reflected by the reference counts in the table. Poiché non sono stati fisicamente copiati dati, ReFS riduce il consumo di capacità del volume.Because no data was physically copied, ReFS reduces capacity consumption on the volume.

Si supponga ora che l'applicazione tenti di sovrascrivere l'area A nel File X. ReFS duplicherà l'area condivisa, aggiornerà il conteggio dei riferimenti in modo appropriato ed eseguirà la scrittura nell'area duplicata.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. In questo modo viene mantenuto l'isolamento dei file.This ensures that isolation between the files is preserved.

L'isolamento viene mantenuto mediante la scrittura in una nuova area G e l'aggiornamento dei conteggi dei riferimenti.

Dopo la scrittura di modifica, l'area B è ancora condivisa da entrambi i file.After the modifying write, region B is still shared by both files. Notare che se l'area A fosse stata più grande di un cluster, sarebbe stato duplicato solo il cluster modificato e la parte rimanente sarebbe rimasta condivisa.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.

Restrizioni e note sulle funzionalitàFunctionality restrictions and remarks

  • L'area di origine e di destinazione deve iniziare e terminare al limite di un cluster.The source and destination region must begin and end at a cluster boundary.
  • L'area clonata deve avere una lunghezza minore di 4 GB.The cloned region must be less than 4GB in length.
  • Il numero massimo di aree di file che possono mappare sulla stessa area fisica è di 8175.The maximum number of file regions that can map to the same physical region is 8175.
  • L'area di destinazione non può estendersi oltre la fine del file.The destination region must not extend past the end of the file. Se l'applicazione vuole estendere la destinazione con i dati clonati, deve prima chiamare SetEndOfFile.If the application wishes to extend the destination with cloned data, it must first call SetEndOfFile.
  • Se le aree di origine e di destinazione si trovano nello stesso file, non si devono sovrapporre.If the source and destination regions are in the same file, they must not overlap. (L'applicazione può continuare dividendo l'operazione di clonazione dei blocchi in più clonazioni dei blocchi che non si sovrappongono).(The application may be able to proceed by splitting up the block clone operation into multiple block clones that no longer overlap).
  • I file di origine e di destinazione devono essere nello stesso volume ReFS.The source and destination files must be on the same ReFS volume.
  • I file di origine e di destinazione devono avere la stessa impostazione Flussi di integrità.The source and destination files must have the same Integrity Streams setting.
  • Se il file di origine è un file sparse, anche il file di destinazione deve essere sparse.If the source file is sparse, the destination file must also be sparse.
  • L'operazione di clonazione dei blocchi interromperà i blocchi opportunistici condivisi (noti anche come Blocchi opportunistici di Livello 2).The block clone operation will break Shared Opportunistic Locks (also know as Level 2 Opportunistic Locks).
  • Il volume ReFS deve essere stato formattato con Windows Server 2016 e, se è in uso il Clustering di failover, il Livello di funzionalità del clustering al momento della formattazione doveva essere Windows Server 2016 o versioni successive.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.

Vedere ancheSee also