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 Direct,ReFS presenta la paridad acelerada por reflejo, que permite crear volúmenes que usan resistencias de reflejo y paridad. La paridad acelerada por reflejo ofrece almacenamiento económico y eficiente para el espacio sin sacrificar el rendimiento.

Diagrama que representa el volumen de paridad acelerada del reflejo.

Segundo plano

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

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

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

Rotación de datos en paridad acelerada por reflejo

ReFS gira activamente los datos entre el reflejo y la paridad, en tiempo real. Esto permite que las escrituras entrantes se escriban rápidamente en el reflejo y luego se rote para que la paridad se almacene de forma eficaz. Al hacerlo, la E/S entrante se atiende rápidamente en el reflejo, mientras que 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 acelerada por reflejo dividido en regiones.

Diagrama que muestra el volumen de paridad acelerada reflejado con contenedores de almacenamiento.

ReFS comienza a rotar regiones completa de reflejo a 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 tanto como sea posible, lo que permite a ReFS seguir proporcionando un rendimiento óptimo para los datos (consulte "Rendimiento de E/S" a continuación).

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

Animación que muestra la rotación de paridad acelerada del reflejo.

E/S en paridad acelerada por reflejo

Comportamiento de E/S

Escrituras: Las escrituras entrantes de los servicios ReFS se escriben de tres maneras distintas:

  1. Escrituras en el 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 dar servicio a esta escritura, ReFS escribirá en el reflejo. Captura de pantalla que muestra cómo escribe el servicio ReFS en el reflejo.
  2. Escribe en mirror, reasignado desde 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 dar servicio a la escritura entrante, ReFS invalidará primero los datos anteriores en paridad y, a continuación, 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 escritura realizado para la paridad. Captura de pantalla que muestra cómo escribe el servicio ReFS en el reflejo, reasignado a partir de la paridad.

  3. Escribe en paridad:

    Si ReFS no encuentra correctamente suficiente espacio libre en el reflejo, ReFS escribirá datos nuevos para la paridad o modificará directamente los datos existentes en la paridad. En la sección "Optimizaciones de rendimiento" siguiente se proporcionan instrucciones que ayudan a minimizar las escrituras en la paridad. Captura de pantalla que muestra cómo escribe el servicio ReFS en la paridad.

Lee: ReFS leerá directamente desde el nivel que contiene los datos pertinentes. Si la paridad se construye con DS, la memoria caché de Espacios de almacenamiento Direct 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

Escrituras: Cada tipo de escritura descrita anteriormente tiene sus propias características de rendimiento. En términos generales, las escrituras en el nivel reflejado son mucho más rápidas que las escrituras reasignadas, y las escrituras reasignadas son significativamente más rápidas que las realizadas directamente en el nivel de paridad. Esta relación se ilustra con la desigualdad siguiente:

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

Lee: No hay ningún impacto significativo y negativo en el rendimiento al leer desde 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 distintos tipos de medios (DS reflejados, DS de paridad, por ejemplo), la memoria caché deEspacios de almacenamiento Direct ayudará a almacenar en caché los datos de acceso rápido para acelerar las lecturas desde la paridad.

Compactación de ReFS

En la versión semesual de esta caída, ReFS presenta la compactación, lo que mejora considerablemente el rendimiento de los volúmenes de paridad acelerada por reflejo que están llenos al 90 %.

Fondo: Anteriormente, a medida que los volúmenes de paridad acelerada por reflejo se llenaba, el rendimiento de estos volúmenes podía disminuir. El rendimiento se degrada porque los datos fríos y en caliente se mezclan a lo largo del volumen a lo largo del tiempo. Esto significa que los datos con menos frecuencia se pueden almacenar en el reflejo, ya que los datos en frío ocupan espacio en el reflejo que, de lo contrario, podrían usarse en los datos de accesos más utilizados. El almacenamiento de datos en caliente en el 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 la paridad. Por lo tanto, tener datos en frío 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 al liberar espacio en el reflejo para los datos de acceso rápido. En primer lugar, la compactación consolida todos los datos,tanto del reflejo como de la paridad, a la 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 de acceso activa de nuevo en el reflejo:

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

Optimizaciones de rendimiento

Importante

Se recomienda colocar discos duros virtuales con mucha escritura en subdirectorios diferentes. 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 actividad 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 describió anteriormente en la sección Escribir en paridad, ReFS escribirá directamente en la paridad cuando no encuentre espacio libre en el reflejo. Por lo general, esto sucede cuando el nivel reflejado se llena más rápido de lo que ReFS puede girar los datos a la paridad. En otras palabras, la rotación de ReFS no puede mantenerse al día con la tasa de ingesta. Los siguientes contadores de rendimiento identifican cuándo 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 son distintos de cero, esto indica que ReFS no está girando los datos lo suficientemente rápido fuera del reflejo. Para ayudar a mitigar esto, se puede cambiar la agresividad de rotación o aumentar el tamaño del nivel reflejado.

Agresividad de rotación

ReFS comienza a rotar 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 tiempo. Dejar los datos en caliente en el nivel reflejado es óptimo para el rendimiento, pero ReFS no podrá dar servicio de forma eficaz a grandes cantidades de E/S entrantes.
  • Los valores más bajos permiten a ReFS desasegerir de forma proactiva los datos e ingerir mejor la E/S entrante. Esto es aplicable a cargas de trabajo con mucha ingesta, como el almacenamiento de archivo. Sin embargo, los valores más bajos podrían degradar el rendimiento de las cargas de trabajo de uso general. La rotación innecesaria de datos fuera del nivel reflejado conlleva una penalización en el rendimiento.

ReFS introduce 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 Espacios de almacenamiento Direct y se requiere un reinicio para que los cambios sumen 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 valores inferiores al 50 %. El siguiente 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 Espacios de almacenamiento Direct, 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. 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 Resize-Volumes.

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 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, vea Creación de volúmenes en Espacios de almacenamiento Direct.

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

Referencias adicionales