Compartir a través de


Reconocimiento de la caché del grupo de almacenamiento

Se aplica a: Azure Stack HCI, versiones 22H2 y 21H2; Windows Server 2022, Windows Server 2019

Espacios de almacenamiento directo, la tecnología de virtualización de almacenamiento fundamental detrás de Azure Stack HCI y Windows Server, cuenta con una caché integrada del lado servidor para maximizar el rendimiento del almacenamiento y reducir los costos. Es una caché grande, persistente y en tiempo real para lectura y escritura que se configura automáticamente tras la implementación. En la mayoría de los casos, no se requiere ninguna administración manual. El funcionamiento de la caché depende de los tipos de unidades presentes.

Tipos de unidad y opciones de implementación

Storage Spaces Direct funciona actualmente con cuatro tipos de unidades:

Tipo de unidad Descripción
PMem PMem hace referencia a la memoria persistente, un nuevo tipo de almacenamiento de baja latencia y alto rendimiento.
NVMe NVMe (Express de memoria no volátil) hace referencia a unidades de estado sólido que se encuentran directamente en el bus PCIe. Los factores de forma habituales son U.2 de 2,5", PCIe Add-In-Card (AIC) y M.2. NVMe ofrece un mayor rendimiento de IOPS y de E/S con una latencia menor que cualquier otro tipo de unidad que admitimos actualmente, excepto PMem.
SSD SSD hace referencia a unidades de estado sólido, que se conectan a través de SATA o SAS convencionales.
Disco duro HDD hace referencia a unidades de disco duro magnéticas rotacionales, que ofrecen una gran capacidad de almacenamiento a un bajo costo.

Estos se pueden combinar de varias maneras, que agrupamos en dos categorías: "todo flash" e "híbrido". No se admiten implementaciones con todos los HDD.

Nota:

En este artículo se tratan las configuraciones de caché con NVMe, SSD y HDD. Para obtener información sobre el uso de la memoria persistente como caché, consulte Descripción e implementación de la memoria persistente.

Opciones de implementación con almacenamiento totalmente flash

Las implementaciones totalmente flash tienen como objetivo maximizar el rendimiento del almacenamiento y no incluyen discos duros tradicionales (HDD).

El diagrama muestra las implementaciones completamente en flash, que incluyen NVMe para capacidad, NVMe para caché con SSD para capacidad, y SSD para capacidad.

Posibilidades de implementación híbrida

Las implementaciones híbridas tienen como objetivo equilibrar el rendimiento y la capacidad, o maximizar la capacidad, y sí incluyen HDD.

En el diagrama se muestran las implementaciones híbridas, incluido NVMe para caché con HDD para capacidad, SSD para caché con HDD para capacidad y NVMe para caché con HDD más SSD para capacidad.

Nota:

La implementación híbrida no se admite en la configuración de servidor único. Todas las configuraciones de tipo de almacenamiento único plano (por ejemplo, all-NVMe o all-SSD) son el único tipo de almacenamiento admitido para un solo servidor.

Las unidades de caché se seleccionan automáticamente

En las implementaciones con varios tipos de unidades, Espacios de almacenamiento directo usa automáticamente todas las unidades del tipo más rápido para el almacenamiento en caché. Las unidades restantes se usan para la capacidad.

Qué tipo es "más rápido" se determina según la siguiente jerarquía.

En el diagrama se muestran los tipos de disco organizados más rápidos a más lentos en el orden de NVMe, SSD, disco sin etiquetar que representa HDD.

Por ejemplo, si se dispone de NVMe y SSD, la caché NVMe para los SSD.

Si tiene SSD y HDD, los SSD sirven de caché para los HDD.

Nota:

Las unidades de caché no contribuyen a la capacidad de almacenamiento utilizable al clúster. Todos los datos almacenados en la memoria caché también se almacenan en otro lugar, o lo estarán una vez que se descargue. Esto significa que la capacidad total de almacenamiento bruto de su clúster es solo la suma de sus unidades de disco de capacidad.

Cuando todas las unidades tienen el mismo tipo, no se configura automáticamente ninguna memoria caché. Tiene la opción de configurar manualmente unidades de mayor resistencia para almacenar en caché unidades de menor resistencia del mismo tipo: consulte la sección Configuración manual para obtener información sobre cómo hacerlo.

Sugerencia

En algunos casos, el uso de la caché del bloque de almacenamiento no tiene sentido. Por ejemplo, en las implementaciones all-NVMe o all-SSD, especialmente a pequeña escala, no tener unidades "gastadas" en la memoria caché puede mejorar la eficiencia del almacenamiento y maximizar el rendimiento. Del mismo modo, las implementaciones remotas o de sucursales pequeñas pueden tener espacio limitado para las unidades de caché.

El comportamiento de la caché se establece automáticamente

El comportamiento de la memoria caché se determina automáticamente en función de los tipos de unidades que se almacenan en caché. Al almacenar en caché las unidades flash (como el almacenamiento en caché nvMe para SSD), solo se almacenan en caché las escrituras. Cuando se almacena en caché para unidades de disco giratorias (como las SSD que almacenan en caché para HDD), se almacenan en caché tanto las lecturas como las escrituras.

Diagrama que compara el almacenamiento en caché para all-flash, donde las escrituras se almacenan en caché y las lecturas no son, con híbrido, donde se almacenan en caché tanto lecturas como escrituras.

Almacenamiento en caché de solo escritura para implementaciones totalmente flash

El almacenamiento en caché se puede usar en un escenario de todo flash, por ejemplo, mediante NVMe como caché para acelerar el rendimiento de los SSD. Cuando se almacena en caché para implementaciones totalmente flash, solo se almacenan en caché las escrituras. Esto reduce el desgaste de las unidades de capacidad porque muchas escrituras y reescrituras pueden combinarse en la memoria caché y luego descargarse solo según sea necesario, lo que reduce el tráfico acumulado a las unidades de capacidad y amplía su vida útil. Recomendamos seleccionar unidades de mayor resistencia y optimizadas para escritura para la memoria caché. Las unidades de mayor capacidad pueden tener razonablemente una menor resistencia a la escritura.

Dado que las lecturas no afectan significativamente a la duración del flash y, dado que los SSD ofrecen universalmente una latencia de lectura baja, las lecturas no se almacenan en caché: se sirven directamente desde las unidades de capacidad (excepto cuando los datos se escribieron tan recientemente que aún no se han destagedido). Esto permite que la memoria caché se dedique completamente a las escrituras, maximizando su eficacia.

Esto da como resultado características de escritura, como la latencia de escritura, que las unidades de caché dictan, mientras que las características de lectura las dictan las unidades de capacidad. Ambos son coherentes, predecibles y uniformes.

Almacenamiento en caché de lectura y escritura para implementaciones híbridas

Al usar la caché para HDD, tanto las lecturas como las escrituras se almacenan en memoria caché, para proporcionar una latencia similar a la de las unidades flash (a menudo ~10 veces mejor). La caché de lectura almacena datos de lectura recientes y con frecuencia para obtener acceso rápido y para minimizar el tráfico aleatorio a los DISCOS DUROS. (Debido a retrasos de búsqueda y rotación, la latencia y el tiempo perdido que incurre el acceso aleatorio a un HDD son significativos). Las escrituras se almacenan temporalmente en caché para absorber ráfagas y, como antes, para fusionar escrituras y reescrituras y minimizar el tráfico acumulado a las unidades de capacidad.

El Espacios de almacenamiento directo implementa un algoritmo que desaleatoriza las escrituras antes de enviarlas a disco, con el fin de emular un patrón de entrada y salida que parece secuencial, incluso cuando las operaciones de E/S reales provenientes de la carga de trabajo (como las máquinas virtuales) son aleatorias. Esto maximiza los IOPS y el rendimiento de los discos duros.

Almacenamiento en caché en implementaciones con NVMe, SSD y HDD

Cuando las unidades de los tres tipos están presentes, las unidades NVMe proporcionan almacenamiento en caché tanto para los SSD como para los HDD. El comportamiento es como se describió anteriormente: solo las escrituras se almacenan en caché para los SSD y las lecturas y escrituras se almacenan en caché para los DISCOS DUROS. La carga del almacenamiento en caché de los discos DUROS se distribuye uniformemente entre las unidades de caché.

Resumen

En esta tabla se resumen las unidades que se usan para el almacenamiento en caché, que se usan para la capacidad, y cuál es el comportamiento del almacenamiento en caché para cada posibilidad de implementación.

Despliegue Unidades de caché Unidades de capacidad Comportamiento de caché (valor predeterminado)
Todos los NVMe None (Opcional: configurar manualmente) NVMe Solo escritura (si está configurado)
Todos los SSD None (Opcional: configurar manualmente) unidad de estado sólido (SSD) Solo escritura (si está configurado)
NVMe + SSD NVMe unidad de estado sólido (SSD) Solo escritura
NVMe + Disco duro NVMe Disco duro Lectura y escritura
SSD + HDD unidad de estado sólido (SSD) Disco duro Lectura y escritura
NVMe + SSD + HDD NVMe SSD + HDD Lectura y escritura para HDD, solo escritura para SSD

Arquitectura del lado servidor

La memoria caché se implementa en el nivel de unidad: las unidades de caché individuales dentro de un servidor están enlazadas a una o varias unidades de capacidad dentro del mismo servidor.

Dado que la caché está por debajo del resto de la pila de almacenamiento definido por software de Windows, no tiene ni necesita conocer conceptos como Espacios de almacenamiento o tolerancia a errores. Puede considerarlo como la creación de unidades "híbridas" (parte flash, parte disco) que luego se presentan al sistema operativo. Al igual que con una unidad híbrida real, el movimiento en tiempo real de datos calientes y fríos entre las partes más rápidas y lentas del medio físico es casi invisible desde el exterior.

Dado que la resistencia en Espacios de almacenamiento directo es al menos de nivel de servidor (lo que significa que las copias de datos siempre se escriben en servidores diferentes; como máximo una copia por servidor), los datos de la memoria caché se benefician de la misma resistencia que los datos que no están en la memoria caché.

El diagrama representa tres servidores unidos por un espejo de tres vías en una capa de Espacios de Almacenamiento, que accede a una capa de caché de unidades NVMe que acceden a unidades de capacidad sin etiquetar.

Por ejemplo, al usar el mirroring de tres vías, se escriben tres copias de los datos en servidores diferentes, donde llegan a memoria caché. Independientemente de que luego se destruyan o no, siempre existen tres copias.

La vinculación de unidades es dinámica

La unión entre las unidades de caché y las de capacidad puede tener cualquier proporción, desde 1:1 hasta 1:12 y más allá. Se ajusta dinámicamente cada vez que se agregan o retiran unidades, como cuando se amplía o después de errores. Esto significa que puede agregar unidades de caché o unidades de capacidad de forma independiente, siempre que desee.

El diagrama animado muestra dos unidades de caché NVMe que se mapean dinámicamente primero a cuatro, luego a seis y finalmente a ocho unidades de capacidad.

Se recomienda hacer que el número de unidades de capacidad sea un múltiplo del número de unidades de caché, para la simetría. Por ejemplo, si tiene 4 unidades de caché, experimentará un rendimiento más uniforme con 8 unidades de capacidad (relación de 1:2) que con 7 o 9.

Gestión de fallos de la unidad de caché

Cuando se produce un error en una unidad de caché, las escrituras que aún no se han desetiquetado se pierden en el servidor local, lo que significa que solo existen en las demás copias (en otros servidores). Al igual que tras cualquier otra falla de unidad, Storage Spaces puede, y de hecho lo hace, recuperarse automáticamente consultando las copias que han sobrevivido.

Durante un breve periodo de tiempo, las unidades de capacidad que estaban vinculadas a la unidad de caché perdida parecen no estar en buen estado. Una vez que se ha producido el reenlace de caché (automático) y se ha completado la reparación de datos (automática), vuelven a mostrarse como saludables.

Este escenario es el motivo por el que se requieren al menos dos unidades de caché por servidor para conservar el rendimiento.

En el diagrama animado se muestran dos unidades de caché SSD asignadas a seis unidades de capacidad hasta que se produce un error en una unidad de caché, lo que hace que las seis unidades se asignen a la unidad de caché restante.

A continuación, puede reemplazar la unidad de caché como lo haría con cualquier otra unidad.

Nota:

Es posible que debas apagar el equipo para reemplazar de forma segura una unidad NVMe en formato de tarjeta de complemento (AIC) o tipo M.2.

Relación con otras memorias caché

Hay otras cachés no relacionadas en la pila de almacenamiento definida por software de Windows. Algunos ejemplos son la caché de escritura de espacios de almacenamiento y la caché de lectura en memoria de volumen compartido en clúster (CSV).

Con Azure Stack HCI, la caché de reescritura de espacios de almacenamiento no se debe modificar a partir de su comportamiento predeterminado. Por ejemplo, no se deben usar parámetros como -WriteCacheSize en el cmdlet New-Volume .

Puede optar por usar la memoria caché CSV, o no, es su caso. Está activado de forma predeterminada en Azure Stack HCI, pero no entra en conflicto con la memoria caché descrita en este tema de ninguna manera. En determinados escenarios, puede proporcionar mejoras de rendimiento valiosas. Para más información, consulte Uso de la caché de lectura en memoria de CSV con Azure Stack HCI.

Configuración manual

En la mayoría de las implementaciones, no se requiere la configuración manual. En caso de que lo necesite, consulte las secciones siguientes.

Si necesita realizar cambios en el modelo de dispositivo de caché después de la instalación, edite el documento de Componentes de soporte del Servicio de Salud, como se describe en Información general del Servicio de Salud.

Especificación del modelo de unidad de caché

En implementaciones en las que todas las unidades tienen el mismo tipo, como todas las implementaciones nvMe o ssd, no se configura ninguna memoria caché porque Windows no puede distinguir características como la resistencia de escritura automáticamente entre unidades del mismo tipo.

Para usar unidades de mayor resistencia para almacenar en caché unidades de menor resistencia del mismo tipo, puede especificar qué modelo de unidad se va a usar con el parámetro -CacheDeviceModel del cmdlet Enable-ClusterS2D . Todos los discos de ese modelo se usan para el almacenamiento en caché.

Sugerencia

Asegúrese de que la cadena del modelo coincide exactamente con la que aparece en la salida de Get-PhysicalDisk.

Ejemplo

En primer lugar, obtenga una lista de discos físicos:

Get-PhysicalDisk | Group Model -NoElement

A continuación se muestra una salida de ejemplo:

Count Name
----- ----
    8 FABRIKAM NVME-1710
   16 CONTOSO NVME-1520

A continuación, escriba el comando siguiente y especifique el modelo de dispositivo de caché:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

Puede verificar que las unidades que tiene la intención de usar se están empleando para caché ejecutando Get-PhysicalDisk en PowerShell y comprobando que su propiedad Usage indica "Journal".

Posibilidades de implementación manual

La configuración manual permite las siguientes posibilidades de implementación:

En el diagrama se muestran las posibilidades de implementación, incluidas NVMe para la caché y la capacidad, SSD para la caché y la capacidad, y SSD para caché y SSD mixtos y HDD para capacidad.

Establecimiento del comportamiento de la caché

Es posible invalidar el comportamiento predeterminado de la memoria caché. Por ejemplo, puede establecerlo para almacenar en caché las lecturas incluso en una implementación completamente en flash. No se recomienda modificar el comportamiento a menos que esté seguro de que el valor predeterminado no se adapte a la carga de trabajo.

Para invalidar el comportamiento, use el cmdlet Set-ClusterStorageSpacesDirect y sus parámetros -CacheModeSSD y -CacheModeHDD . El parámetro CacheModeSSD establece el comportamiento de la caché cuando se almacena en caché para SSD. El parámetro CacheModeHDD establece el comportamiento de la memoria caché cuando se cachea en HDD.

Puede usar Get-ClusterStorageSpacesDirect para comprobar que el comportamiento está establecido.

Ejemplo

En primer lugar, obtenga la configuración de Espacios de Almacenamiento Directo:

Get-ClusterStorageSpacesDirect

A continuación se muestra una salida de ejemplo:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

A continuación, haga lo siguiente:

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

A continuación se muestra una salida de ejemplo:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

Ajuste del tamaño de la memoria caché

El tamaño de la memoria caché debe tener en cuenta el conjunto de trabajo (los datos que se leen o escriben activamente en un momento dado) de las aplicaciones y cargas de trabajo.

Esto es especialmente importante en las implementaciones híbridas con unidades de disco duro. Si el conjunto de trabajo activo supera el tamaño de la memoria caché, o si el conjunto de trabajo activo se desvía demasiado rápido, los fallos de caché de lectura aumentan y las escrituras deben gestionarse de forma más agresiva, lo que afecta al rendimiento general.

Puede usar la utilidad integrada Monitor de rendimiento (PerfMon.exe) en Windows para inspeccionar la tasa de errores de caché. Específicamente, puedes comparar las Lecturas por errores de caché por segundo del conjunto de contadores Disco duro híbrido de almacenamiento de clúster con las IOPS de lectura totales de tu implementación. Cada "disco híbrido" corresponde a una unidad de almacenamiento.

Por ejemplo, 2 unidades de caché enlazadas a 4 unidades de capacidad da como resultado 4 instancias de objeto "Disco híbrido" por servidor.

Monitor de rendimiento.

No existe una regla universal, pero si demasiadas lecturas omiten la caché, es posible que esta sea demasiado pequeña y debería considerar agregar unidades de caché para ampliarla. Puede agregar unidades de caché o unidades de capacidad de forma independiente siempre que desee.

Pasos siguientes

Para obtener información adicional sobre el almacenamiento, consulte también: