Compartir a través de


Paridad acelerada por reflejo

Los Espacios de almacenamiento pueden 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.

Diagrama en el que se muestra el volumen de paridad acelerada por reflejo.

Información previa

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

  • La resiliencia de espejo permite a los usuarios obtener un rendimiento de escritura rápido, pero replicar los datos para cada copia no es eficiente en el uso del espacio.
  • Por otro lado, la paridad debe volver a calcularse en cada operación de escritura, haciendo que el rendimiento de escritura aleatoria se vea afectado. Sin embargo, la paridad permite a los usuarios almacenar sus datos con una mayor eficiencia en el uso 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.

Diagrama en el que se muestra el volumen de paridad acelerada por reflejo con contenedores de almacenamiento.

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:

Animación que muestra la alternación a la paridad acelerada por reflejo.

E/S en paridad acelerada por reflejo

Comportamiento de E/S

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

  1. Escribe en el espejo:

    • 1a. Si la escritura entrante modifica los datos existentes en el espejo, 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 el reflejo. Captura de pantalla que muestra la forma en que el servicio ReFS escribe en el reflejo.
  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. Captura de pantalla que muestra la forma en que el servicio ReFS escribe en el reflejo, reasignando a partir de la paridad.

  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. Captura de pantalla que muestra la forma en que el servicio ReFS escribe en la paridad.

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 mover los datos al nivel de espejo.

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 la misma clase de medio de almacenamiento, 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 calientes y fríos se mezclan en todo el volumen con el tiempo. Esto significa que se pueden almacenar datos menos calientes en el reflejo, ya que los datos fríos ocupan un espacio en el reflejo que podría ser utilizado por los datos calientes. 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 comienza a rotar los datos cuando el espejo alcanza un umbral de capacidad especificado.

  • Si aumentan los valores de este umbral de rotación, ReFS conserva los datos en el nivel espejo durante más tiempo. 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 alta carga de ingesta, 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, vea Extender un volumen básico.

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