Paridad acelerada por reflejosMirror-accelerated parity

Se aplica a: Windows Server 2019, Windows Server 2016Applies to: Windows Server 2019, Windows Server 2016

Los espacios de almacenamiento pueden proporcionar tolerancia a errores para datos mediante dos técnicas fundamentales: reflejos y paridad.Storage Spaces can provide fault tolerance for data using two fundamental techniques: mirror and parity. En Espacios de almacenamiento directo, ReFS incluye la paridad acelerada por reflejos, lo que permite crear volúmenes que usan resistencias de reflejo y paridad.In Storage Spaces Direct, ReFS introduces mirror-accelerated parity, which enables you to create volumes that use both mirror and parity resiliencies. La paridad acelerada por reflejos ofrece almacenamiento económico que aprovecha el espacio sin sacrificar el rendimiento.Mirror-accelerated parity offers inexpensive, space-efficient storage without sacrificing performance.

Mirror-Accelerated-Parity-Volume

BackgroundBackground

Los esquemas de resistencia de reflejo y paridad tienen distintas características de almacenamiento y rendimiento:Mirror and parity resiliency schemes have fundamentally different storage and performance characteristics:

  • La resistencia reflejada permite a los usuarios lograr un rendimiento de escritura rápido, pero la replicación de los datos de cada copia no es eficaz.Mirror resiliency allows users to attain fast write performance, but replicating the data for each copy isn't space efficient.
  • Por otra parte, la paridad debe volver a calcularse para cada escritura, lo que provoca un rendimiento aleatorio de la escritura.Parity, on the other hand, must re-compute parity for every write, causing random write performance to suffer. Sin embargo, la paridad permite a los usuarios almacenar sus datos con mayor eficacia de espacio.Parity does, however, allow users to store their data with greater space efficiency. Para obtener más información, consulte tolerancia a errores de espacios de almacenamiento.For more info, see Storage Spaces fault tolerance.

Por lo tanto, el reflejo debe estar predispuesto a ofrecer almacenamiento dependiente del rendimiento, mientras que la paridad ofrece un uso mejorado de la capacidad de almacenamiento.Thus, mirror is predisposed to deliver performance-sensitive storage while parity offers improved storage capacity utilization. En la paridad acelerada por reflejos, ReFS saca partido de las ventajas de cada tipo de resistencia para proporcionar almacenamiento dependiente de la capacidad y del rendimiento mediante la combinación de ambos esquemas de resistencia en un único volumen.In mirror-accelerated parity, ReFS leverages the benefits of each resiliency type to deliver both capacity-efficient and performance-sensitive storage by combining both resiliency schemes within a single volume.

Cambio de datos en la paridad acelerada por reflejosData rotation on mirror-accelerated parity

ReFS cambia activamente datos entre el espejo y la paridad en tiempo real.ReFS actively rotates data between mirror and parity, in real-time. Esto permite que las escrituras de entrada se escriban rápidamente en el reflejo y luego cambien a la paridad para almacenarse de forma eficaz.This allows incoming writes to be quickly written to mirror then rotated to parity to be stored efficiently. Al hacerlo, la E/S de entrada se realiza rápidamente en el reflejo mientras que los datos "fríos" se almacenan de forma eficaz en el reflejo, lo que ofrece un rendimiento óptimo y un almacenamiento rentable en el mismo volumen.In doing so, incoming IO is serviced quickly in mirror while cold data is stored efficiently in parity, delivering both optimal performance and lost-cost storage within the same volume.

Para cambiar los datos entre reflejo y paridad, ReFS divide lógicamente el volumen en regiones de 64 MiB, que es la unidad del cambio.To rotate data between mirror and parity, ReFS logically divides the volume into regions of 64 MiB, which are the unit of rotation. La siguiente imagen ilustra un volumen de paridad acelerada por reflejos dividido en regiones.The image below depicts a mirror-accelerated parity volume divided into regions.

Mirror-Accelerated-Parity-Volume-with-Storage-Containers

ReFS empieza a cambiar regiones completas de reflejo a paridad cuando el nivel de reflejo llega a un nivel de capacidad especificado.ReFS begins rotating full regions from mirror to parity once the mirror tier has reached a specified capacity level. En lugar de trasladar inmediatamente los datos de reflejo paridad, ReFS espera y conserva los datos en el reflejo, siempre que sea posible, lo que permite a ReFS continuar ofreciendo un rendimiento óptimo para los datos (consulta "Rendimiento de E/S" a continuación).Instead of immediately moving data from mirror to parity, ReFS waits and retains data in mirror as long as possible, allowing ReFS to continue delivering optimal performance for the data (see “IO performance” below).

Cuando los datos se mueven desde el reflejo a la paridad, los datos se leen, las codificaciones de paridad se calculan y los datos se escriben en la paridad.When data is moved from mirror to parity, the data is read, parity encodings are computed, and then that data is written to parity. La animación siguiente muestra cómo utilizar una región de reflejo triple que se convierte en una región de codificación de borrado durante el cambio:The animation below illustrates this using a three-way mirrored region that is converted into an erasure coded region during rotation:

Mirror-Accelerated-Parity-Rotation

E/S en la paridad acelerada por reflejosIO on mirror-accelerated parity

Comportamiento de E/SIO behavior

Escrituras: ReFS ofrece escrituras de entrada de tres formas distintas:Writes: ReFS services incoming writes in three distinct ways:

  1. Escribe en el reflejo:Writes to Mirror:

    • 1Una.1a. Si la escritura de entrada modifica los datos existentes en el reflejo, ReFS modificará los datos.If the incoming write modifies existing data in mirror, ReFS will modify the data in place.
    • ter.1b. Si la escritura de entrada es una nueva escritura y ReFS encuentra suficiente espacio libre en el reflejo para ofrecer esta escritura, ReFS escribirá en el reflejo.If the incoming write is a new write, and ReFS can successfully find enough free space in mirror to service this write, ReFS will write to mirror. ](media/mirror-accelerated-parity/Write-to-Mirror.png) de ![Write a reflejoWrite-to-Mirror
  2. Escribe en el reflejo, reasignado desde la paridad:Writes to Mirror, Reallocated from Parity:

    Si la escritura entrante modifica los datos que están en paridad y ReFS puede encontrar correctamente suficiente espacio disponible en el reflejo para atender la escritura entrante, ReFS invalidará primero los datos anteriores en paridad y, a continuación, escribirá en el reflejo.If the incoming write modifies data that's in parity, and ReFS can successfully find enough free space in mirror to service the incoming write, ReFS will first invalidate the previous data in parity and then write to mirror. Esta anulación es una operación de metadatos rápida y económica que ayuda considerablemente a mejorar el rendimiento de la escritura en la paridad.This invalidation is a quick and inexpensive metadata operation that helps meaningfully improve write performance made to parity. ](media/mirror-accelerated-parity/Reallocated-Write.png) ![Reallocated-WriteReallocated-Write

  3. Escribe en la paridad:Writes to Parity:

    Si ReFS no puede encontrar suficiente espacio libre en el reflejo, ReFS escribirá nuevos datos en la paridad o modificará los datos existentes directamente en la paridad.If ReFS cannot successfully find enough free space in mirror, ReFS will write new data to parity or modify existing data in parity directly. En la sección "Optimizaciones de rendimiento" que aparece a continuación se proporcionan instrucciones que ayudan a minimizar las escrituras en la paridad.The “Performance optimizations” section below provides guidance that helps minimize writes to parity. ](media/mirror-accelerated-parity/Write-to-Parity.png) de ![Write a paridadWrite-to-Parity

Lecturas: ReFS leerá directamente desde el nivel que incluya los datos relevantes.Reads: ReFS will read directly from the tier containing the relevant data. Si la paridad se crea con unidades de disco duro (HDD), la memoria caché de los espacios de almacenamiento directo almacenará estos datos para acelerar lecturas futuras.If parity is constructed with HDDs, the cache in Storage Spaces Direct will cache this data to accelerate future reads.

Nota

Las lecturas nunca hacen que ReFS vuelva a cambiar datos en el nivel de reflejo.Reads never cause ReFS to rotate data back into the mirror tier.

Rendimiento de e/sIO performance

Escrituras: cada tipo de escritura que se ha descrito anteriormente tiene sus propias características de rendimiento.Writes: Each type of write described above has its own performance characteristics. A grandes rasgos, las escrituras en el nivel de reflejo son mucho más rápidas que las escrituras reasignadas y las escrituras reasignadas son mucho más rápidas que las escrituras realizadas directamente en el nivel de paridad.Roughly speaking, writes to the mirror tier are much faster than reallocated writes, and reallocated writes are significantly faster than writes made directly to the parity tier. Esta relación se muestra en la siguiente diferencia:This relationship is illustrated by the inequality below:

  • Nivel de reflejo > escrituras reasignadas > nivel de paridad >Mirror Tier > Reallocated Writes >> Parity Tier

Lecturas: no hay ningún impacto negativo en la lectura desde la paridad:Reads: There is no meaningful, negative performance impact when reading from parity:

  • Si el reflejo y la paridad se crean con el mismo tipo de medio, el rendimiento de la lectura será igual.If mirror and parity are constructed with the same media type, read performance will be equivalent.
  • Si el reflejo y la paridad se crean con distintos tipos de medios, por ejemplo, SSD de espejo y HDD de paridad, la memoria caché de los espacios de almacenamiento directo permitirá que los datos "en caliente" aceleren las lecturas desde la paridad.If mirror and parity are constructed with different media types—Mirrored SSDs, Parity HDDs, for example—the cache in Storage Spaces Direct will help cache hot data to accelerate any reads from parity.

Compactación de ReFSReFS compaction

En esta versión semestral, ReFS incorpora compactación, lo que mejora considerablemente el rendimiento de los volúmenes de paridad acelerados para reflejos que están llenos en el 90%.In this Fall's semi-annual release, ReFS introduces compaction, which substantially improves performance for mirror-accelerated parity volumes that are 90+% full.

En segundo plano: dado que anteriormente los volúmenes de paridad acelerada por reflejos se llenaban, el rendimiento de estos volúmenes podía verse afectado.Background: Previously, as mirror-accelerated parity volumes became full, the performance of these volumes could degrade. El rendimiento se ve afectado porque se mezclan datos "fríos" y "en caliente" durante las horas de extra del volumen.The performance degrades because hot and cold data become mixed throughout the volume overtime. Esto significa que pueden almacenarse menos datos "en caliente" en el reflejo, ya que los datos "fríos" ocupan espacio en el reflejo que podrían utilizar los datos "en caliente".This means less hot data can be stored in mirror since cold data occupies space in mirror that could otherwise be used by hot data. Almacenar datos "en caliente" en el reflejo es de vital importancia para mantener un alto nivel de rendimiento, ya que las escrituras directas al reflejo son mucho más rápidas que las escrituras reasignadas, así como las órdenes de magnitud son más rápidas que las escrituras directas a la paridad.Storing hot data in mirror is critical to maintaining high performance because writes directly to mirror are much faster than reallocated writes and orders of magnitude faster than writes directly to parity. Por lo tanto, tener datos "fríos" en el reflejo no es adecuado para el rendimiento, ya que reduce la probabilidad de que ReFS pueda escribir directamente en el reflejo.Thus, having cold data in mirror is bad for performance, as it reduces the likelihood that ReFS can make writes directly to mirror.

La compactación de ReFS aborda estos problemas de rendimiento, liberando espacio en el reflejo para datos "en caliente".ReFS compaction addresses these performance issues by freeing up space in mirror for hot data. La compactación consolida primero todos los datos, de reflejo y paridad, en la paridad.Compaction first consolidates all data—from both mirror and parity—into parity. Esto reduce la fragmentación del volumen y aumenta la cantidad de espacio direccionable en el reflejo.This reduces fragmentation within the volume and increases the amount of addressable space in mirror. Y lo que más importante, este proceso permite a ReFS volver a consolidar los datos "en caliente" en el reflejo:More importantly, this process enables ReFS to consolidate hot data back into mirror:

  • Cuando se introducen nuevas escrituras, se proporcionarán en el reflejo.When new writes come in, they will be serviced in mirror. Por lo tanto, los nuevos datos escritos "en caliente" residen en el reflejo.Thus, newly written, hot data resides in mirror.
  • Al modificar una escritura realizada en los datos de la paridad, ReFS realiza un escritura reasignada, así que dicha escritura también puede proporcionarse al reflejo.When a modifying write is made to data in parity, ReFS makes a reallocated write, so this write is serviced in mirror as well. Por lo tanto, los datos "en caliente" que se movieron a la paridad durante la compactación se volverán a asignar al reflejo.Consequently, hot data that was moved into parity during compaction will be reallocated back into mirror.

Optimizaciones de rendimientoPerformance optimizations

Importante

Se recomienda colocar los VHD con mucha escritura en subdirectorios diferentes.We recommend placing write-heavy VHDs in different subdirectories. Esto se debe a que ReFS escribe los cambios de metadatos en el nivel de un directorio y sus archivos.This is because ReFS writes metadata changes at the level of a directory and its files. Por lo tanto, si distribuye archivos con mucha escritura a través de directorios, las operaciones de metadatos son más pequeñas y se ejecutan en paralelo, lo que reduce la latencia de las aplicaciones.So if you distribute write-heavy files across directories, metadata operations are smaller and run in parallel, reducing latency for apps.

Contadores de rendimientoPerformance counters

ReFS mantiene contadores de rendimiento para ayudar a evaluar el rendimiento de la paridad acelerada por reflejos.ReFS maintains performance counters to help evaluate the performance of mirror-accelerated parity.

  • Tal y como se describió anteriormente en la sección escritura en paridad, ReFS escribirá directamente en la paridad cuando no encuentre espacio disponible en el reflejo.As described above in the Write to Parity section, ReFS will write directly to parity when it can't find free space in mirror. Por lo general, esto se produce cuando el nivel de reflejo se llena de forma más rápida que ReFS puede cambiar los datos a la paridad.Generally, this occurs when the mirrored tier fills up faster than ReFS can rotate data to parity. En otras palabras, el cambio de ReFS no es capaz de seguir el ritmo de la velocidad de ingesta.In other words, ReFS rotation is not able to keep up with the ingestion rate. Los siguientes contadores de rendimiento identifican si ReFS escribe directamente en la paridad:The performance counters below identify when ReFS writes directly to parity:

    # Windows Server 2016
    ReFS\Data allocations slow tier/sec
    ReFS\Metadata allocations slow tier/sec
    
    # Windows Server 2019
    ReFS\Allocation of Data Clusters on Slow Tier/sec
    ReFS\Allocation of Metadata Clusters on Slow Tier/sec
    
  • Si estos contadores no están a cero, esto indica que ReFS no cambia los datos con la suficiente rapidez fuera del reflejo.If these counters are non-zero, this indicates ReFS is not rotating data fast enough out of mirror. Para ayudar a mitigar este problema, se puede cambiar la agresividad de cambio o aumentar el tamaño del nivel de reflejo.To help alleviate this, one can either change the rotation aggressiveness or increase the size of the mirrored tier.

Agresividad de giroRotation aggressiveness

ReFS empieza a cambiar datos cuando el reflejo llega a un umbral de capacidad especificado.ReFS begins rotating data once mirror has reached a specified capacity threshold.

  • Los valores más altos de este umbral de cambio hacen que ReFS conserve los datos en el nivel de reflejo durante más tiempo.Higher values of this rotation threshold cause ReFS to retain data in the mirror tier longer. Dejar los datos "en caliente" en el nivel de reflejo es óptimo para el rendimiento, pero ReFS no podrá proporcionar de forma eficaz grandes cantidades de E/S de entrada.Leaving hot data in the mirror tier is optimal for performance, but ReFS will not be able to effectively service large amounts of incoming IO.
  • Los valores más bajos permiten que ReFS elimine copias intermedias de los datos y realice una mejor ingesta de E/S de entrada.Lower values enable ReFS to proactively destage data and better ingest incoming IO. Esto es aplica a las cargas de trabajo de ingesta intensiva, como el almacenamiento de archivos.This is applicable to ingest-heavy workloads, such as archival storage. Sin embargo, los valores más bajos, podrían afectar al rendimiento de las cargas de trabajo con fines generales.Lower values, however, could degrade performance for general purpose workloads. Cambiar de forma innecesaria los datos fuera del nivel de reflejo implica una disminución del rendimiento.Unnecessarily rotating data out of the mirror tier carries a performance penalty.

ReFS incluye un parámetro ajustable para ajustar este umbral, que se puede configurar mediante una clave de registro.ReFS introduces a tunable parameter to adjust this threshold, which is configurable using a registry key. Esta clave de registro debe configurarse en cada nodo de una implementación de espacios de almacenamiento directo, por tanto, será necesario reiniciar para que los cambios entren en vigor.This registry key must be configured on each node in a Storage Spaces Direct deployment, and a restart is required for any changes to take effect.

  • Clave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\PoliciesKey: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies
  • ValueName (DWORD): DataDestageSsdFillRatioThresholdValueName (DWORD): DataDestageSsdFillRatioThreshold
  • ValueType: porcentajeValueType: Percentage

Si no se establece esta clave de registro, ReFS usará un valor predeterminado de 85 %.If this registry key is not set, ReFS will use a default value of 85%. Se recomienda usar este valor predeterminado para la mayoría de las implementaciones y no se recomiendan los valores inferiores al 50 %.This default value is recommended for most deployments, and values below 50% are not recommended. El siguiente comando de PowerShell muestra cómo establecer esta clave de registro con un valor de 75 %:The PowerShell command below demonstrates how to set this registry key with a value of 75%:

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75

Para configurar esta clave de registro en cada nodo en una implementación de Espacios de almacenamiento directos, puedes usar el siguiente comando de PowerShell:To configure this registry key across each node in a Storage Spaces Direct deployment, you can use the PowerShell command below:

$Nodes = 'S2D-01', 'S2D-02', 'S2D-03', 'S2D-04'
Invoke-Command $Nodes {Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75}

Aumentar el tamaño del nivel reflejadoIncreasing the size of the mirrored tier

Aumentar el tamaño de la nivel de reflejo permite a ReFS conservar una mayor parte del conjunto de trabajo en el reflejo.Increasing the size of the mirrored tier enables ReFS to retain a larger portion of the working set in mirror. Esto aumenta la probabilidad de que ReFS pueda escribir directamente en el reflejo, lo que ayudará a lograr un mejor rendimiento.This improves the likelihood that ReFS can write directly to mirror, which will help achieve better performance. Los siguientes cmdlets de PowerShell muestran cómo aumentar el tamaño del nivel de reflejo:The PowerShell cmdlets below demonstrate how to increase the size of the mirrored tier:

Resize-StorageTier -FriendlyName “Performance” -Size 20GB
Resize-StorageTier -InputObject (Get-StorageTier -FriendlyName “Performance”) -Size 20GB

Sugerencia

Asegúrate de cambiar el tamaño de la Partición y Volumen después de cambiar el tamaño de StorageTier.Make sure to resize the Partition and Volume after you resize the StorageTier. Para obtener más información y ejemplos, consulta Resize-Volumes.For more information and examples, see Resize-Volumes.

Crear un volumen de paridad acelerada por reflejosCreating a mirror-accelerated parity volume

El siguiente cmdlet de PowerShell crea un volumen paridad acelerada por reflejos con una relación Reflejo:Paridad de 20:80, que es la configuración recomendada para la mayoría de las cargas de trabajo.The PowerShell cmdlet below creates a mirror-accelerated parity volume with a Mirror:Parity ratio of 20:80, which is the recommended configuration for most workloads. Para obtener más información y ejemplos, echa un vistazo a Crear volúmenes en espacios de almacenamiento directo.For more information and examples, see Creating volumes in Storage Spaces Direct.

New-Volume – FriendlyName “TestVolume” -FileSystem CSVFS_ReFS -StoragePoolFriendlyName “StoragePoolName” -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes 200GB, 800GB

Consulta tambiénSee also