Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Background
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.
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:
E/S en paridad acelerada por reflejo
IO behavior
Writes: ReFS services incoming writes in three distinct ways:
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.
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.
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.
Reads: ReFS will read directly from the tier containing the relevant data. 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.
Note
Las lecturas nunca hacen que ReFS vuelva a mover los datos al nivel de espejo.
IO performance
Writes: Each type of write described above has its own performance characteristics. 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
Reads: There is no meaningful, negative performance impact when reading from parity:
- 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.
ReFS compaction
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 %.
Background: Previously, as mirror-accelerated parity volumes became full, the performance of these volumes could degrade. 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.
Performance optimizations
Important
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.
Performance counters
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.
Rotation aggressiveness
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.
- Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies
- ValueName (DWORD): DataDestageSsdFillRatioThreshold
- ValueType: Percentage
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
Tip
Make sure to resize the Partition and Volume after you resize the 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