Clonación de bloques en ReFSBlock cloning on ReFS

Se aplica a: Windows Server 2016Applies To: Windows Server 2016

La clonación de bloques da la orden al sistema de archivos para que copie un intervalo de bytes del archivo en nombre de una aplicación, en el que el archivo de destino puede que sea el mismo o diferente del archivo de origen.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. Las operaciones de copia son, desgraciadamente, costosas ya que se desencadenan caras lecturas y escrituras en los datos físicos subyacentes.Copy operations, unfortunately, are expensive, since they trigger expensive read and writes to the underlying, physical data.

La clonación de bloques en ReFS, sin embargo, realiza copias de metadatos con una operación de bajo coste en lugar de leer y escribir los datos de los archivos.Block cloning in ReFS, however, performs copies as a low-cost metadata operation rather than reading from and writing to file data. Ya que ReFS permite que varios archivos compartan los mismos clústeres lógicos (ubicaciones físicas en un volumen), las operaciones de copia solo necesitan volver a asignar una región de un archivo a una ubicación física independiente, convirtiendo así una costosa operación física en una operación rápida y lógica.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. Esto permite que las copias se realicen más rápido y se generen menos E/S en el almacenamiento subyacente.This allows copies to complete faster and generate less I/O to the underlying storage. Esta mejora también beneficia a la virtualización de las cargas de trabajo, como las operaciones de fusión de punto de control .vhdx, que se aceleran considerablemente al usar las operaciones de clonación de bloques.This improvement also benefits virtualization workloads, as .vhdx checkpoint merge operations are dramatically accelerated when using block clone operations. Además, ya que varios archivos pueden compartir los mismos clústeres lógicos, los datos idénticos no se almacenarán físicamente varias veces y se mejorará la capacidad de almacenamiento.Additionally, because multiple files can share the same logical clusters, identical data isn't physically stored multiple times, improving storage capacity.

Así es cómo funcionaHow it works

La clonación de bloques en ReFS convierte una operación de archivo de datos en una operación de metadatos.Block cloning on ReFS converts a file data operation into a metadata operation. Para llevar a cabo esta optimización, ReFS presenta recuentos de referencia en los metadatos para las regiones que se han copiado.In order to make this optimization, ReFS introduces reference counts into its metadata for copied regions. Este recuento de referencias registra el número de las distintas regiones de archivo que hacen referencia a las mismas regiones físicas.This reference count records the number of distinct file regions that reference the same physical regions. Esto permite a varios archivos compartir los mismos datos físicos:This allows multiple files to share the same physical data:

Mostrar actualizaciones de recuento de referencia cuando varios archivos hacen referencia a la misma región

Al mantener un recuento de referencias para cada clúster lógico, ReFS no interrumpe el aislamiento entre archivos: escrituras en regiones compartidas desencadenan un mecanismo de asignación de escritura, donde ReFS asigna una nueva región para la escritura entrante.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. Este mecanismo conserva la integridad de los clústeres lógicos compartidos.This mechanism preserves the integrity of the shared logical clusters.

Por ejemplo:Example

Supongamos que hay dos archivos, X e Y, que cada archivo se compone de tres regiones y cada región se asigna para separar los clústeres lógicos.Suppose there are two files, X and Y, where each file is composed of three regions, and each region maps to separate logical clusters.

Dos archivos, cada uno de ellos con tres regiones distintas que se asignan a las regiones con un recuento de referencia 1

Ahora supongamos que una aplicación realiza una operación de clonación de bloques del archivo X al archivo Y para que las regiones A y B se copien en el desplazamiento de la región E. A continuación, se produciría el siguiente estado en el sistema de archivos: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:

Recuento de referencias muestra 2 en la región de bloques clonados.

Este estado en el sistema de archivos revela una duplicación con éxito de la región de bloques clonados.This file system state reveals a successful duplication of the block cloned region. Dado que ReFS realiza esta operación de copia mediante la actualización de asignaciones VCN a LCN, no se podían leer datos físicos ni se sobrescribieron datos físicos en el archivo 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. Los archivos X e Y ahora comparten clústeres lógicos, reflejados en los recuentos de referencia en la tabla.File X and Y now share logical clusters, reflected by the reference counts in the table. Ya que no hay datos copiados físiciamente, ReFS reduce el consumo de capacidad en el volumen.Because no data was physically copied, ReFS reduces capacity consumption on the volume.

Ahora supongamos que la aplicación intenta sobrescribir la región A en el archivo X. ReFS duplicará la región compartida, actualizará los recuentos de referencia de manera adecuada y realizará la escritura entrante en la región que acaba de duplicarse.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. Esto asegura que el aislamiento entre los archivos se conserve.This ensures that isolation between the files is preserved.

Aislamiento conservado al escribir en una nueva región G y al actualizar los recuentos de referencia

Tras de la escritura de modificación, la región B aún se comparte en ambos archivos.After the modifying write, region B is still shared by both files. Ten en cuenta que si la región A fuera mayor que un clúster, solo el clúster modificado se habría duplicado y el resto seguiría siendo compartido.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.

Comentarios y restricciones de funcionalidadFunctionality restrictions and remarks

  • La región de origen y de destino deben comenzar y terminar en los límites de un clúster.The source and destination region must begin and end at a cluster boundary.
  • La región clonada debe ser inferior a 4 GB de longitud.The cloned region must be less than 4GB in length.
  • El número máximo de las regiones de archivo que puede asignarse a la misma región física es de 8175.The maximum number of file regions that can map to the same physical region is 8175.
  • La región de destino no debe extenderse más allá del final del archivo.The destination region must not extend past the end of the file. Si la aplicación desea extender la región de destino con datos clonados, se debe llamar en primer lugar a SetEndOfFile.If the application wishes to extend the destination with cloned data, it must first call SetEndOfFile.
  • Si las regiones de origen y destino están en el mismo archivo, no deben superponerse.If the source and destination regions are in the same file, they must not overlap. (La aplicación puede continuar dividiendo la operación de clonación de bloques en varios bloques de clones que ya no se superpongan).(The application may be able to proceed by splitting up the block clone operation into multiple block clones that no longer overlap).
  • Los archivos de origen y de destino deben tener el mismo volumen ReFS.The source and destination files must be on the same ReFS volume.
  • Los archivos de origen y de destino deben tener la misma configuración de las secuencias de integridad.The source and destination files must have the same Integrity Streams setting.
  • Si el archivo de origen es disperso, el archivo de destino también debe serlo.If the source file is sparse, the destination file must also be sparse.
  • La operación de clonación de bloques interrumpirá bloqueos oportunistas compartidos (también conocidos como bloqueos oportunistas de nivel 2).The block clone operation will break Shared Opportunistic Locks (also know as Level 2 Opportunistic Locks).
  • El volumen de ReFS debe haber sido formateado con Windows Server 2016, y si el clúster de conmutación por error se ha utilizado, el nivel funcional del clúster debe haber sido formateado con Windows Server 2016 o posterior en el momento de formatear.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.

Consulta tambiénSee also