jueves, 20 de julio de 2017

Consideraciones (preventa) de rendimiento y desempeño


Siguiendo esta breve serie, hoy quiero revisar algunas de las consideraciones de rendimiento y desempeño a tener en cuenta al momento de diseñar el almacenamiento.

Si desea revisar las entradas anteriores acá estan los enlaces:

Algunas consideraciones (preventa) para almacenamiento
Consideraciones de Conectividad y de Capacidad





Consideraciones de Rendimiento y Desempeño

En cuanto al rendimiento, desde el punto de vista de capacidad de un disco individual o sistema de almacenamiento, hay que tener en cuenta principalmente 3 variables: IOPS (Input Output por segundo), latencia y throughput. Revisemos estos conceptos:


IOPS (Input Output por segundo)

Input Output por segundo (IOPS) es el término que se da a la cantidad de operaciones de lectura y/o escritura que pueden ser efectuadas en un segundo de tiempo. Es un término muy usado para mostrar las fortalezas de un sistema de almacenamiento, pero es importante tener en cuenta que es solo una característica parcial para demostrar desempeño, y no se debe basar uns decisión sólo en IOps.

En un sistema de almacenamiento, los IOPS que se obtienen son la suma de varios factores, como por ejemplo la cantidad y tipo de discos mecánicos o unidades SSD, la cantidad y tipos de arreglos creados, memroria caché de las controladoras del almacenamiento, capa de caché basada en SSD, software de optimización de acceso a las capas (tiers), la relación de lectura/escritura, así como el tamaño de cada requerimiento de I/O.

Como vemos, no es tan sencillo hablar de IOps. Por ejemplo, si analizamos el tamaño del requerimiento Input/Output (I/O size) notaremos que éste varía dependiendo del sistema operativo y las aplicaciones o servicios que hagan requerimientos de I/O al almacenamiento. El tamaño del I/O size suele medirse en KB (4 KB, 8 KB, 32 KB, etcétera).

La recomendación acá, como siempre, es entender y analizar todas (o la mayor cantidad) de variables, con el fin de obtener un diseño de almacenamiento aterrizado y acorde al requerimiento.


Latencia

En sistemas de almacenamiento, el término latencia se asocia al tiempo en que una operación de lectura/escritura demora en ser realizada (completada) desde que solicita hasta que se confirma. La latencia se la mide en milisegundos (ms), generalmente es el resultado de la suma de varios retardos o latencias acumuladas. Como es obvio, a menor latencia tendremos mejor desempeño de un sistema de almacenamiento.




Los discos mecánicos (HDD) son uno de los componentes que generan mayor latencia en un sistema de almacenamiento (por la latencia rotacional, tiempo de búsqueda, etcétera). Por esta razón se buscan medidas para mitigar el impacto de la "lentitud" de los HDD, como caché SDD, discos híbridos, mayor cantidad de discos, arreglos de discos, entre otros.

Acá la recomendación nuevamente es entender el requerimiento, porque tener un sistema con poca o nula latencia se podría conseguir con unidades SSD, pero sin duda eso tendría un impacto en el presupuesto, y si no existe la clara necesidad de tener esos niveles de desempeño, puede hacer un proyecto inviable económicamente.


Throughput

El throughput es la cantidad de información que un disco o sistema de almacenamiento es capaz de brindar en un periodo de tiempo. Suele ser expresado en Megabytes por segundo (MB/s) y es una de las variables que en ocasiones no es tomada en cuenta, pero es muy importante para conocer la capacidad de un disco o sistema de almacenamiento.





De hecho, hay una relación directa entre el throughput y IOPS que un sistema de almacenamiento puede generar, dependiendo del tamaño de I/O:


Throughput (MB/s) = Tamaño I/O (promedio) x IOPS


De acá podemos deducir que si el tamaño de I/O es pequeño, podemos obtener un gran número de IOPS y cierto nivel de throughput.

Así mismo con un mayor tamaño de I/O, vamos a obtener menos IOPS, pero el monto de throughput será el mismo.

Por ejemplo un sistema de almacenamiento que ofrezca 100,000 IOPS en bloques de 4K genera 400 MB/s; ese mismo sistema con un bloque de 32K generará 12,500 IOPS, con los mismos 400 MB/s (estos valores asumen lecturas secuenciales).

Como vemos, es muy importante considerar todas las variables, y esto se consigue conociendo realmante el requerimiento del cliente, y no solo fijarnos en la capacidad requerida.

Espero sea de utilidad. Hasta la próxima.



Algunas referencias:

Es común confundir el Throughput con Bandwidth. Acá hay un breve video que explica en forma simple esta diferencia: https://www.youtube.com/watch?v=VWxGtl5J7WM


miércoles, 5 de julio de 2017

Consideraciones de Conectividad y de Capacidad

Hace unos días escribí unas breves notas con consideraciones que, desde el punto de vista de preventa, sugiero tener en cuenta al momento de dimensionar una solución de almacenamiento.

Ahora voy a detallar mejor las consideraciones a tener en cuenta respecto de la conectividad y la capacidad.

Consideraciones de conectividad

La conectividad en ocasiones es una variable que no se puede elegir, porque el cliente ya posee infraestructura para este propósito. Sin embargo, hay que tener en cuenta las diferencias para hacer las sugerencias técnicas para el correcto dimensionamiento de la solución. En general, los entornos que se analizan están basado en protocolo Fibra Canal y protocolo Ethernet.

Fibra Canal (FC)


Si la conectividad es por Fibra Canal, es importante validar la compatibilidad de velocidad, en especial cuando ya existe alguna solución de almacenamiento. Los sistemas vigentes soportan velocidades de hasta 16 Gbps, con capacidad de auto negociación a 8 Gbps y hasta 4 Gbps, pero eso dependerá también de la infraestructura de los switches SAN disponibles. Acá es importante tener en cuenta que es probable requerir actualizaciones de firmware, y es mandatorio que exista soporte con el fabricante de los mismos para este propósito.







En el caso de los cables usados, se recomienda el uso de cables OM3 y OM4: la principal diferencia entre estos cables es la distancia que se soportan dependiendo de la velocidad a usar. Por ejemplo, en una red SAN a 16Gbps, usar cables OM3 permiten hasta 100 metros, en cambio con cables OM4 se consiguen hasta 125 metros.

Ethernet



En conectividad Ethernet, las velocidades usadas son 1GbE y 10GbE, con auto-negociación. Es importante definir la infraestructura de red existente, porque aunque al estar basado en IP se puede usar los mismo componentes de red LAN, se debe buscar separar las redes (LAN y SAN-IP) de forma física o lógica (VLANs) y evitar problemas de rendimiento (como sobre-suscripción) o de seguridad.

Para Ethernet existe conectividad en cobre o fibra, de modo que es necesaro validar que los switches tengan disponibilidad de puertos. Es recomendable usar fibra si la velocidad es 10GbE, especialmente por mayores distancias soportadas, y deben seguirse las recomendaciones de los fabricantes en las configuraciones de los switches, como por ejemplo el uso de Jumbo Frames (MTU 9000) o control de flujo (Flow Control).


Consideraciones de Capacidad


La capacidad requerida es uno de los factores más "sencillos" de determinar cuando se dimensiona una solución de almacenamiento, y esto hace que sea una de las variables en que más se pueden cometer errores.

Por eso es importante tener en cuenta ciertas variables, como por ejemplo:

Capacidad de los discos y unidades SSD


El sistema binario normalmente es usado para determinar capacidad y velocidad de los diferentes componentes de TI, pero la nomenclatura usada describe el sistema decimal. Es así que un Megabyte (MB) se considera 2^20 bytes, pero realmente un Megabyte es igual a 10^6 bytes. Como aclaración 2^20 bytes es igual a 1 MiB (1 Mebibyte).






Esta diferencia puede generar confusiones y problemas con el dimensionamiento, porque mientras los fabricantes de discos usan el sistema decimal, algunos sistemas operativos usan el sistema binario, y genera diferencias en su capacidad real. En este blog hay una entrada que detalla este tema con mayor profundidad.


La sugerencia acá es utilizar las herramientas de los mismo fabricantes para conocer la capacidad real de un sistema de almacenaiento (por ejemplo Dell EMC ofrece el Unity Sizer); si eso no existe, es mejor considerar aproximaciones conservadoras.

Arreglos de discos


Los arreglos de discos (conocidos como RAID) permiten protegerse contra fallas individuales de discos y/o además obtener mejoras de rendimiento. Existen diferentes tipos o niveles de arreglos, cada uno con ventajas y desventajas, así como implicaciones de capacidad usable.


Discos de reemplazo (Hot Spare)


Para aumentar la disponibilidad en la soluciones de almacenamiento es recomendable el uso de discos de reemplazo (Hot Spare ó HS). Los discos HS tiene la función de reemplazar cualquier disco averiado dentro de un arreglo de discos, y por esta razón no se debe considerar dentro de la capacidad total del almacenamiento.

Caché de almacenamiento


Existen soluciones que soportan capas de caché de almacenamiento basadas en unidades de estado sólido (SSD). En general, esta capa de SSD no se considera en la capacidad total del almacenamiento, sino que se utiliza para obtener altos rendimientos en especial para las operaciones de lectura.

Espacio para snapshot y clones


Los snapshots (imágen instantáneas) y clones en los sistemas de almacenamientos son usados para respaldos, escenarios de pruebas, replicación, etcétera. En el dimensionamiento deben considerarse el espacio que se dedicará para estos propósitos, y puede ser muy variable dependiendo de las tecnologías a usar.

Por ejemplo, la replicación de Zerto estima entre un 7% y 10% adicional de la capacidad de las máquinas virtuales para su CDP (journaling).

Provisionamiento por demanda




Una de las tecnologías más útiles y usadas en la actualidad es el aprovisionamiento por demanda o Thin Provisioning. La principal ventaja es que posibilidad de sobre-aprovisionar el espacio requerido para una máquina virtual o física, pero se debe tener cuidado con los límites reales del espacio disponible, así como el impacto en rendimiento que puede tener en la plataforma (especialmente si se hace del lado de los servidores y no del almacenamiento).

Crecimiento de la capacidad


La capacidad de almacenamiento de un cliente suele estar afectada por 2 tipos de crecimiento: el crecimiento de datos por la información generada por los sistemas actuales, y el crecimiento generada por el aumento de usuarios y/o nuevos servicios.

Esta información es normalmente proveída por el cliente, y lo que se debe buscar es cotejar esa información con los datos recabados durante el levantamiento de información, porque el cliente tiende a sobre-dimensionar el requerimiento de espacio requerido.

Personalmente suelo utilizar la herramienta DPACK (Dell Perfomance Analysis Collection Kit) porque se cero invasiva (no requiere instalación ni agentes) y permite conocer en línea el comportamiento de la infraestructura (capacidad de almacenamiento, rendimiento por IOps, uso de CPU, memoria RAM entre otros) de forma gráfica sencilla.


Espero sean de utilidad estas breves notas, quizá sea de interés también:



domingo, 2 de julio de 2017

Algunas consideraciones (preventa) para almacenamiento


El almacenamiento es uno de los componentes claves dentro de la arquitectura de TI, más aún que en la actualidad tecnologías ya maduras como la virtualización de infraestructura, aplicaciones de audio/vídeo, volúmenes de datos no estructurados (Big Data), vídeo vigilancia y otras, son generadores de gran cantidad de nuevos datos de forma constante.



Es por esto que al evaluar  una solución de almaceamiento para TI es muy importante elegir la opción que se ajuste más a los requerimientos actuales y futuros del negocio.

Estas breves notas buscan repasar algunos de los tipos de almacenamiento más frecuentes y algunas guías para su elección y configuración, desde el punto de vista de preventa, y por ende no pretende ser una fuente en profundidad de tecnologías de almacenamiento.

Generalidades


Por su forma de acceso a los datos, podemos dividir los almacenamientos en 3 grandes grupos: acceso por bloques, acceso por sistema de archivo, y almacenamiento de objetos.

A los sistemas de almacenamiento basados en bloques se los conoce como SAN (Storage Area Network, aunque no es preciso llamarlo así) y a los basados en archivos se conoce como NAS (Network Attached Storage).

Acceso por bloques


Los datos se almacenan en unidades, que se conocen como bloques y que en su conjunto forman unidades de mayor capacidad conocidas como Unidades Lógicas (LUN) y/o almacenes de datos (datastores).
El acceso por bloques utilizar, entre otros, uno de los siguientes protocolos: SAS, FC, iSCSI, FCoE e Infiniband.

SAS (Serial Attached SCSI)


SAS y SATA son los protocolos que de los discos usan para comunicarse con los sistemas de almacenamiento. En general para entornos de almacenamiento corporativo se usas SAS 3ra Gen (SAS-3 @ 12Gbps).



Pero el protocolo SAS-3 se usa también para la comunicación entre los sistemas de almacenamiento y los servidores. Estos sistemas se denominan DAS (Direct Attached Storage), y anteriormente implicaban la no compartición, pero hoy existen sistemas SAS que permiten compartir su almacenamiento entre varios servidores, aunque normalmente con un número muy limitado de conexiones.


Fibre Channel (FC)


El protocolo de fibra canal (FC) ha sido por mucho tiempo casi un estándar para la implementación de redes de almacenamiento (SAN) de alto desempeño, principalmente a su excelente velocidad de comunicación, tecnología non-blocking, muy baja latencia y soporta largas distancias (comparado con SCSI). Actualmente tenemos, comercialmente disponible, FC a 16 Gbps, y generalmente hay compatibilidad con 2 generaciones previas al menos (4 Gbps, 8 Gbps), que se comunican con los servidores (hosts) por medio de tarjetas HBA.


Internet SCSI (iSCSI)


iSCSI es un protocolo de comunicaciones para almacenamiento que utiliza el protocolo Ethernet (TCP) para encapsular paquetes SCSI, de modo que "cualquier" red LAN se puede utilizar para implementar una red de almacenamiento utilizando los mismos componentes (tarjetas de red (NIC), switches, cables, etc.). Al usar redes Ethernet, se obtienen algunas ventajas como la capacidad nativa de enrutamiento, distancia casi ilimitada, velocidad de 10/40 Gbps, y menores costos de implementación. Su principal desventaja puede ser la velocidad (no hay priorización), si no se usa una red dedicada para iSCSI.

Es común intentar comparar iSCSI a 10GbE con FC 8Gbps, y la realidad es que aunque la velocidad de iSCSI 10GbE es mayor a FC 8Gbps, el ancho de banda es comparable porque el protocolo FC es más eficiente que el protocolo Ethernet.

Fibre Channel over Ethernet (FCoE)


FCoE es un protocolo que canal de fibra vía redes Ethernet, pero no es IP enrutable. Para superar la falta de priorización de Ethernet, para FCoE al estándar Ethernet debe añadirse capacidades de Data Center Brinding. Al estar sobre redes Ethernet, se pueden implementar sobre redes de 10/40Gbps.

Su uso principal es en entornos convergentes, en donde se dispone de una red  de alta velocidad para uso de LAN y SAN, ahorrando componente activos (como switches) y pasivos (cableado, paneles, etcétera), en especial en configuraciones ToR (Top-of-the-Rack).


InfiniBand


InfiniBand es un protocolo maduro, con latencias muy bajas y alto ancho de banda, que se usa principalmente en soluciones que requieren conectividad de muy alta velocidad, como redes de cómputo de alto desempeño (HPC), y como red de interconexión BackEnd entre nodos en sistemas de almacenamiento, como por ejemplo sistemas Dell EMC Isilon.

Actualmente se tienen velocidades de 40 y 100 Gbps. En general son soluciones más costosas que FC y redes Ethernet, tanto en términos de costos administrativos como operativos, y además existen muy pocos proveedores de hardware para esta tecnología.

Acceso por archivos


Los datos se almacenan como archivos o ficheros en una estructura previamente definidas en un formato con estructura, denominado Sistema de Archivos (File System). Para este acceso se utilizan principalmente los protocolos NFS y SMB (CIFS).


NFS (Network File System)


NFS (Network File System, Sistema de archivos de red) es un protocolo cliente/servidor que permite compartir archivos, originalmente desarrollado por Sun Microsystems para entornos Unix usando protocolo Ethernet, y por tanto su velocidad depende de la infraestructura Ethernet sobre la que esté implementado. Hay 3 versiones actualmente NFSv2, NFSv3, NFSv4 y, aunque originalmente fue diseñado para compartir archivos, actualmente existen implementaciones que permiten su uso en entornos de bloques (como por ejemplo Nutanix DFS).


SMB (Server Message Block)


SMB es un protocolo de red tipo cliente/servidor, para compartir archivos u otro recursos en una red de equipos Windows. Originalmente desarrollador por IBM, tiene sus variantes como el CIFS (Microsoft) y Samba (Linux). Al igual que NFS, se rendimiento depende de la infraestructura de red Ethernet sobre la que está implementada. Las versiones más recientes son SMB 3.0, SMB 3.1.1, y su uso está principalmente enfocado en compartir archivos, aunque desde la versi;on SMB 3.0 Microsoft soporta ejecución de máquinas virtuales de Hyper-V desde repositorios basados en SMB.

Espero sean de utilidad estas breves notas, y pronto extenderé este blog con:
  • Consideraciones de Conectividad
  • Consideraciones de Capacidad
  • Consideraciones de Rendimiento.