FAST VP sobre almacenamiento Unity: cómo funciona

Hoy hablaremos sobre una tecnología interesante implementada en el sistema de almacenamiento Unity / Unity XT: FAST VP. Si ha oído hablar de Unity por primera vez, puede utilizar el enlace al final del artículo para familiarizarse con las características del sistema. Trabajé en FAST VP durante más de un año en el equipo de diseño de Dell EMC. Hoy quiero hablar más sobre esta tecnología y revelar algunos detalles de su implementación. Por supuesto, sólo aquellos a los que se les permite revelarse. Si está interesado en las cuestiones del almacenamiento eficiente de datos o simplemente no comprende completamente la documentación, este artículo sin duda le resultará útil e interesante.

FAST VP sobre almacenamiento Unity: cómo funciona

Te diré de inmediato lo que no estará en el material. No habrá búsqueda de competidores ni comparación con ellos. Tampoco planeo hablar sobre tecnologías similares de código abierto, porque el lector curioso ya las conoce. Y, por supuesto, no voy a anunciar nada.

niveles de almacenamiento. Metas y objetivos de FAST VP

FAST VP significa Almacenamiento en niveles totalmente automatizado para grupos virtuales. ¿Es difícil? Nada, lo resolveremos. La organización en niveles es una forma de organizar el almacenamiento de datos, en la que hay varios niveles (tiers) donde se almacenan estos datos. Cada uno tiene sus propias características. Los más importantes: rendimiento, volumen y precio de almacenar una unidad de información. Por supuesto, existe una relación entre ellos.

Una característica importante de la organización por niveles es que el acceso a los datos se proporciona de manera uniforme, independientemente del nivel de almacenamiento en el que se encuentren actualmente, y el tamaño del grupo es igual a la suma de los tamaños de los recursos incluidos en él. Aquí radica la diferencia con el caché: el tamaño del caché no se suma a la cantidad total del recurso (el grupo en este caso), y los datos del caché duplican algunos datos del medio principal (o se duplicarán si el los datos de la caché aún no se han escrito). Además, la distribución de datos por niveles está oculta al usuario. Es decir, no ve exactamente qué datos se encuentran en cada nivel, aunque puede influir en esto indirectamente, estableciendo políticas (sobre ellas más adelante).

Ahora veamos las características de la implementación del almacenamiento por niveles en Unity. En Unity, hay 3 niveles o tiers:

  • Rendimiento extremo (SSD)
  • Rendimiento (disco duro SAS 10k/15k RPM)
  • Capacidad (NL-SAS HDD 7200 RPM)

Se presentan en orden descendente de prestaciones y precio. El rendimiento extremo incluye solo unidades de estado sólido (SSD). En los otros dos niveles hay unidades de disco magnético que se diferencian en la velocidad de rotación y, en consecuencia, en el rendimiento.

Los medios de almacenamiento del mismo nivel y del mismo tamaño se combinan en una matriz RAID, formando un grupo RAID (grupo RAID, abreviado como RG); Puede leer sobre los niveles RAID disponibles y recomendados en la documentación oficial. A partir de grupos RAID de uno o más niveles se forman grupos de almacenamiento, a partir de los cuales se distribuye el espacio libre. Y ya desde el grupo se asigna espacio para sistemas de archivos y LUN.

FAST VP sobre almacenamiento Unity: cómo funciona

¿Por qué necesito niveles?

En resumen y abstracto: para lograr más resultados con la menor cantidad de recursos. Más concretamente, el resultado suele entenderse como un conjunto de características del sistema de almacenamiento: la velocidad y el tiempo de acceso, el coste del almacenamiento, etc. El mínimo de recursos significa el menor costo: dinero, energía, etc. FAST VP simplemente implementa los mecanismos para redistribuir datos en diferentes niveles en el sistema de almacenamiento Unity/Unity XT. Si me cree, puede saltarse el siguiente párrafo. Por lo demás os cuento un poquito más.

Al clasificar los datos en niveles de manera adecuada, puede ahorrar en el costo general de almacenamiento al sacrificar la velocidad de acceso a información que rara vez se usa y mejorar el rendimiento al mover los datos a los que se accede con frecuencia a medios más rápidos. Aquí alguien puede objetar que incluso sin niveles, un administrador normal sabe dónde colocar qué datos, qué características del sistema de almacenamiento son deseables para su tarea, etc. Claro, esto es cierto, pero la distribución de datos "manualmente" tiene sus inconvenientes:

  • requiere tiempo y atención del administrador;
  • no siempre es posible "remodelar" los recursos de almacenamiento en condiciones cambiantes;
  • Desaparece una ventaja importante: el acceso unificado a recursos ubicados en diferentes niveles de almacenamiento.

Para que los administradores de almacenamiento se preocupen menos por la seguridad laboral, agregaré que aquí también es necesaria una planificación competente de los recursos. Ahora que se describieron brevemente las tareas de niveles, veamos qué puede esperar de FAST VP. Este es el momento de volver a la definición. Las dos primeras palabras, Totalmente automatizado, se traducen literalmente como "totalmente automatizado" y significan que la distribución de niveles se produce automáticamente. Bueno, Virtual Pool es un grupo de datos que incluye recursos de diferentes niveles de almacenamiento. Así es como se ve:

FAST VP sobre almacenamiento Unity: cómo funciona

De cara al futuro, diré que FAST VP solo mueve datos dentro de un único grupo, y no entre varios grupos.

Tareas resueltas por FAST VP

Primero hablemos de manera abstracta. Tenemos un grupo y algún mecanismo que puede redistribuir datos dentro de este grupo. Teniendo presente que nuestra tarea es lograr la máxima productividad, preguntémonos: ¿de qué maneras se puede lograr? Puede haber varios de ellos, y aquí FAST VP tiene algo que ofrecer al usuario, ya que la tecnología es algo más que solo almacenamiento en niveles. A continuación se muestran algunas formas en que FAST VP puede aumentar el rendimiento del grupo:

  • Distribución de datos en diferentes tipos de discos, niveles.
  • Distribución de datos entre discos del mismo tipo.
  • Distribución de datos al ampliar el pool.

Antes de ver cómo se realizan estas tareas, necesitamos conocer algunos datos esenciales sobre cómo funciona FAST VP. FAST VP opera con bloques de cierto tamaño: 256 megabytes. Este es el "fragmento" contiguo más pequeño de datos que se puede mover. En la documentación, se llama así: segmento. Desde el punto de vista de FAST VP, todos los grupos RAID constan de un conjunto de "piezas" de este tipo. En consecuencia, se acumulan todas las estadísticas de E/S para dichos bloques de datos. ¿Por qué se elige este tamaño de bloque y se reducirá? El bloque es bastante grande, pero se trata de un compromiso entre la granularidad de los datos (un tamaño de bloque más pequeño, una distribución más precisa) y los recursos informáticos disponibles: con las severas restricciones existentes en la RAM y una gran cantidad de bloques, los datos estadísticos pueden ocupar demasiado, y el número de cálculos crecerá proporcionalmente.

Cómo FAST VP coloca los datos en el grupo. Políticos

Para controlar la ubicación de datos en un grupo con FAST VP habilitado, existen las siguientes políticas:

  • Nivel más alto disponible
  • Nivel automático
  • Inicio alto y luego nivel automático (predeterminado)
  • Nivel más bajo disponible

Afectan tanto a la asignación inicial del bloque (primero se escriben los datos) como a la reasignación posterior. Cuando los datos ya estén colocados en los discos, la reasignación se iniciará según lo programado o manualmente.

El nivel más alto disponible intenta colocar el nuevo bloque en el nivel de mayor rendimiento. Si no hay suficiente espacio en él, el siguiente en términos de rendimiento, pero luego los datos se pueden mover a un nivel más productivo (si hay espacio o desplaza otros datos). Auto-Tier coloca nuevos datos en diferentes niveles según la cantidad de espacio disponible y los redistribuye según la demanda y el espacio libre. Iniciar alto y luego nivel automático es la política predeterminada y también se recomienda. Inicialmente funciona como el nivel más alto disponible y luego mueve los datos según las estadísticas de uso. La política del nivel más bajo disponible busca colocar los datos en el nivel de menor rendimiento.

La transferencia de datos tiene una prioridad baja para no interferir con el trabajo útil del sistema de almacenamiento, sin embargo, hay una configuración de "Tasa de reubicación de datos" que cambia la prioridad. Aquí hay una peculiaridad: no todos los bloques de datos tienen el mismo orden de redistribución. Por ejemplo, los bloques marcados como metadatos se moverán primero al nivel más rápido. Los metadatos son, por así decirlo, "datos sobre datos", alguna información adicional que no son datos del usuario, pero almacenan su descripción. Por ejemplo, información en el sistema de archivos sobre en qué bloque se encuentra un archivo en particular. Esto significa que la velocidad de acceso a los datos depende de la velocidad de acceso a los metadatos. Dado que los metadatos suelen ser mucho más pequeños, se espera que los beneficios de trasladarlos a discos más rápidos sean mayores.

Criterios que Fast VP utiliza en su trabajo

El criterio principal para cada bloque, aunque sea de forma muy aproximada, es la característica de la "demanda" de datos, que depende del número de operaciones de lectura y escritura de un fragmento de datos. Esta característica se llama "Temperatura". Hay datos candentes que son más candentes que los datos no reclamados. Se calcula periódicamente, por defecto con un intervalo de una hora.

La función de cálculo de temperatura tiene las siguientes propiedades:

  • En ausencia de E/S, los datos se "enfrían" con el tiempo.
  • Con más o menos la misma carga en el tiempo, la temperatura primero aumenta y luego se estabiliza en un cierto rango.

Además, se tienen en cuenta las políticas descritas anteriormente y el espacio libre en cada nivel. Para mayor claridad, daré una imagen de la documentación. Aquí, los colores rojo, amarillo y azul indican bloques con temperaturas alta, media y baja, respectivamente.

FAST VP sobre almacenamiento Unity: cómo funciona

Pero volvamos a las tareas. Entonces, podemos comenzar a analizar qué se está haciendo para resolver los problemas de FAST VP.

A. Distribución de datos entre diferentes tipos de discos y niveles.

En realidad, esta es la tarea principal de FAST VP. El resto, en cierto sentido, son derivados de él. Según la política seleccionada, los datos se distribuirán en diferentes niveles de almacenamiento. En primer lugar se tiene en cuenta la política de ubicación, luego la temperatura de los bloques y el tamaño/velocidad de los grupos RAID.

Para las pólizas de nivel más alto/más bajo disponible, todo es bastante simple. Para los otros dos, este es el caso. Los datos se distribuyen en diferentes niveles, teniendo en cuenta el tamaño y el rendimiento de los grupos RAID: de modo que la relación entre la "temperatura" total de los bloques y el "rendimiento máximo condicional" de cada grupo RAID sea aproximadamente la misma. Así, la carga se distribuye de forma más o menos uniforme. Los datos que tienen más demanda se trasladan a medios más rápidos, los datos que se utilizan con poca frecuencia se trasladan a medios más lentos. Idealmente, la distribución debería verse así:

FAST VP sobre almacenamiento Unity: cómo funciona

B. Distribución de datos entre discos del mismo tipo

Recuerde, al principio escribí que los portadores de información de uno o mas ¿Los niveles se combinan en un grupo? En el caso de un solo nivel, FAST VP también tiene trabajo que hacer. Para maximizar el rendimiento en cualquier nivel, es deseable distribuir los datos de manera uniforme entre los discos. Esto permitirá (en teoría) obtener el número máximo de IOPS. Los datos dentro de un grupo RAID se pueden considerar distribuidos uniformemente entre los discos, pero este no siempre es el caso entre los grupos RAID. En caso de desequilibrio, FAST VP moverá datos entre grupos RAID en proporción a su tamaño y "rendimiento condicional" (en términos numéricos). Para mayor claridad, mostraré el esquema de reequilibrio entre tres grupos RAID:

FAST VP sobre almacenamiento Unity: cómo funciona

C. Distribución de datos al ampliar el pool

Esta tarea es un caso especial de la anterior y se realiza cuando se agrega un grupo RAID al grupo. Para evitar que el grupo RAID recién agregado esté inactivo, algunos de los datos se le transferirán, lo que significa que se redistribuirá la carga en todos los grupos RAID.

Nivelación de desgaste de SSD

A través de la nivelación de desgaste, FAST VP puede extender la vida útil de un SSD, aunque esta característica no está directamente relacionada con el almacenamiento en niveles. Como ya hay datos de temperatura, también se tiene en cuenta el número de operaciones de escritura, sabemos cómo mover bloques de datos, sería lógico que FAST VP también resolviera este problema.

Si la cantidad de escrituras en un grupo RAID excede significativamente la cantidad de escrituras en otro, FAST VP redistribuirá los datos de acuerdo con la cantidad de escrituras. Por un lado, esto elimina la carga y ahorra recursos de algunos discos, por otro lado, agrega "trabajo" a los menos cargados, aumentando el rendimiento general.

Por lo tanto, FAST VP asume las tareas tradicionales de Storage Tiering y hace un poco más que eso. Todo esto le permite almacenar datos de manera eficiente en el sistema de almacenamiento Unity.

Algunos consejos

  1. No dejes de leer la documentación. Existen mejores prácticas y funcionan bastante bien. Si los sigues, por regla general no surgen problemas graves. El resto de consejos básicamente los repiten o complementan.
  2. Si configuró y habilitó FAST VP, déjelo habilitado. Que asigne datos en el tiempo asignado y poco a poco, no una vez al año, y tendrá un impacto grave en el desempeño de otras tareas. En tales casos, la redistribución de datos puede llevar mucho tiempo.
  3. Tenga cuidado al elegir una ventana de reubicación. Aunque esto es obvio, intente elegir un momento con la menor carga en Unity y asigne una cantidad de tiempo suficiente.
  4. Planifica tu ampliación de almacenamiento, hazlo a tiempo. Esta es una recomendación general que también es importante para FAST VP. Si la cantidad de espacio libre es muy pequeña, el movimiento de datos se ralentizará o será imposible. Especialmente si descuidaste el punto 2.
  5. Al expandir un grupo con FAST VP habilitado, no comience con las unidades más lentas. Es decir, agregamos todos los grupos RAID planificados a la vez o agregamos primero los discos más rápidos. En este caso, la redistribución de datos a nuevos discos "rápidos" aumentará la velocidad general del grupo. De lo contrario, comenzando con discos "lentos", puede surgir una situación muy desagradable. Primero, los datos se transferirán a discos nuevos y relativamente lentos y luego, al agregar discos más rápidos, en la dirección opuesta. Hay matices asociados con las diferentes políticas de FAST VP, pero en el caso general esta situación es posible.

Si está considerando este producto, puede probar Unity en acción de forma gratuita descargando el dispositivo virtual Unity VSA.

FAST VP sobre almacenamiento Unity: cómo funciona

Al final del artículo, comparto algunos enlaces útiles:

Conclusión

Quiero escribir sobre muchas cosas, pero entiendo que no todos los detalles serán de interés para el lector. Por ejemplo, puede hablar con más detalle sobre los criterios por los cuales FAST VP decide transferir datos, sobre los procesos para analizar las estadísticas de E/S. Además, el tema de la interacción con Grupos dinámicos, y esto se incluye en un artículo aparte. Incluso puedes fantasear con el desarrollo de esta tecnología. Espero que no haya sido aburrido y no os haya aburrido. ¡Nos vemos pronto!

Fuente: habr.com

Añadir un comentario