Paridad acelerada por reflejo

Se aplica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

Espacios de almacenamiento puede proporcionar tolerancia a errores para los datos mediante dos técnicas fundamentales: reflejo y paridad. En Espacios de almacenamiento directo, ReFS presenta paridad acelerada por reflejo, lo que le permite crear volúmenes que usan resistencias de reflejo y paridad. La paridad acelerada por reflejo ofrece almacenamiento económico y eficiente en el espacio sin sacrificar el rendimiento.

Diagram depicting the mirror accelerated parity volume.

Información previa

Los esquemas de resistencia de reflejo y paridad tienen características fundamentales de almacenamiento y rendimiento diferentes:

  • La resistencia reflejada permite a los usuarios obtener un rendimiento de escritura rápido, pero la replicación de los datos de cada copia no es suficiente espacio.
  • Por otro lado, la paridad debe volver a calcular la paridad para cada escritura, lo que hace que el rendimiento de escritura aleatorio sufra. Sin embargo, la paridad permite a los usuarios almacenar sus datos con una mayor eficiencia del espacio. Para obtener más información, consulta Espacios de almacenamiento tolerancia a errores.

Por lo tanto, el reflejo está predispuesto a proporcionar almacenamiento sensible al rendimiento, mientras que la paridad ofrece un uso mejorado de la capacidad de almacenamiento. En paridad acelerada por reflejo, ReFS aprovecha las ventajas de cada tipo de resistencia para ofrecer almacenamiento con capacidad eficiente y sensible al rendimiento mediante la combinación de ambos esquemas de resistencia dentro de un solo volumen.

Rotación de datos en paridad acelerada por reflejo

ReFS gira activamente los datos entre reflejo y paridad, en tiempo real. Esto permite que las escrituras entrantes se escriban rápidamente en el reflejo y, a continuación, se rotarán para que la paridad se almacene de forma eficaz. Al hacerlo, la E/S entrante se proporciona rápidamente en reflejo mientras los datos en frío se almacenan de forma eficaz en paridad, lo que proporciona un rendimiento óptimo y un almacenamiento de costos perdidos dentro del mismo volumen.

Para rotar los datos entre reflejo y paridad, ReFS divide lógicamente el volumen en regiones de 64 MiB, que son la unidad de rotación. En la imagen siguiente se muestra un volumen de paridad acelerado por reflejo dividido en regiones.

Diagram depicting mirror accelerated parity volume with storage containers.

ReFS comienza a girar las regiones completas del reflejo a la paridad una vez que el nivel de reflejo ha alcanzado un nivel de capacidad especificado. En lugar de mover inmediatamente los datos del reflejo a la paridad, ReFS espera y conserva los datos en el reflejo siempre y cuando sea posible, lo que permite a ReFS seguir ofreciendo un rendimiento óptimo para los datos (consulte "Rendimiento de E/S" a continuación).

Cuando los datos se mueven del reflejo a la paridad, se leen los datos, se calculan las codificaciones de paridad y, a continuación, esos datos se escriben en paridad. La animación siguiente ilustra esto mediante una región reflejada triple que se convierte en una región codificada de borrado durante la rotación:

Animation showing mirror accelerated parity rotation.

E/S en paridad acelerada por reflejo

Comportamiento de E/S

Escribe: Los servicios ReFS escriben de tres maneras distintas:

  1. Escrituras en reflejo:

    • 1a. Si la escritura entrante modifica los datos existentes en el reflejo, ReFS modificará los datos en su lugar.
    • 1b. Si la escritura entrante es una nueva escritura y ReFS puede encontrar correctamente suficiente espacio libre en el reflejo para atender esta escritura, ReFS escribirá en reflejo. Screenshot showing how the ReFS service writes to mirror.
  2. Escribe en Reflejo, reasignado de paridad:

    Si la escritura entrante modifica los datos que están en paridad y ReFS puede encontrar correctamente suficiente espacio libre en el reflejo para atender la escritura entrante, ReFS invalidará primero los datos anteriores en paridad y, a continuación, escribirá en reflejo. Esta invalidación es una operación de metadatos rápida y económica que ayuda a mejorar significativamente el rendimiento de escritura realizado a la paridad. Screenshot showing how the ReFS service writes to mirror, reallocated from parity.

  3. Escribe en Paridad:

    Si ReFS no encuentra correctamente suficiente espacio libre en el reflejo, ReFS escribirá nuevos datos para paridad o modificará directamente los datos existentes en paridad. En la sección "Optimizaciones de rendimiento" siguiente se proporcionan instrucciones que ayudan a minimizar las escrituras a la paridad. Screenshot showing how the ReFS service writes to parity.

Lee: ReFS leerá directamente desde el nivel que contiene los datos pertinentes. Si la paridad se construye con unidades de disco duro, la memoria caché de Espacios de almacenamiento directo almacenará en caché estos datos para acelerar las lecturas futuras.

Nota

Las lecturas nunca hacen que ReFS vuelva a girar los datos en el nivel reflejado.

Rendimiento de E/S

Escribe: Cada tipo de escritura descrito anteriormente tiene sus propias características de rendimiento. Aproximadamente hablando, las escrituras en el nivel de reflejo son mucho más rápidas que las escrituras reasignadas y las escrituras reasignadas son significativamente más rápidas que las escrituras realizadas directamente en el nivel de paridad. Esta relación se ilustra mediante la desigualdad siguiente:

  • Nivel de reflejo Reasignado nivel > de paridad de escrituras >>

Lee: No hay ningún impacto significativo y negativo en el rendimiento al leer de la paridad:

  • Si el reflejo y la paridad se construyen con el mismo tipo de medio, el rendimiento de lectura será equivalente.
  • Si el reflejo y la paridad se construyen con diferentes tipos de medios (SSD reflejados, HDD de paridad, por ejemplo), la memoria caché de Espacios de almacenamiento directo ayudará a almacenar en caché los datos activos para acelerar las lecturas de paridad.

Compactación de ReFS

La compactación para ReFS está disponible con Windows Server 2019 y versiones posteriores, lo que mejora considerablemente el rendimiento de los volúmenes de paridad acelerados por reflejo que están llenos del 90 %.

Fondo: Anteriormente, a medida que los volúmenes de paridad acelerados por reflejo se llenaban, el rendimiento de estos volúmenes podría degradarse. El rendimiento se degrada porque los datos de acceso frecuente y frío se mezclan a lo largo del tiempo extra del volumen. Esto significa que se pueden almacenar datos menos activos en el reflejo, ya que los datos inactivos ocupan espacio en el reflejo que, de lo contrario, podrían usarse en los datos activos. Almacenar datos activos en reflejo es fundamental para mantener un alto rendimiento, ya que las escrituras directamente en el reflejo son mucho más rápidas que las escrituras reasignadas y los pedidos de magnitud más rápidos que las escrituras directamente en paridad. Por lo tanto, tener datos inactivos en el reflejo es incorrecto para el rendimiento, ya que reduce la probabilidad de que ReFS pueda realizar escrituras directamente en el reflejo.

La compactación de ReFS soluciona estos problemas de rendimiento liberando espacio en el reflejo para los datos activos. La compactación consolida primero todos los datos (tanto del reflejo como de la paridad) en paridad. Esto reduce la fragmentación dentro del volumen y aumenta la cantidad de espacio direccionable en el reflejo. Lo que es más importante, este proceso permite a ReFS consolidar los datos activos en reflejo:

  • Cuando entren nuevas escrituras, se atenderán en el reflejo. Por lo tanto, los datos activos recién escritos residen en el reflejo.
  • Cuando se realiza una modificación de escritura en los datos de paridad, ReFS realiza una escritura reasignada, por lo que esta escritura también se atenderá en el reflejo. Por lo tanto, los datos activos que se movieron a paridad durante la compactación se reasignarán de nuevo al reflejo.

Optimizaciones de rendimiento

Importante

Se recomienda colocar discos duros virtuales de escritura en distintos subdirectorios. Esto se debe a que ReFS escribe los cambios de metadatos en el nivel de un directorio y sus archivos. Por lo tanto, si distribuye archivos con mucha escritura entre directorios, las operaciones de metadatos son más pequeñas y se ejecutan en paralelo, lo que reduce la latencia de las aplicaciones.

Contadores de rendimiento

ReFS mantiene contadores de rendimiento para ayudar a evaluar el rendimiento de la paridad acelerada por reflejo.

  • Como se ha descrito anteriormente en la sección Escritura en paridad, ReFS escribirá directamente en paridad cuando no pueda encontrar espacio libre en el reflejo. Por lo general, esto ocurre cuando el nivel reflejado se rellena más rápido que ReFS puede rotar los datos a paridad. En otras palabras, la rotación de ReFS no puede mantenerse al día con la tasa de ingesta. Los contadores de rendimiento siguientes identifican cuándo ReFS escribe directamente en paridad:

    # 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 son cero, esto indica que ReFS no gira los datos lo suficientemente rápido como fuera del reflejo. Para ayudar a aliviar esto, puede cambiar la agresividad de rotación o aumentar el tamaño del nivel reflejado.

Agresividad de rotación

ReFS comienza a girar los datos una vez que el reflejo ha alcanzado un umbral de capacidad especificado.

  • Los valores más altos de este umbral de rotación hacen que ReFS conserve los datos en el nivel reflejado más largo. Dejar datos activos en el nivel reflejado es óptimo para el rendimiento, pero ReFS no podrá atender eficazmente grandes cantidades de E/S entrantes.
  • Los valores inferiores permiten a ReFS desaconseger de forma proactiva los datos y una mejor ingesta de E/S entrantes. Esto se aplica a cargas de trabajo intensivas de ingesta, como el almacenamiento de archivo. Sin embargo, los valores inferiores podrían degradar el rendimiento de las cargas de trabajo de uso general. La rotación innecesaria de los datos fuera del nivel de reflejo conlleva una penalización de rendimiento.

ReFS presenta un parámetro ajustable para ajustar este umbral, que se puede configurar mediante una clave del Registro. Esta clave del Registro debe configurarse en cada nodo de una implementación de Espacios de almacenamiento directo y se requiere un reinicio para que los cambios surtan efecto.

  • Clave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies
  • ValueName (DWORD): DataDestageSsdFillRatioThreshold
  • ValueType: Porcentaje

Si no se establece esta clave del Registro, ReFS usará un valor predeterminado del 85 %. Este valor predeterminado se recomienda para la mayoría de las implementaciones y no se recomiendan los valores inferiores al 50 %. El comando de PowerShell siguiente muestra cómo establecer esta clave del Registro con un valor de 75 %:

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

Para configurar esta clave del Registro en cada nodo de una implementación de Espacios de almacenamiento directo, puede usar el siguiente comando de PowerShell:

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

Aumento del tamaño del nivel reflejado

Aumentar el tamaño del nivel reflejado permite a ReFS conservar una parte mayor del conjunto de trabajo en el reflejo. Esto mejora la probabilidad de que ReFS pueda escribir directamente en reflejo, lo que ayudará a lograr un mejor rendimiento. Los cmdlets de PowerShell siguientes muestran cómo aumentar el tamaño del nivel reflejado:

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

Sugerencia

Asegúrese de cambiar el tamaño de la partición y el volumen después de cambiar el tamaño de StorageTier. Para obtener más información y ejemplos, vea Extender volúmenes.

Creación de un volumen de paridad acelerado por reflejo

El cmdlet de PowerShell siguiente crea un volumen de paridad acelerado por reflejo con una relación Mirror:Parity de 20:80, que es la configuración recomendada para la mayoría de las cargas de trabajo. Para obtener más información y ejemplos, consulte Creación de volúmenes en Espacios de almacenamiento directo.

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

Referencias adicionales