Currently Being Moderated

Hola a todos,

 

El otro día, en uno de los eventos que comentaba en el post anterior, tuve una interesante conversación sobre este tema, y me comentasteis que estaría bien hablar un poco más sobre esto, así que ahí va este post.

 

Hace unos años, cuando hablábamos de los sistemas de almacenamiento pensábamos en dos tipos de arquitecturas, los frame-array y los modulares.

 

Los primeros son sistemas altamente redundantes, creados a base de un hardware muy especializado, normalmente en armarios de diseño específico que incluyen parte de los conexionados ya precableados, o incluso en forma de ”mid-planes”, y que en general siguen el siguente diagrama lógico:

 

FrameArray.jpg

 

Normalmente el número de puertos o “motores” de conexión, tanto en el front-end como en el back-end, es variable, lo mismo pasa con la cantidad de caché, siendo la única constante el bus de interconexión que se utiliza para conectar todos los elementos, que tienen un gran ancho de banda, y que suele formar parte del chasis o armario en el que se conectan los elementos.

 

Por otro lado, los sistemas modulares están formados por una pareja de controladoras que tienen accesibles una serie de bandejas de disco, y que se ocupan de controlar los discos y de dar servicio de front-end al mismo tiempo, con un digrama lógico como este:

 

modular.jpg

 

Una de las grandes diferencias es que estos sistemas modulares utilizan componentes hardware más estándar, y así podemos encontrar CPUs de los principales fabricantes, por ejemplo en nuestro caso actualmente utilizamos Intel Xeon, puertos de conexión en forma de tarjetas iguales a parecidas a las Emulex o Qlogic que hay en los servidores, memoria convencional, etc.

 

Hay una parte común a ambas arquitecturas, y resulta ser una parte fundamental, que son los discos. En ambas arquitecturas todos los fabricantes utilizamos los mismos discos, que vienen a ser SATA para alto volumen, actualmente en tamaños hasta 4TB y 7200rpms, SAS para alto rendimiento, con tamaños de hasta 900GB y 15000rpms, y SSDs para el máximo rendimiento, con tamaños que actualmente están en 200GB para la tecnología SLC y 800GB para MLC.

 

Este detalle es muy importante, puesto que los discos condicionan el rendimiento del sistema de almacenamiento en la mayoría de los casos, y si bien con mayor o menor cantidad de memoria caché podemos cambiar esto un poco, en nuestro día a día, casi todos los dimensionamientos que hacemos terminan contando el número de discos físicos que conectamos, lo cual deja en las mismas condiciones las dos arquitecturas: frame-array y modulares.

 

Otro factor diferente es que los sistemas modulares implementan casi toda su funcionalidad en base a un sistema operativo que mediante desarrollo software hace una u otra cosa, mientras que los frame-arrays se apoyan más en hardware, contando con circuitería específica para varias de las operaciones más costosas, y contando con un firmware que “programa” parte de este hardware. En la práctica el resultado es muy parecido: mediante software se necesita algo de potencia extra para realizar las operaciones, pero dada la potencia de los procesadores actuales, esto no suele ser un problema. A cambio se cuenta con una mayor flexibilidad en el desarrollo de los equipos, más funcionalidades y mayor velocidad en la inclusión de nuevas funcionalidades en los sistema modulares.

 

Esta diferencias de “implementación” puede llevar a diferencias de rendimiento que podemos llegar a medir, hay algunos microsegundos de diferencia entre implementar las cosas por hardware y hacerlas por software, pero dado que los datos terminan “viajando” a los discos, que funcionan en el siguiente orden de magnitud, el de los milisegundos, las diferencias en la práctica son muy pocas, salvo que estemos construyendo un entorno “sub-milisegundo”, y para ellos lo mejor es pensar en Flash, y un equipo de este tipo.

 

Las ventajas para las arquitecturas frame-array son, a mi entender, principalmente dos:

 

                A-Mayores niveles de disponibilidad, fruto de una mayor redundancia en el hardware y de configuraciones menos flexibles que obligan a tener todos los componentes redundantes.

 

                B-Las posibilidades de escalabilidad, pudiendo construir sistemas que son más grandes, con mayor cantidad de disco, rendimiento y mayor cantidad de puertos de entrada/salida.

 

Respecto al apartado A, solo añadir que en muchos casos los equipos modulares se pueden configurar sin puntos únicos de fallo, pero no se suele hacer por un tema de coste. Normalmente el punto de fallo que nos solemos “olvidar” son las bandejas que albergan los discos, y que son componentes prácticamente pasivos. En el caso de los equipos de NetApp es bastante sencillo realizar configuraciones donde los discos de un grupo RAID de distribuyan entre varias bandejas, de forma que se pueda sobrevivir al fallo completo de una bandeja … solo hace falta poner unas cuantas bandejas de más.

 

¿y qué es eso del Flex-Array?

 

Pues el término me lo he inventado yo, espero que nadie lo tenga ya patentado, y viene a contar lo que estamos haciendo con los nuevos sistemas de almacenamiento en cluster de NetApp. Ya hemos hablado algo de Clustered ONTAP, y siendo muy breve, nuestra nueva arquitectura nos permite construir sistemas de almacenamiento modulares que crecen en horizontal, añadiendo más controladoras y discos a un sistema existente.

En NetApp siempre hemos hecho sistemas modulares, utilizando componentes estándar del mercado, que nos permiten optimizar el balance entre rendimiento, capacidad y coste. Nuestros equipos utilizando Clustered ONTAP utilizan el mismo hardware que veníamos utilizando hasta ahora en la familia FAS, pero cambiamos el software y añadimos una red de interconexión entre los nodos. El diagrama queda así:

 

cluster.jpg

 

Una vez funcionando, nuestros equipos realizan una separación en dos capas del servicio de almacenamiento, las llamamos disk-blade (D-Blade) y network-blade (N-blade), ambas residen en cada una de las controladoras, quedando la foto así:

 

cluster-logico.png

 

Si me dejáis cambiar el orden de las cajas, nuestra arquitectura en Clustered ONTAP la podríamos dibujar así:

 

flexarray.jpg

 

Y efectivamente, esto se parece mucho mucho a la arquitectura de un frame-array realizado con componentes modulares, y con una red de interconexión de 10GbE y switches estándar, en lugar  de un bus de propósito específico. Una diferencia es que la caché está distribuida, lo cual tiene cosas buenas y malas.

 

Esta arquitectura resuelve el punto B que le poníamos como pega a los sistemas modulares, ahora podemos crecer tanto o más que los frame-array, pero frente a ellos, podemos empezar con solo dos controladoras y una bandeja de discos, crecer en caliente y a medida, ya sea para conseguir mayor capacidad, rendimiento o disponibilidad … esto es un FLEX-ARRAY.

 

La ventajas de nuestros flex-arrays, es que tienen toda la funcionalidad propia de los equipos modulares, como por ejemplo clonados eficientes, thin-provisioning, deduplicación de datos primarios, …, dan servicio de almacenamiento unificado con todos los protocolos SAN y NAS, y tienen un coste menor que los frame-arrays al tener componentes estándares y construcción modular.

 

Pero hay una ventaja más, para mí la más importante: Un frame-array está compuesto por un chasis central, donde se alojan todos los buses de interconexión, el corazón del equipo, y componentes que se pueden añadir, en forma de bandejas de discos o tarjetas adicionales. Si nos quedamos sin espacio para crecer el frame-array, este estará “agotado”, sin capacidad de escalar más, y lo más importante, cuando tengamos que renovar el equipo, tendremos que instalar uno completamente nuevo, copiarle todos los datos realizando una migración, ya sea con una copia de datos entre cabinas o desde los servidores, pero en cualquier caso, con impacto en el servicio y con intervenciones por la noche para realizar los cambios.

 

Por el contrario, en nuestros flex-arrays, se pueden añadir y quitar componentes libremente, incluyendo los switches de interconexión, que dado que están redundados, se pueden renovar o ampliar de forma alternativa sin parar el servicio. Adicionalmente, los datos que se están almacenando se pueden mover en caliente, sin parar el servicio, de una controladora y grupo de discos a cualquier otra controladora del cluster y grupo de discos diferente. Esto permite añadir controladoras nuevas y mover los servicios de almacenamiento de las antiguas a las nuevas, realizando una renovación tecnológica en caliente, añadir controladoras y discos de menor coste y mover ciertos servicios a una solución más económica … es la flexibilidad llevada al mundo de los frame-array, y es lo que me hace pensar que estamos ante un nuevo paradigma en el mundo de los sistemas de almacenamiento, el de los FLEX-ARRAYS.

 

Saludos

Comments

Filter Blog

By date:
By tag: