Sistema de archivos distribuido: el verdadero habilitador de la hiperconvergencia

Algunos colegas del medio TI con quienes he interactuado, argumentan que la hiperconvergencia va en contravía de lo que dicta la arquitectura del Software Defined Datacenter: abstraer las funciones claves del centro de datos lejos de las especificaciones y limitaciones del hardware. Y esto lo mencionan pues –dicen- el funcionamiento y beneficios de la hiperconvergencia están atados a una arquitectura de hardware pre-definida y rígida.

Sin embargo la realidad de la  hiperconvergencia (o Integrated Systems como los llaman los analistas), que busca unificar la mayor cantidad de funciones clave del centro de datos en nodos –teóricamente- independientes y autónomos entre sí para que en suma operen como un gran bloque unificado; puede convertir la apreciación de mis colegas en una ventaja competitiva.

Y es que, en mi opinión, contar con una arquitectura de hardware predefinida puede brindar múltiples beneficios acogidos, de nuevo por el enfoque webscale:

  • Funcionalidades predecibles: debido a que, por naturaleza, hiperconvergencia se trata de una muy estrecha integración entre software y hardware, si minimizo el riesgo de incompatibilidad en la capa de hardware, puedo confiar en que obtendré las mismas características de software siempre, y son éstas últimas las que realmente interesan y aportan valor. Esto es como un mundo nuevo: no más Hardware Compatibiliy Lists o particularidades del hardware que impiden la actualización del sistema operativo (hipervisor) que allí se ejecuta y bloquea nuevas funcionalidades.
  • Menor carga operacional: lo sé, suena a bullet point de una presentación de ventas. Pero es un aspecto de diseño muy importante y pocas veces tenido en cuenta. Si el hardware se compone de elementos estándard con interconexiones y configuración pre-establecidas, se reduce considerablemente el esfuerzo de desplegar infraestructura para el centro de datos, manteniendo la homogeneidad.

La salsa secreta

Honestamente, ensamblar servidores con un factor de forma reducido (tipo half-width) en un chassis con funciones de interconexión de red y un software de administración es algo que prácticamente todo fabricante ha hecho y seguirá haciendo: antes se llamaban blade chassis, tiempo después con algo de sofisticación y variando el factor de forma se rebautizó como convergencia. Nada nuevo allí.

Solo hay 4 recursos que en realidad se pueden gestionar en el datacenter virtualizado: cómputo (memoria + CPU), redes, almacenamiento  y seguridad. Aún no ha visto la luz un mecanismo para agregar CPU y RAM a lo largo de un clúster –esto es, que si cuento con dos servidores físicos y creo una VM con 2 GB de RAM, 1 GB provenga del servidor 1 y el otro 1 GB del servidor 2. En cuanto a las redes existen diferentes mecanismos pero, desde el punto de vista de un puerto de switch, una sesión TCP particular en un sólo sentido no se distribuye tampoco a lo largo de múltiples puertos en simultánea.

Pero, ¿que hay del almacenamiento? Podría alguien lograr que, si asigno capacidad a una VM ésta provenga de más de una fuente simultáneamente? Eso sería la materialización de mi principal petición al enfoque webscale.

Pues bien, de éso precisamente se trata un sistema de archivos distribuido que en mi opinión, es la verdadera diferencia entre convergencia e hiperconvergencia. En otras palabras, me atrevería a decir que cualquier oferta actual de HCI (Hyper-converged infrastructure) sin un mecanismo para agregar y gestionar el almacenamiento de manera unificada no es verdadera HCI.

Ahora bien, la fuente de ese almacenamiento es lo que tiene el verdadero mérito: almacenamiento local en los servidores. Si, DAS (Direct Attached Storage) de aquel que se huye si uno busca hacer uso de características avanzadas en un hipervisor y que – a pesar de sus considerables ventajas como alto desempeño (si está bien diseñado), bajo costo- ha sido históricamente desplazado por los arreglos SAN.

Recordando mi anterior post: si pudiese unir varios hosts con discos locales a un clúster y el sistema de archivos agregara toda esa capacidad para gestionarla de manera unificada, entonces definitivamente tendría la vía fuera de la SAN.

Eso es lo que actualmente ofrece VMware con Virtual SAN y otros fabricantes. Sin embargo a cada quien lo que corresponde: sin ser un experto, veo en el sistema de almacenamiento de Nutanix una implementación especialmente madura y eficiente: me refiero al Distributed Storage Fabric (DSF).

Por longitud, lo trataré en posts posteriores pero solo cabe resaltar que Nutanix tampoco ignora que la salsa secreta es el DSF en principio; no en vano el buen Steven Poitras lo menciona como el componente que está en el corazón y el nacimiento mismo de la compañia.

Saludos!

Advertisements

Principios de operación de los Discos de Estado Sólido (SSD)

Hola, espero cuentes con tiempo para algo de profundidad técnica (sólo la necesaria).

La motivación del presente post proviene de la lectura y revisión del libro “Inside Solid State Drives” publicado por Springer Science (algo que hice mayormente en la playa durante mis más recientes vacaciones familiares). El libro aborda con una considerable profundidad técnica los principios físicos y los mecanismos computacionales bajo los cuales operan los discos de estado sólido (Solid State Drives) que siguen ganando terreno en el datacenter y cuyo protagonismo es indudable como parte de la estrategia de optimización de desempeño para los usuarios empresariales de la nube.

El principal objetivo de éste post, que inicialmente fué una presentación para el personal interno de ingeniería del Service Provider para el que trabajaba, es aportar bases teóricas para toma de decisiones así como para el diseño de soluciones basadas en discos de tipo NAND-flash.

Origen de los SSD

No pretende esta sección ser un compendio histórico acerca del origen de los SSD, pero si es necesario anotar el vacío que pretenden ocupar en los diferentes tipos de almacenamiento de datos presentes en el mercado. La siguiente imagen, tomada del libro, puede ilustrar mejor:

ssd01

Velocidad de acceso vs. precio para diferentes tipos de medios de almacenamiento

Si bien los discos duros (Hard Disk Drives HDDs) rotacionales ocupan una vasta extensión de las implementaciones actuales de almacenamiento, presentan un mayor consumo medio de potencia y una menor resistencia al choque cuando se les compara con los SSD, frente a los cuales sus principales ventajas son el menor Costo Total de Adquisición y mayores capacidades disponibles en el mercado.

Por otro lado los SSD pueden brindar el desempeño que se obtiene de fuentes volátiles de almacenamiento como las DRAM (memorias) pero con la posibilidad de retener los datos por hasta 10 años sin polarización (es decir, con el dispositivo apagado), entregando una menor tasa TCO/IOPS a lo largo de su ciclo de vida.

Arquitectura de los SSD y el bus PCI

ssd02

Estructura básica de una celda de NAND Flash

La celda, o Non Volatile Memory (NVM) es una clase especial de MOSFET (transistor de efecto de campo) que cuenta con un mecanismo muy ingenioso -del que Schottky estaría orgulloso- que fué propuesto a finales de los años 60 por la profesora Susan Sze (¿y quien no estudió con uno de sus libros de Semiconductor Physics? ) y que con consiste en una compuerta flotante (Floating Gate) que operando como un capacitor de placas paralelas y que controlando el voltaje en la compuerta de control (Control Gate) puede almacenar electrones por hasta 10 años, que es el período de retención más comúnmente encontrado en los dispositivos disponibles en el mercado.

¿Cuántos electrones puede almacenar? Esto está determinado por el tipo de disco que se adquiere:

  • SLC: Single Level Cell puede almacenar solo un electrón. Por ellos las capacidades ofrecidas son menores pero al tener que operar solo 1 bit, su duración es mayor.
  • MLC: Multiple Level Cell puede almacenar dos electrones. Brinda mayor capacidad a costo de menor número de ciclos erase/write disponibles.

Los SSD se acomodan en arreglos cuyos bit line se conectan en forma serial y responden a la lógica de la compuerta NAND, de ahi que se conozcan como NAND arrays. En esa configuración un arreglo NAND se compone de 8192 bloques, cada uno de 64 páginas y cada página de 4k bytes. La página es la unidad mínima de escritura mientras que el bloque es la unidad mínima de borrado, de ahi que ésta última operación sea más intensiva para un arreglo de SSDs.

Finalmente, las celdas NVM implementan dos operaciones: program (almacenamiento de bits) y erase (remoción de bits).

Confiabilidad de los SSD

Si bien el objetivo de los fabricantes de dispositivos Flash es almacenar la carga por al menos 10 años, los electrones en la compuerta flotante pueden escapar de su lugar por varios mecanismos pero principalmente por la degradación del óxido que actúa como aislante y que se agota debido al constante tunelamiento (que es como se conoce en física del estado sólido a toda situación en que una partícula atraviesa niveles de energía por la acción de una fuerza externa) en las operaciones de program/erase.

Cuando los electrones escapan de la FG (Floating Gate) se pueden acumular en superficies de la celda NVM creando trampas de carga que son como escalones que progresivamente facilitan aún más el escape de nuevos electrones, lo que a la larga reduce el voltaje de umbral que es el pilar de operación de un MOSFET y el que altera su estado de encedido a apagado y viceversa.

ssd07

Voltaje de umbral vs. tiempo de retención de datos

En la gráfica anterior se puede evidenciar la degradación del voltaje de umbral a lo largo de los años de uso. Si éste voltaje baja mas allá del nivel de lectura (read level) el memory controller puede marcar esa celda como borrada aunque haya electrones allí almacenados (pérdida inmediata de datos).

Por otro lado si los electrones se fugan hacia el substrato por tunelamiento, ésto puede elevar el voltaje de umbral necesario para activar la celda, y puede llegar al punto que el memory controller marque la celda como escrita o inválida aunque esté vacía, afectando la capacidad disponible y el desempeño del arreglo.

En la gráfica anterior el rango entre no carga y el read level se conoce como Ventana de lectura, y en ésto no todos los SSDs son creados iguales: los MLC tienen menor endurance (durabilidad) pues su ventana de lectura es una fracción de aquella en los SLC, por lo que una pequeña (y muy probable) variación del voltaje de umbral ya produce los errores mencionados anteriormente.

Funciones del Memory Controller

  • Wear leveling: busca nivelar el número de ciclos program/erase a lo largo de las celdas en un arreglo NAND. Lo lleva a cabo mapeando updates de un sector lógico hacia un sector físico diferente mientras que el sector físico original se marca como inválido.
  • Garbage collection: elimina las copias obsoletas, aunque genera operaciones adicionales de write al mover la última copia válida al sector libre para eliminar el bloque inválido
  • Implementa el Error Correction Code seleccionado por el fabricante
  • Desarrolla las labores de Bad Block Management

La amplificación de Write: ¿de dónde viene?

El diagrama a continuación enuncia los pasos lógicos que lleva a cabo el memory controller y que resultan en amplificación de las operaciones de escritura:

ssd05La definición del WAF (Write Amplification Factor) se resume en la tasa entre la cantidad de datos efectivamente escritos al flash sobre la cantidad de datos enviados por el host para escritura al SSD. Esta información debe ser obtenida  tanto en el lado del host como del memory controller, para las que los fabricantes como Samsung, Intel, Kingston, Sandisk, entre otros suelen proveer herramientas.

Es posible reducir el WAF que viene de fábrica asignándole más espacio de bloques libres (y no utilizables) al disco SSD, lo que se conoce como Overprovisioning. Es decir, otorgándole más espacio libre a la controladora desde el nacimiento del arreglo. Este procedimiento también se conoce como under-formatting y lo veremos un poco más ampliado a continuación.

Overprovisioning

El espacio de reserva en un SSD (ó spare space) tiene como objetivo proveer una bodega de bloques libres que el memory controller usa para su proceso de garbage collection y escrituras temporales. La asignación de este espacio de repuesto se conoce como overprovisioning en el argot de los Flash y constituye el limite último de vida de un SSD: una vez el spare space se agota, el disco alcanza el endurance y no recibe actualizaciones a bloques ya escritos, momento en que el host (que en el argot Flash es todo aquello por encima del memory controller) debe marcarlo como fallido.

ssd06

Diagrama lógico de un SSD con espacio libre previamente reservado (Overprovisioning/underformatting)

El bus PCI

Esta basado en carriles (lanes) seriales donde cada uno se comunica de forma Full Dúplex a velocidades que en PCIe Gen 3 alcanzan 1 GB/s por carril.

ssd03

Comunicación por carriles entre dispositivos PCI y hacia el root (board)

Los dispositivos PCI funcionan con un número de carriles que va entre 1 y 32 lo que está definido por el tamaño del slot (x1, x4,…, x32).

El bus PCI se comunica punto a punto entre dispositivos por lo que actualmente se obtienen tasas de transferencia varios órdenes de magnitud por arriba de interfaces como SATA, por lo que se constituyen como una mejor opción para obtener el mayor rendimiento de los discos SSD.

ssd04

Comparativo de desempeño entre interfaces de conexión al almacenamiento

En otras palabras: si realmente necesita explotar el potencial de desempeño de un SSD, debe considerar el uso de PCIe como interface hacia los discos, no los tradicionales buses SATA.

El lugar de los SSD en el datacenter

Debido a las limitaciones inherentes a la operación de las celdas NVM, y que cubriré mas adelante, los SSD no constituyen una cura para todos los males y deben ser apropiadamente elegidos dentro del diseño de la infraestructura convergente que hoy se requiere. Está generalmente aceptado en la academia y la industria que los arreglos NAND tienen una afectación mínima en desempeño debida a búsquedas de pequeños archivos y metadatos mientras que su rendimiento en escritura se ve negativamente impactado por las operaciones que lleva a cabo el memory controller para tratar de alargar la vida útil del disco (lo que se mide con el factor de amplificación de escrituras o WAF por sus siglas en inglés).

Es por lo tanto, una aplicación ampliamente aceptada de los SSD en el datacenter el utilizarlos para mover allí lecturas frecuentes mientras que las escrituras frecuentes van a los HDD. Decidir que operacion (lectura/escritura) atraviesa un umbral de frecuencia para ser movido automáticamente al tipo de disco apropiado es una tarea del software de control sobre los SSD, por lo que la mitad del éxito en una estrategia all-flash le corresponde al software de control: si se conectan discos SSD a controladoras que no los administran como tal y si sobre esa capa no hay una que administre datos frecuentes/infrecuentes, se perderá gran parte del beneficio del almacenamiento flash al tiempo que se pondrán en riesgos cargas de trabajo que dependan del Flash para escrituras, en lo que tiene un desempeño y durabilidad limitadas.

 

 

Recursos adicionales

Intel ha publicado una guía que se aplica para discos SSD incluso de otros fabricantes sobre cómo modificar el spare space, pues de esa manera podría elevarse el endurance natural de un disco a costo de menor capacidad disponible

Para hacer pruebas significativas a discos SSD, es necesario llevar a cabo preconditioning que consiste en hacer escrituras aleatorias al arreglo para que entre a operar el algoritmo de Wear Leveling. Este y otros métodos se explican en éste post.

Finalmente una herramienta para llevar a cabo estas pruebas.

Preguntas/aportes son bienvenidas en los comentarios.

Saludos!