Paridad acelerada por reflejo

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

Espacios de almacenamiento puede proporcionar tolerancia a errores en los datos mediante dos técnicas fundamentales: reflejo y paridad. En Espacios de almacenamiento directo, ReFS nos trae paridad acelerada por reflejo, lo que le permite crear volúmenes que usan tanto la resistencia de reflejo como la de paridad. La paridad acelerada por reflejo ofrece un almacenamiento económico y con un uso eficiente del espacio sin sacrificar el rendimiento.

Diagram depicting the mirror accelerated parity volume.

Fondo

Los esquemas de resistencia de reflejo y paridad tienen características de almacenamiento y rendimiento que difieren desde la base:

  • La resistencia de reflejo permite a los usuarios obtener un rendimiento de escritura rápido, pero la replicación de los datos de cada copia no usa el espacio con eficiencia.
  • Por su parte, la resistencia de paridad debe volver a calcular la paridad en cada escritura, lo que hace que sufra el rendimiento de escritura aleatoria. Sin embargo, esta resistencia permite que los usuarios almacenen sus datos con un uso más eficiente del espacio. Para más información, consulte Tolerancia a errores en los Espacios de almacenamiento.

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

Alternación de datos en la paridad acelerada por reflejo

ReFS alterna activamente los datos entre reflejo y paridad en tiempo real. Esto permite que las escrituras entrantes se escriban rápidamente en reflejo y, después, cambien a paridad para almacenarse de forma eficiente. Al hacerlo, la E/S entrante se proporciona rápidamente en reflejo mientras los datos de acceso esporádico se almacenan de forma eficiente en paridad, lo que da un rendimiento óptimo y un almacenamiento a coste cero dentro del mismo volumen.

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

Diagram depicting mirror accelerated parity volume with storage containers.

ReFS empieza a cambiar regiones completas de reflejo a paridad cuando el nivel de reflejo alcanza un nivel de capacidad especificado. En vez de mover inmediatamente los datos de reflejo a paridad, ReFS espera y conserva los datos en reflejo siempre que sea posible, lo que permite que ReFS siga ofreciendo un rendimiento óptimo para los datos (consulte más abajo "Rendimiento de E/S").

Cuando los datos se mueven del reflejo a la paridad, se leen los datos, se calculan los cifrados de la paridad y, después, esos datos se escriben en la paridad. La siguiente animación ilustra esto mediante una región reflejada triple que se convierte en una región cifrada de borrado durante la alternación:

Animation showing mirror accelerated parity rotation.

E/S en paridad acelerada por reflejo

Comportamiento de E/S

Escrituras: ReFS ofrece las escrituras entrantes de tres formas distintas:

  1. Escrituras en el reflejo:

    • 1a. Si la escritura entrante modifica los datos existentes en el reflejo, ReFS modificará los datos en vigor.
    • 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 el reflejo. Screenshot showing how the ReFS service writes to mirror.
  2. Escrituras en el reflejo, reasignadas desde la 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 la paridad y, después, escribirá en el reflejo. Esta invalidación es una operación de metadatos rápida y económica que ayuda a mejorar significativamente el rendimiento de la escritura realizada en la paridad. Screenshot showing how the ReFS service writes to mirror, reallocated from parity.

  3. Escrituras en la paridad:

    Si ReFS no puede encontrar suficiente espacio libre en el reflejo, ReFS escribirá nuevos datos en la paridad o modificará directamente los datos existentes en la paridad. En la sección "Optimizaciones de rendimiento" que aparece abajo se proporciona una guía que ayuda a minimizar las escrituras en la paridad. Screenshot showing how the ReFS service writes to parity.

Lecturas: 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 que se hagan en el futuro.

Nota

Las lecturas nunca hacen que ReFS vuelva a alternar los datos en el nivel de reflejo.

Rendimiento de E/S

Escrituras: Cada tipo de escritura descrito anteriormente tiene sus propias características de rendimiento. En general, las escrituras en el nivel de reflejo son mucho más rápidas que las escrituras reasignadas, y las escrituras reasignadas son considerablemente más rápidas que las escrituras realizadas directamente en el nivel de paridad. Esta relación se ilustra con esta relación de desigualdad:

  • Nivel de reflejo > Escrituras reasignadas >> Nivel de paridad

Lecturas: 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 los mismos medios, el rendimiento de lectura será equivalente.
  • Si el reflejo y la paridad se construyen con medios distintos (SSD reflejados y HDD de paridad, por ejemplo), la memoria caché de los Espacios de almacenamiento directo ayudará a almacenar en caché los datos de acceso frecuente para acelerar las lecturas de la paridad.

Compactación de ReFS

La compactación en 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 a más del 90 %.

Antecedentes: Antes, a medida que los volúmenes de paridad acelerados por reflejo se llenaban, el rendimiento de estos volúmenes podía degradarse. El rendimiento se degrada porque los datos de acceso frecuente y esporádico se mezclan en el volumen a lo largo del tiempo. Esto significa que se pueden almacenar datos de acceso menos frecuente en el reflejo, ya que los datos de acceso esporádico ocupan un espacio en el reflejo que podría ser utilizado por los datos de acceso frecuente. Almacenar datos de acceso frecuente en reflejo es fundamental para mantener un alto rendimiento, ya que las escrituras que se realizan directamente en el reflejo son mucho más rápidas que las escrituras reasignadas y decenas de veces más rápidas que las escrituras directamente en paridad. Por lo tanto, tener datos de acceso esporádico en el reflejo es malo 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 de acceso frecuente. La compactación consolida primero todos los datos (tanto del reflejo como de la paridad) en la paridad. Esto reduce la fragmentación dentro del volumen y aumenta la cantidad de espacio direccionable en el reflejo. Y lo que es más importante, este proceso permite a ReFS consolidar los datos de acceso frecuente en el reflejo:

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

Optimizaciones de rendimiento

Importante

Se recomienda colocar los discos duros virtuales con una alta carga 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 una alta carga de 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 con más velocidad que la que tiene ReFS para cambiar los datos a la paridad. En otras palabras, la alternación de ReFS no es suficiente para estar a la altura de la tasa de ingesta. Los siguientes contadores de rendimiento identifican las situaciones en que ReFS escribe directamente en la 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 dan cero, esto indica que ReFS no alterna los datos al reflejo con la velocidad suficiente. Para paliar esta circunstancia, puede cambiar la agresividad de la alternación o aumentar el tamaño del nivel reflejado.

Agresividad de la alternación

ReFS empieza a alternar los datos cuando el reflejo alcanza un umbral de capacidad especificado.

  • Si suben los valores de este umbral de alternación, ReFS conserva más tiempo los datos en el nivel reflejado. Dejar datos de acceso frecuente en el nivel reflejado es óptimo para el rendimiento, pero ReFS no podrá atender eficazmente grandes cantidades de datos entrantes de E/S.
  • Si bajan los valores, ReFS puede volcar los datos de forma proactiva e ingerir mejor los datos entrantes de E/S. Esto se aplica a cargas de trabajo con muchas ingestas, como el almacenamiento de archivos. Sin embargo, los valores inferiores podrían degradar el rendimiento de las cargas de trabajo de uso general. La alternació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, con un reinicio necesario para que los cambios surtan efecto.

  • Clave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\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 %. Este comando de PowerShell 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 espacio de trabajo en el reflejo. Esto mejora la probabilidad de que ReFS pueda escribir directamente en el reflejo, lo que ayudará a lograr un mejor rendimiento. Estos cmdlets de PowerShell 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, consulte Extender volúmenes.

Creación de un volumen de paridad acelerada por reflejo

El siguiente cmdlet de PowerShell crea un volumen de paridad acelerada por reflejo con una relación Reflejo:Paridad 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