ASPECTOS DE SOFTWARE DE LA PLATAFORMA DE ALMACENAMIENTO FLASH A ESCALA DE RACK EMC DSSD D5 RESUMEN Este informe técnico describe los aspectos de software de la plataforma de almacenamiento flash a escala de rack EMC DSSD D5, incluidos el dispositivo y el software de DSSD instalados en clientes conectados al dispositivo. Incluye una descripción general de los conceptos y los detalles de la integración de las aplicaciones, y ofrece información sobre el rendimiento. Febrero de 2016 INFORME TÉCNICO Para obtener más información sobre cómo los productos, los servicios y las soluciones de EMC pueden ayudar a superar los retos de TI y del negocio, póngase en contacto con su representante local o con un reseller autorizado, visite mexico.emc.com (visite el sitio web de su país correspondiente) o explore y compare productos en EMC Store. Copyright © 2016 EMC Corporation. Todos los derechos reservados. EMC considera que la información de esta publicación es precisa en el momento de su publicación. La información está sujeta a cambios sin previo aviso. La información de esta publicación se proporciona “tal cual”. EMC Corporation no se hace responsable ni ofrece garantía de ningún tipo con respecto a la información de esta publicación y específicamente renuncia a toda garantía implícita de comerciabilidad o capacidad para un propósito determinado. El uso, la copia y la distribución de cualquier software de EMC descrito en esta publicación requieren una licencia de software correspondiente. Para obtener una lista actualizada de nombres de productos de EMC, consulte las marcas comerciales de EMC Corporation en www.mexico.emc.com (visite el sitio web de su país correspondiente). La marca denominativa NVMe es una marca comercial de NVM Express, Inc. Número de referencia H14907 2 TABLA DE CONTENIDO RESUMEN .............................................................................................. 4 PÚBLICO AL QUE VA DIRIGIDO ........................................................................ 5 DESCRIPCIÓN GENERAL ....................................................................... 5 DISPOSITIVO FLASH A ESCALA DE RACK EMC DSSD D5 ..................................... 5 SOLUCIÓN DEL PROBLEMA DE RENDIMIENTO DE I/O ......................................... 6 SOFTWARE DE EMC DSSD ............................................................................... 6 SOFTWARE DEL SISTEMA CLIENTE ....................................................... 8 CONTROLADOR DE BLOQUES Y SERVICIO DE DISPOSITIVO DE BLOQUES DE EMC DSSD D5 .......................................................................................... 9 FLOOD DIRECT MEMORY API ......................................................................... 10 PLUG-INS DE EMC DSSD ............................................................................... 11 PLUG-IN EMC DSSD HADOOP ........................................................................ 11 SOFTWARE DEL DISPOSITIVO EMC DSSD D5 ...................................... 12 OBJETOS Y FRAGMENTOS ............................................................................. 12 ADMINISTRACIÓN DEL DISPOSITIVO A TRAVÉS DE LA INTERFAZ DE LA LÍNEA DE COMANDOS Y LA APLICACIÓN WEB ............................................. 13 ADMINISTRACIÓN DEL OBJETO CLIENTE A TRAVÉS DE LA INTERFAZ DE LA LÍNEA DE COMANDOS ......................................................................... 17 RESUMEN DEL SOFTWARE EMC DSSD ................................................. 18 GLOSARIO .......................................................................................... 18 3 RESUMEN Las tendencias actuales en redes sociales, dispositivos móviles y el Internet de las cosas han creado una explosión de la cantidad de usuarios y dispositivos, lo cual da como resultado una inundación de datos. Big data cambia los requisitos de cargas de trabajos y exige arquitecturas orientadas al rendimiento. No solo se requiere capturar más datos a velocidades mucho más rápidas, sino que las organizaciones también buscan obtener una ventaja competitiva mediante el análisis de datos en tiempo real para capturar información exclusiva de su negocio. Considere el análisis de seguridad de las redes como un ejemplo. Este tema ha generado muchos titulares recientemente debido a las vulneraciones de seguridad que provocan la pérdida de los datos confidenciales de clientes. Para prevenir dichos eventos o reconocer las vulneraciones de seguridad en cuestión de minutos, las organizaciones necesitan realizar las siguientes acciones: Recopilar todos los datos de registro desde la red, que suelen ser terabytes por día Transformar los datos del registro en un formato en que los analistas puedan realizar análisis y buscar anomalías Habilitar varios tipos de análisis de los datos transformados para detectar amenazas de seguridad Este tipo de procesamiento hace un uso intensivo de los datos y el rendimiento, y es común en varios sectores, desde el financiero hasta el de procesamiento de alto rendimiento y la fabricación. Finanzas Defensa y fabricación Servicios de salud Investigación Telecomunicaciones Comercio minorista Figura 1: Sectores con cargas de trabajo de uso intensivo de datos y del rendimiento Estas son las tres categorías principales de cargas de trabajo y tecnologías utilizadas en varios de estos flujos de trabajo: Bases de datos y data warehouses de alto rendimiento: esta categoría incluye cualquier carga de trabajo crítica de negocios que se ejecuta en bases de datos existentes (como Oracle y Sybase), así como en bases de datos de procesamiento paralelo masivo (MPP) (como Teradata, Netezza y Greenplum). Las bases de datos en memoria y NoSQL suelen pertenecer a esta categoría. Ejecución de aplicaciones de alto rendimiento en HDFS: estas cargas de trabajo de analítica requieren un rendimiento empresarial más rápido y un uso más eficiente de la tecnología flash disponible actualmente con Hadoop tradicional. Esta categoría incluye tecnologías como HBase, varios SQL en tecnologías de Hadoop y otras tecnologías emergentes como Apache Spark. Aplicaciones personalizadas de alto rendimiento: esta categoría consiste en aplicaciones de uso intensivo de rendimiento e I/O que se ejecutan en varios sistemas de archivos de alto rendimiento (como GPFS y XFS). Es posible que cada una de estas categorías de cargas de trabajo y tecnologías por sí solas no sean capaces de respaldar un flujo de trabajo completo. Como resultado, los clientes generalmente usan una combinación de estos. Un problema común que experimentan las organizaciones que utilizan una o todas estas tecnologías son los cuellos de botella de I/O. Los cuellos de botella de I/O son provocados por el tiempo de procesamiento agregado cuando las aplicaciones deben pausarse mientras la información se lee o se escribe en medios de almacenamiento lentos y persistentes. Además del rendimiento de I/O más lento del almacenamiento comparado con la memoria principal, se requiere una latencia agregada desde la capa de red (Ethernet, Fibre Channel, Infiniband, etc.) para conectar nodos de aplicaciones con arreglos de almacenamiento compartido. 4 Actualmente, una forma de superar el cuello de botella de I/O creado por el delta de rendimiento de memoria/almacenamiento es la utilización de tarjetas de memoria flash PCI o discos SSD en el servidor, que acercan el almacenamiento a la memoria tras dejarlo dentro de un sistema cliente individual. Estas soluciones flash en el servidor son fáciles de instalar, pero tienen una gran cantidad de desventajas, incluidos una capacidad limitada, una capacidad anclada, IOPS anclados, datos anclados si el servidor o el almacenamiento fallan, e ineficiencias operacionales. Otra estrategia es la migración a los arreglos basados íntegramente en tecnología flash. Esta estrategia acelera el rendimiento del arreglo y supera los retos de la tecnología flash en el servidor, pero es más lenta que la tecnología flash en el servidor. El almacenamiento flash a escala de rack de EMC® DSSD™ D5™ elimina estas desventajas proporcionando una plataforma de almacenamiento innovadora que brinda I/O cuando se necesitan directamente a la aplicación, como lo haría el almacenamiento flash del servidor. Este informe técnico analiza los aspectos de software de DSSD D5, incluidos los componentes de software instalados y ejecutados en sistemas clientes conectados y el software que potencia al dispositivo D5. Cubre los retos inherentes de varias estrategias de almacenamiento y explica cómo D5 soluciona dichos retos. PÚBLICO AL QUE VA DIRIGIDO Este informe técnico está destinado a tomadores de decisiones de tecnología, arquitectos de centros de datos, arquitectos de almacenamiento y desarrolladores interesados en comprender DSSD D5 y sus funciones, así como los conceptos de diseño que permiten que D5 optimice el rendimiento. DESCRIPCIÓN GENERAL El rendimiento de I/O resulta un aspecto esencial en los centros de datos modernos. Algunas aplicaciones que usan infraestructuras existentes realizan sus tareas dentro del tiempo establecido. Tienen éxito a pesar de la gran diferencia entre la memoria y el almacenamiento, generalmente debido a que sus conjuntos de datos de trabajo, los datos que las aplicaciones usan activamente, son lo suficientemente pequeños para caber en la memoria. Pero varias aplicaciones de misión crítica se tardan demasiado en completar sus tareas, lo cual limita la ejecución y la agilidad comercial. En la mayoría de los casos, la ralentización se debe a un rendimiento de I/O insuficiente, tasas de transacción lentas (IOPS) o una latencia demasiado alta. Muchas de estas aplicaciones poseen enormes conjuntos de datos de trabajo que no caben en la memoria y, por ende, se ven limitados por el rendimiento de I/O del almacenamiento. Esta clase incluye varias aplicaciones de tercera plataforma, como aquellas que admiten big data, la analítica en tiempo real y el Internet de las cosas. Otras aplicaciones (como las bases de datos ACID) se regulan mediante la solicitud de escrituras de almacenamiento estables (escrituras que deben alcanzar a los medios de almacenamiento persistente) como parte del flujo de datos primario. Los dispositivos de almacenamiento DSSD D5 resuelven estos cuellos de botella, lo cual proporciona un rendimiento constante a las aplicaciones.1 Los factores que afectan el rendimiento de I/O (rendimiento, IOPS y latencia) incluyen hardware y software del lado del cliente, conectividad entre el sistema cliente y el almacenamiento, y hardware y software del lado del almacenamiento. Los productos DSSD utilizan una combinación de innovaciones de software y hardware, tanto del lado del almacenamiento como del sistema cliente, para lograr nuevos niveles de rendimiento. DISPOSITIVO FLASH A ESCALA DE RACK EMC DSSD D5 La tecnología flash a escala de rack de DSSD D5 ofrece almacenamiento flash compartido ultradenso de alto rendimiento, alta disponibilidad y muy baja latencia. D5 se conecta a cada nodo a través de PCIe Gen3 y aprovecha la tecnología NVMe™, que brinda el rendimiento de la tecnología flash con conexión PCI. A la vez, D5 es un dispositivo independiente que se encuentra desagregado del procesamiento, lo cual ofrece los beneficios del almacenamiento compartido. Se pueden conectar hasta 48 hosts mediante múltiples rutas al dispositivo de almacenamiento DSSD D5, lo cual permite acceder a un máximo de 100 TB de almacenamiento flash persistente útil a más de 10 millones de IOPS y 100 GB/s de rendimiento estable, todo con latencias que promedian los 100 μsec aproximadamente. Este rendimiento de I/O libera la nueva funcionalidad en aplicaciones existentes y habilita los nuevos tipos de aplicaciones, lo cual ayuda a las organizaciones a medida que solucionan nuevos tipos de problemas de nuevas maneras. D5 ofrece un almacenamiento compartido altamente confiable con un rendimiento superior a la tecnología flash de conexión directa local. Presenta varias competencias líderes del sector, incluidas las siguientes: Almacenamiento compartido de NVMe NVMe desde el espacio del usuario Dos módulos de almacenamiento de conexión directa PCIe de NVMe 1 Todas las funciones y el rendimiento descritos en este informe técnico son los esperados en la disponibilidad general de DSSD D5, pero podrían cambiar sin previo aviso. 5 Cableado de conexión directa PCIe de NVMe RAID verdaderamente multidimensional DSSD D5 presenta el primer Cubic RaidTM del sector, una función de protección de datos continua patentada que brinda más protección con una sobrecarga muy baja, calculada en solo un 17 %. Con DSSD, big data ahora puede convertirse en big data en tiempo real, y los trabajos que se realizaban durante la noche ahora se pueden llevar a cabo en tiempo real. Los datos se pueden almacenar y recuperar más rápido, y se pueden proteger en el almacenamiento flash de manera más segura que antes. SOLUCIÓN DEL PROBLEMA DE RENDIMIENTO DE I/O DSSD reinventó el almacenamiento flash para solucionar el problema de rendimiento de I/O. La memoria flash es esencialmente diferente del almacenamiento en disco, pero antes de la aparición de DSSD, se solía considerar como un simple disco rápido, conectado con las tecnologías de la era del disco, administrado como se administran los discos y al que se podía acceder como se accede a un disco. Sin duda, estos métodos no maximizan las funciones ni el rendimiento que flash puede proporcionar. DSSD diseñó e implementó las tecnologías que maximizan el flujo de datos entre la memoria de la aplicación en el sistema cliente y los módulos de almacenamiento flash en D5, lo cual involucra la menor cantidad de software posible. El diseño del software de DSSD se basa en el conocimiento de que el código de línea más rápido es aquel que nunca se ejecuta. Con menos software entre la aplicación y el almacenamiento flash, el rendimiento de DSSD D5 avanzará al mismo paso de la tecnología flash. Además, dado que la tecnología flash es fundamentalmente diferente de los discos magnéticos, la estructura de los datos almacenados en flash también puede ser diferente. Anteriormente, los modos de acceso y los requisitos de almacenamiento dictaban que los bloques de tamaño fijo se debían convertir en componentes básicos esenciales en discos magnéticos, y que los archivos se debían crear a partir de esos bloques. La física de los discos requería algoritmos que trataban de convertir I/O aleatorios en I/O secuenciales. Sin embargo, la física de flash es diferente y no se beneficia de los I/O secuenciales como discos. Los dispositivos D5 implementan una arquitectura orientada a objetos y disfrutan de un acceso completamente aleatorio a todos los datos almacenados en “objetos”. D5 almacena varios tipos de objetos y proporciona operaciones que actúan en dichos objetos. Cada objeto se compone de uno o más “fragmentos”, y cada objeto puede tener su propio tamaño de fragmento (de un mínimo de 64 bytes a un máximo de 32 KB). Los objetos se pueden ajustar perfectamente a los requisitos de las aplicaciones. Dado que las rutas de datos y de control están diseñadas para la administración y el almacenamiento de objetos, se eliminan los retos de sobrecarga y rendimiento que suelen asociarse a áreas de almacenamiento de objetos. DSSD demuestra que los objetos pueden ser más rápidos que los datos con formato de bloque, a la vez que son más flexibles y poseen más funciones. Figura 2: Dos objetos de DSSD, uno con una longitud de fragmento de 512 bytes y el otro con fragmentos de 4 KB de longitud SOFTWARE DE EMC DSSD La recopilación de software de DSSD se denomina “Flood”. Flood administra las conexiones de todos los sistemas cliente, donde cada uno de ellos puede usar todos los tipos de objetos en paralelo. No existen “modos” de operación de DSSD, como un dispositivo de bloques o un área de almacenamiento de valor clave. Todas las operaciones y los tipos de objetos están disponibles de manera simultánea. Las aplicaciones que generan I/O de bloques y otras que utilizan la API “libflood” de DSSD se pueden ejecutar de manera simultánea dentro de un sistema cliente o en otros sistemas clientes conectados a un dispositivo D5, lo cual brinda flexibilidad a las arquitecturas de centros de datos y libertad a los propietarios de aplicaciones para utilizar el almacenamiento de DSSD de la mejor manera para sus aplicaciones. Cuando lo dictan las aplicaciones, la API de Flood proporciona la configuración y el desmontaje de I/O del plano de control y la administración de almacenamiento dentro de la aplicación, donde la transferencia de datos se lleva a cabo en una ruta de datos sin la utilización de software. 6 Como se muestra en la figura 3, una llamada de la API de lectura de objetos transfiere datos sin necesidad de software en la ruta de datos. La llamada de la API informa la transferencia al módulo de control (CM) del dispositivo D5. El CM determina los módulos flash (FM) que poseen datos y su ubicación. Luego, el CM activa la copia de datos con la tarjeta cliente de DSSD en el sistema cliente, mediante DMA y PCIe, con el uso de la conectividad de NVMe desde su ubicación en el FM a la memoria de la aplicación, todo esto sin la intervención de software de ningún tipo. En este caso basado en API, no se requiere la acción del kernel cliente, ya que todas las operaciones de transferencia ocurren en el modo usuario. Las lecturas de datos ocurren literalmente de la manera más rápida posible para la física a fin de que los datos se transfieran entre un almacenamiento compartido, persistente y externo y la memoria de la aplicación mediante una tecnología de interconexión ampliamente disponible. Figura 3: Operación de lectura de la aplicación del sistema cliente mediante la API libflood La figura 4 que se muestra abajo presenta una operación de lectura mediante una llamada de la API, lo cual transfiere datos de manera similar sin la intervención de software de ningún tipo. Una llamada de escritura de la API y una transferencia de DMA provoca la escritura de los datos de las aplicaciones en tres ubicaciones dentro del dispositivo DSSD. La transacción se difunde de manera múltiple en el fabric de malla PCIe interno de DSSD, por lo que no se generan copias de datos adicionales. Estas tres escrituras de destino se realizan para garantizar la resistencia en caso de una falla de componentes hasta que los datos se transfieran a su ubicación final en una cuadrícula del chip DIE flash protegida por la tecnología patentada, eficiente y extremadamente efectiva de Cubic Raid de DSSD. Figura 4: Operación de escritura desde la aplicación del sistema cliente mediante la API libflood al dispositivo DSSD D5 Aún si se utiliza almacenamiento D5 mediante el controlador del dispositivo de bloques que reside en el sistema, que presenta el almacenamiento D5 al sistema cliente tal como lo hacen otros dispositivos de bloques, se logran altos niveles de rendimiento a muy baja latencia con una cantidad mínima de sobrecarga resultante en comparación con la transferencia de datos basada en API. La figura 5 muestra la solicitud de I/O (1) iniciada por la aplicación mediante la interacción con el controlador del dispositivo de bloques y, una vez más, (2) el DMA directamente desde la memoria de la aplicación al D5 para la transferencia de datos. 7 Figura 5: Operación de escritura desde la aplicación del sistema cliente mediante el controlador del dispositivo de bloques La biblioteca de la API libflood posee un gran conjunto de operaciones de objetos, mientras que la interfaz del controlador del dispositivo de bloques limita las operaciones de objetos a aquellas que se enfocan en los I/O de bloques. Un dispositivo DSSD D5 de 5U se puede adquirir completo o semicompleto de FM. Cada dispositivo llega con un pool de almacenamiento protegido por Cubic Raid creado previamente que incluye todos los FM adquiridos. Si el dispositivo se encuentra completo de FM en la compra inicial, entonces se puede agregar medio conjunto mediante una conexión en caliente para duplicar la capacidad y aumentar el rendimiento. Completo, D5 puede contar con 100 TB de almacenamiento persistente útil. Gracias a D5, es posible lograr hasta 10 millones de IOPS con latencias tan bajas como 100 µsec en cargas de trabajo aleatorias de bloques pequeños. Las cargas de trabajo más grandes pueden experimentar un rendimiento constante de hasta 100 GB/s.2 Dicho rendimiento libera al arquitecto del centro de datos de las exigencias relacionadas con el sobreaprovisionamiento de almacenamiento para lograr los objetivos de rendimiento, y de comprar servidores con exceso de capacidad llenos de memoria para evitar I/O de almacenamiento persistente. Este rendimiento también brinda al centro de datos los I/O para acelerar las soluciones actuales que sufren cuellos de botella de I/O y permite que la instalación esté preparada para nuevas aplicaciones. Con ese almacenamiento compartido y persistente de alto rendimiento, las instalaciones de big data ya no tienen que ser lentas. En lugar de ello, las instalaciones de datos pueden contar con un acceso rápido a los conjuntos de datos de gran tamaño. En vez de realizar una analítica en lotes, esos mismos datos se pueden usar para realizar una analítica en tiempo real. Además, no es necesario duplicar los datos para fines de rendimiento y disponibilidad, lo que mejora las arquitecturas actuales. De la misma manera, las bases de datos en memoria que son demasiado grandes para caber en la memoria se pueden ejecutar a altas velocidades. Las bases de datos que son compatibles con la organización de la memoria en niveles o que se ven afectadas cuando se invocan I/O del disco para los puntos de guardado o para el inicio, pueden ofrecer un acceso más rápido a una mayor cantidad de datos con menos dudas. Por ejemplo, los investigadores en biotecnología y otros campos pueden tener disponibles grandes cantidades de datos para explorar y recopilar. Por lo general, el gran conjunto de aplicaciones que procesan datos importantes y que dependen de los I/O se pueden liberar para mejorar la ejecución del negocio o para permitir nuevas oportunidades comerciales. SOFTWARE DEL SISTEMA CLIENTE Todos los clientes reciben un paquete instalado del software cliente de DSSD3. Este paquete contiene: guías o documentación, la biblioteca “C” de la libflood, el servicio DSSD que administra el acceso de los clientes a D5 y el controlador de bloques de DSSD. El controlador de bloques de DSSD permite a las aplicaciones acceder a objetos de bloques en D5 como los dispositivos de bloques de Linux. Para obtener la mayor cantidad de funciones y rendimiento, DSSD ofrece Flood Direct Memory API. DSSD también ofrece un plug-in que utiliza Flood Direct Memory API para las aplicaciones y plataformas estándares importantes, incluido el sistema de archivos Hadoop (HDFS). Estas funcionalidades se resumen en la figura 6 y se detallan en las secciones siguientes. 2 Todas las cifras de rendimiento incluyen la protección de almacenamiento Cubic RAID y las transferencias de datos de la aplicación al almacenamiento persistente en tamaños de transferencia estándar de 4 KB y 32 KB. 3 Consulte la guía del usuario para clientes de DSSD a fin de obtener más información sobre el paquete de software, y la guía de instalación y servicio de DSSD para obtener instrucciones sobre la instalación. 8 Figura 6: Resumen de los métodos de acceso para las aplicaciones que realizan operaciones de I/O en el almacenamiento de D5 Independientemente de la interfaz del software, un sistema cliente determinado necesita una o más tarjetas cliente de DSSD para conectarse a un dispositivo D5. Una vez instalada la tarjeta cliente, se pueden cargar los componentes del software4, configurar el dispositivo y preparar el almacenamiento para su uso mediante la interconexión con Flood Direct Memory API y el controlador de bloques de DSSD. Figura 7: Conectividad del sistema cliente a un dispositivo DSSD D5 a través de la tarjeta cliente de DSSD El software cliente de DSSD también ofrece múltiples rutas, en las cuales dos o más conexiones desde un cliente al dispositivo forman un grupo de múltiples rutas para el rendimiento y la recuperación en caso de fallas; ya sea a través del MPIO del controlador de bloques de DSSD o mediante Flood Direct Memory API de DSSD. Ambos ofrecen protecciones automáticas de failover y failback en forma de rutas o los dispositivos que conectan para cambiar su estado. CONTROLADOR DE BLOQUES Y SERVICIO DE DISPOSITIVO DE BLOQUES DE EMC DSSD D5 El controlador de dispositivos de DSSD administra el hardware de la tarjeta cliente. Si se utiliza el almacenamiento de D5 como uno o más dispositivos de bloques en un sistema cliente determinado, ese cliente también utilizará el controlador de bloques de DSSD y el servicio de dispositivo de bloques de DSSD para administrar la interacción entre las aplicaciones cliente y el dispositivo DSSD. El servicio de dispositivo de bloques de DSSD se ejecuta en el modo de usuario y administra la conectividad de los dispositivos. Evitar el modo kernel ofrece dos beneficios: hace que el sistema sea más seguro, ya que el código del modo de usuario establece límites para las funcionalidades, y mejora el rendimiento debido a que evita una sobrecarga del acceso del kernel. Ampliaremos este tema más adelante. La funcionalidad del modo de usuario incluye el descubrimiento de puertos, volúmenes, bloques y dispositivos. Por ejemplo, cuando la CLI de D5 se usa para crear volúmenes y permite el acceso desde un sistema cliente determinado, el servicio crea un puerto lógico para las operaciones de I/O dirigidas al volumen que se encuentra dentro del espacio de memoria de la aplicación cliente. 4 Consulte la guía de instalación y servicio de DSSD para obtener información relacionada con la instalación del dispositivo D5. 9 Los componentes del kernel del controlador del dispositivo incluyen soporte para múltiples rutas, lo que permite usar todas las conexiones que van desde el sistema cliente al D5 de forma paralela para el acceso al dispositivo de bloques, además de resistencia y recuperación de fallas. El controlador de bloques de DSSD permite que las aplicaciones no modificadas usen los dispositivos D5 como cualquier otro dispositivo de bloques. Una aplicación que utiliza el controlador de bloques de DSSD puede acceder a objetos de bloques únicamente. Una vez que la aplicación invoca la operación de I/O, la lista de páginas de operaciones de I/O se envía al controlador del dispositivo de bloques de DSSD a través de una llamada del kernel. Luego, los datos de la aplicación se transfieren a través de DMA entre el dispositivo y la memoria de las aplicaciones. Por supuesto que existe una aceleración del rendimiento del lado de D5, así que incluso con operaciones de I/O en el modo de bloques, D5 puede ofrecer un gran rendimiento a una latencia muy baja. El servicio de dispositivo de bloques de DSSD ofrece compatibilidad con las aplicaciones que necesitan cumplir con POSIX o que no pueden aprovechar Flood Direct Memory API. FLOOD DIRECT MEMORY API Muchas organizaciones se preguntan “¿Por qué es necesario utilizar una API?”, seguido de “¿Y por qué necesitamos una nueva API para el almacenamiento?” Para lograr una mayor velocidad, las aplicaciones tienen que realizar transferencias desde un modelo de bloqueo de I/O de un solo hilo de ejecución, a un modelo asíncrono y multithread de I/O. Esto resulta difícil de hacer con las interfaces de almacenamiento (como SAS, SATA y FC) y los protocolos tradicionales. Esos métodos tradicionales implican capas lentas compuestas de miles de líneas de código que se ejecutan dentro del kernel y, por lo tanto, requieren de un cambio y una interrupción del contexto para cada solicitud de I/O. Además, esos métodos se escribieron pensando en los elementos que realizan llamadas de un solo hilo de ejecución, lo que requiere mucho trabajo de programación por parte de los programas modernos que deseen utilizarlos. Se necesita una nueva API para permitir esta velocidad de I/O de última generación a fin de evitar las pilas lentas y para la ejecución en el modo de usuario, con lo cual se evitan los cambios y las interrupciones al contexto. También se necesita una nueva API para habilitar la semántica de I/O posterior a POSIX. Por ejemplo, si un destino de almacenamiento ahora es compatible con la administración nativa de los pares de valor clave, claramente necesita más que llamadas de lectura/escritura del sistema para usar esas y otras funciones. Los métodos de I/O de POSIX se han contraído, girado y mutilado para intentar obtener más rendimiento de ellos, lo que agrega complejidad sin ofrecer el máximo rendimiento. Figura 8: Pila de I/O tradicional frente a la pila de I/O libflood de DSSD La pila de software existente ilustrada a la izquierda de la figura 8 (arriba) muestra las diferentes capas de software que se deben atravesar para que una operación de I/O pase de la aplicación al disco/NAND. Cada pasada a través de un nivel de software añade más latencia a la operación de I/O. Las flechas verticales representadas en el diagrama indican la latencia agregada de los dispositivos de discos duros y discos SSD después de pasar por todas las pilas de software. Cuando el dispositivo de destino es un disco duro, la latencia de I/O tiene un promedio de 4,000 microsegundos (4 ms o 0.004 segundos) por cada operación de I/O. La transferencia a un disco SSD (la flecha gris de la derecha) reduce este tiempo considerablemente, entre unos 300 y 1,000 microsegundos (de 0.3 a 1 ms). Esta reducción proviene de la comparación entre el disco SSD y el disco duro, pero tenga en cuenta que en ambos casos se utiliza la misma pila de software. 10 El rendimiento real del almacenamiento flash se descubre solo cuando se reconsidera todo el método de acceso a los datos desde la aplicación. Como se muestra en el lado derecho de la figura 8, el “paquete de discos” de DSSD es en realidad más una ruta de hardware desde la aplicación hacia el almacenamiento flash. Cuando las aplicaciones utilizan Flood Direct Memory API (libflood), las operaciones de I/O se completan en aproximadamente 100 microsegundos. Flood Direct Memory API puede alcanzar este nivel de rendimiento porque se diseñaron desde cero en conjunto con el hardware para aprovechar al máximo el acceso paralelo que ofrece la arquitectura de rendimiento de D5, la cual incluye las siguientes funciones: Una tarjeta cliente PCIe que permite que la aplicación tenga un puerto NVMe virtual abierto, que esencialmente se trata de una ventana al espacio de direcciones PCIe de DSSD Canales de comunicación de alta velocidad paralelos hacia los 18,000 chips DIE NAND para las aplicaciones a través de varios puertos NVMe virtuales La capacidad de las operaciones de I/O de las aplicaciones para ir de manera directa y eficaz desde el espacio del usuario de la aplicación a la aplicación sin sufrir interrupciones Una arquitectura que no utiliza kernel (arquitecturas con acceso directo a las aplicaciones), lo que permite que D5 brinde una latencia mucho menor y un rendimiento general superior, incluso si se utiliza el mismo NAND que se usó en los módulos flash de DSSD para un disco SSD Flood Direct Memory API, que se creó con la idea de que “el código más rápido es el que nunca se ejecuta” PLUG-INS DE EMC DSSD El software de Flood que se ejecuta en D5 incluye una API que permite a las aplicaciones acceder de forma directa y nativa a D5. Una aplicación existente se puede modificar reemplazando las llamadas de I/O basadas en POSIX por comandos de I/O de Flood Direct Memory API. Esto se puede lograr mediante el uso de la “biblioteca C de la libflood”. En este caso, el cliente debe desarrollar un código nuevo con nuestra API. Otro método de acceso que ofrece DSSD sirve para usar un tipo de plug-in de la arquitectura. En este tipo de arquitectura, DSSD escribe software de API en una infraestructura estándar del sector. Por ejemplo, DSSD creó un plug-in para trabajar con Hadoop, el primero de varios plug-ins planificados. Se están explorando otras infraestructuras, para las que DSSD podría crear tipos de código de plug-in similares y ofrecer los recursos desarrollados por DSSD a la comunidad de código abierto. PLUG-IN EMC DSSD HADOOP HDFS es la capa subyacente del sistema de archivos para Hadoop y otras aplicaciones. Tiene una funcionalidad única que permite que estas aplicaciones accedan a grandes cantidades de datos. Algunas arquitecturas de Hadoop están diseñadas para un acceso de bajo costo y bajo rendimiento, generalmente para el procesamiento por lotes. Los nuevos casos de uso no solo requieren grandes cantidades de datos, sino que también un acceso rápido a esos datos. DSSD creó el plug-in DSSD Hadoop, que convierte las llamadas de HDFS en llamadas de Flood Direct Memory API de DSSD, lo cual entrega datos a la aplicación con el doble de rapidez en comparación con otros almacenamientos flash. Las aplicaciones actuales basadas en HDFS se pueden acelerar agregando almacenamiento de D5, conectando los sistemas cliente con el almacenamiento y añadiendo el plug-in DSSD Hadoop al software actual de HDFS. Figura 9: Integración de HDFS con la API libflood frente a otras soluciones de HDFS 11 SOFTWARE DEL DISPOSITIVO EMC DSSD D5 El software del dispositivo DSSD D5 administra el dispositivo y proporciona operaciones de I/O de los objetos a los sistemas cliente. Antes de explorar el software del dispositivo, es importante entender los objetos que ofrece. OBJETOS Y FRAGMENTOS DSSD D5 es un área de almacenamiento de objetos, donde estos pueden ser bloques, archivos, volúmenes, directorios y pares de valor clave. Al conjunto de todos los objetos almacenados en D5 se le denomina “pool de objetos”. Cada objeto tiene un número único y de un solo uso (tomado de un espacio de nombres de 264 o 18,4 trillones). En el dispositivo D5 se pueden almacenar hasta mil millones de objetos (limitados por el espacio). Un objeto se compone de un número de ID único para su nombre, un tamaño de fragmento y uno o más fragmentos de datos. El fragmento se lee o se escribe en exactamente una transferencia de datos entre la memoria de las aplicaciones usuario y sus tres ubicaciones de destino (una DRAM del módulo de controlador y dos DRAM del módulo flash). Figura 10: Un objeto DSSD D5 con una longitud de fragmento de 4,000 y múltiples fragmentos Los objetos están contenidos en volúmenes (en realidad se trata de otro objeto, pero lógicamente es un contenedor de objetos), donde cada objeto puede estar en un solo volumen. Se pueden crear volúmenes sin límite y cada uno puede otorgar acceso a uno o más sistemas cliente. Los volúmenes a los que acceden más de un sistema cliente permiten que todos esos sistemas accedan a sus objetos de manera simultánea. Es responsabilidad de las aplicaciones del sistema cliente garantizar el mantenimiento de un bloqueo adecuado para que los clientes no sobrescriban los objetos de cada uno. La figura 11 muestra los objetos en los volúmenes. Figura 11: Volúmenes denominados “Volumen 1” y “Volumen 2” con objetos Dentro de un volumen, los objetos de directorios jerarquizan a los objetos en el volumen. Se puede hacer referencia a los objetos y abrirlos según el ID o el nombre de ruta del directorio. 12 Figura 12: Acceso a los objetos a través de OID y de la ruta del directorio Todos los metadatos, como la capa de traducción flash (FTL), se crean mediante la lectura de la información del objeto y se guardan en la memoria principal de D5 en el módulo del controlador. Todos los metadatos relacionados con el objeto se incluyen en el mismo y se escriben cuando es necesario escribir el objeto. Los metadatos nunca generan operaciones de I/O externas. Durante el tiempo de encendido, se analizan los objetos y se crea la FTL. A diferencia de los sistemas de archivos tradicionales, todas las operaciones de I/O dentro del dispositivo cuentan con administración de objetos o administración de fragmentos, sin ningún tipo de administración de metadatos. La lista completa de los tipos de objetos es: Volumen: un grupo de objetos que puede estar vinculado dinámicamente a una aplicación cliente en especial, lo cual restringe la vista que tiene la aplicación del almacenamiento lógico. Las reglas del administrador vinculan de manera dinámica una aplicación con un volumen, que consta de una raíz y un subconjunto de los objetos en el pool. Los volúmenes se pueden eliminar atómicamente (en lugar de decir rm –rf). Directorio: la asignación de nombres a los objetos dentro de un volumen, como el directorio del sistema de archivos POSIX. Los directorios se pueden utilizar cuando las aplicaciones desean usar los nombres jerárquicos para buscar objetos. Los directorios son opcionales; las aplicaciones también pueden abrir objetos de forma directa mediante sus identificadores únicos. Archivo: un flujo de bytes de aprovisionamiento delgado que respalda las operaciones de I/O que cumplen con POSIX en compensaciones arbitrarias y sin restricciones en cuanto al tamaño o la alineación de I/O. Se bloquea el rango de los archivos para lograr coherencia y permitir la escritura modificada por la lectura de los fragmentos existentes. La adición del cumplimiento con POSIX disminuye el rendimiento de un objeto de archivos en comparación con un objeto de bloques. Bloque: un flujo de bytes de aprovisionamiento delgado que respalda las operaciones de I/O que cumplen con NVMe en compensaciones alineadas según el tamaño del fragmento. Los bloques permiten una simultaneidad y un rendimiento máximos mediante la omisión del bloque según rango y la autorización de solo lecturas o escrituras de fragmentos completos, sin admitir la escritura modificada por la lectura de los fragmentos. El usuario de la aplicación o del dispositivo de bloques es el único responsable de la administración del acceso simultáneo. Valor clave: un diccionario con aprovisionamiento delgado que asigna cualquier secuencia de bytes clave (hasta 65,535 bytes) a una secuencia de bytes de valor correspondiente (hasta 1 MB). Si se tienen varios tipos de objetos (como bloques, archivos, directorios y valores clave) y se almacenan los metadatos del objeto en la memoria principal del dispositivo ubicado en el módulo del controlador (en lugar de hacerlo dentro del objeto), D5 ofrece más flexibilidad que las áreas de almacenamiento no dedicadas a objetos sin tener que sufrir pérdidas de rendimiento debido a la administración de metadatos, la cual suele ser inherente en las áreas de almacenamiento de objetos. ADMINISTRACIÓN DEL DISPOSITIVO A TRAVÉS DE LA INTERFAZ DE LA LÍNEA DE COMANDOS Y LA APLICACIÓN WEB Para administrar el dispositivo, DSSD D5 ofrece la interfaz de la línea de comandos (CLI) esperada y la aplicación web para la administración y el monitoreo. La CLI y la aplicación web proporcionan funciones para la creación, la administración y la eliminación de volúmenes al interior del pool. Los volúmenes tienen un aprovisionamiento delgado y no bloquean la capacidad durante su creación. Luego, se asignan uno o más volúmenes a uno o más clientes, y estos últimos pueden crear y eliminar objetos dentro de un volumen asignado. 13 A continuación, se presenta un ejemplo del uso de la CLI del dispositivo DSSD para la creación y eliminación de volúmenes. Para acceder a esta CLI es necesario iniciar sesión en el módulo de servicio de uno de los módulos de control a través de una dirección Ethernet. Una vez que el usuario inicia sesión en la CLI del dispositivo, se presenta una conocida interfaz de la línea de comandos de Linux, parecida al siguiente ejemplo. > create-vol volume1 Volume 'volume1' created. > list-vol NAME CREATED_ON test-volume 2014-10-08T20:08:41Z volume1 2014-10-24T21:49:40Z > show-vol volume1 name = volume1 ctime = 2014-10-24T21:49:40Z oid = 1601faab-8d2a-44ff-afe8-3674f8d060e6-0000000028009e84 > destroy-vol volume1 Volume 'volume1' destroyed. Figura 13: La CLI cliente de DSSD Se pueden usar las mismas funciones con una interfaz gráfica, a la que se puede acceder a través de un navegador web estándar. La interfaz del usuario del navegador (BUI) de D5 se denomina como la aplicación web de DSSD. Aquí vemos un ejemplo del uso de la aplicación web de DSSD para la administración de dispositivos. La guía del administrador del dispositivo DSSD describe cómo un usuario puede abrir un navegador web e ingresar la URL del módulo de servicio para que el dispositivo D5 aparezca en una pantalla de inicio de sesión similar a la siguiente. Figura 14: Pantalla de inicio de la aplicación web de DSSD 14 Después de iniciar sesión, los usuarios ven la pestaña “Monitor”, que es similar a la que se muestra en la figura 15. Figura 15: Interfaz web de DSSD: pestaña Monitor Para crear un volumen, el usuario debe seleccionar la pestaña “almacenamiento”, tras lo cual aparece una pantalla similar a la de la figura 16. Figura 16: Interfaz web de DSSD: pestaña Almacenamiento 15 Luego, el usuario puede seleccionar el hipervínculo “crear” para abrir el cuadro de diálogo “crear”, que es similar a la figura 17. Figura 17: Interfaz web de DSSD: diálogo Create Volume dentro de la pestaña Storage En este cuadro de diálogo, el usuario puede crear un volumen, ingresar el nombre del volumen y hacer clic en el hipervínculo Aplicar. Después de hacer clic en el hipervínculo Aplicar, la pestaña almacenamiento se actualiza y se puede ver el nuevo volumen, que es similar a lo que se muestra en la figura 17. Figura 18: Interfaz web de DSSD: pestaña Almacenamiento con el nuevo volumen agregado 16 Para eliminar el nuevo volumen creado, el usuario puede simplemente seleccionar el nombre del nuevo volumen haciendo clic en su nombre para descubrir el hipervínculo “Destruir”, a la derecha del nombre del volumen, que ahora se ve resaltado en un rectángulo similar al ejemplo de más abajo. Figura 19: Interfaz web de DSSD: pestaña Almacenamiento con la opción “Destruir” Después de hacer clic en el hipervínculo “Destruir”, el volumen se elimina de forma permanente junto con todos sus contenidos. ADMINISTRACIÓN DEL OBJETO CLIENTE A TRAVÉS DE LA INTERFAZ DE LA LÍNEA DE COMANDOS Una vez creados los volúmenes en el dispositivo D5, los usuarios pueden acceder a los volúmenes desde un sistema cliente con conexión PCIe. En la guía del usuario cliente de DSSD se encuentra una referencia a la CLI cliente. A continuación se muestra un ejemplo de cómo un usuario podría crear un objeto de bloques dentro de un volumen denominado TestVol3. TestVol3 se debe crear ya sea en la CLI del dispositivo o en la aplicación web antes de ejecutar este comando. # flood create -V TestVol3 -t block -F 16k —l 1G myBlock # flood ls –lhi –V TestVol3 b 1G 4K 2016-02-22T15:57:56 86f866d4-091c-4ea9-a5ae-1cca1020fb2d-000000000000004a myBlock Figura 20: Ejemplo de ejecución de una CLI cliente creando un objeto al interior de un volumen y señalando sus atributos En la figura 20, después de ejecutar el comando “flood create”, el usuario ejecutó a continuación un comando denominado “flood is” para enumerar todos los atributos de todos los objetos que existen dentro de “TestVol3”. Aquí analizaremos el resultado de izquierda a derecha: b 1G 4K 2016-02-22T15:57:56 86f866d4-091c-4ea9-a5ae-1cca1020fb2d-000000000000004a myBlock Tipo de objeto = bloque Tamaño del objeto Longitud de fragmento Fecha y hora de la creación del objeto ID del objeto Nombre del objeto 17 Naturalmente, las interfaces del dispositivo (CLI e interfaz web) se ejecutan en los módulos de servicio (SM) de doble redundancia al interior del dispositivo. Los módulos de servicio administran el chasis: control de potencia, administración de la configuración, monitoreo del rendimiento, datos de sensores, administración de fallas y telemetría. Los módulos de control ejecutan las operaciones de datos: aprovisionamiento de objetos, ingreso y extracción de datos de clientes, configuración de los controles de acceso y las políticas de retención de datos. Básicamente, el módulo de servicio ofrece la administración del dispositivo y el módulo de control implementa la ruta de datos Flood con datos que se transfieren entre los clientes y el almacenamiento flash de D5. Para completar la imagen, los módulos de I/O (IOM) ofrecen conectividad a través de los cables de I/O de DSSD que conectan las tarjetas cliente con el dispositivo. Figura 21: Ejecución de la CLI del dispositivo y de la CLI cliente RESUMEN DEL SOFTWARE EMC DSSD El software DSSD Flood, incluido el controlador del dispositivo de lado del cliente, el controlador de bloques de DSSD y el software de control del dispositivo, trabaja conjuntamente con D5 para brindar rendimiento, disponibilidad y resistencia sin precedentes. Flood admite el almacenamiento de una variedad de objetos, ya sea de manera directa a través de API o plug-ins de libflood, o de manera indirecta a través del controlador de bloques de DSSD. Independientemente del método que se implemente, las operaciones de administración de objetos son atómicas, y los datos de objetos en forma de fragmentos se transfieren desde la memoria de la aplicación a un almacenamiento persistente en los dispositivos DSSD, sin la intervención de software de ningún tipo en la ruta de datos. Cuando se utiliza el controlador de bloques de DSSD, cada operación de I/O se inicia con una llamada del kernel y, por lo tanto, tiene un poco más de sobrecarga que las operaciones de I/O de libflood. Esta combinación de una ruta de control innovadora y una ruta de datos con menos software proporciona la menor latencia, los IOPS más altos y el mayor rendimiento posibles. Las aplicaciones que están limitadas por los I/O de almacenamiento, incluidos big data en tiempo real, las bases de datos en memoria, la analítica en tiempo real y las bases de datos tradicionales, se pueden beneficiar enormemente con el almacenamiento flash a escala de rack de DSSD D5. Sin los cuellos de botella de I/O que regulan el rendimiento de estas aplicaciones de misión crítica, D5 puede ayudar a los negocios a generar nuevos flujos de ingresos y adquirir una nueva agilidad gracias a un análisis más rápido y más confiable de sus datos. GLOSARIO Dispositivo DSSD D5: el chasis, los componentes y el software del almacenamiento de DSSD CLI del dispositivo DSSD: interfaz de la línea de comandos en un dispositivo D5 cuando inicia sesión en el módulo de servicio Controlador de bloques de DSSD: componente del software cliente que permite el uso de objetos de bloques del dispositivo DSSD como dispositivos de bloques Objeto de bloques: tipo de objeto que contiene bloques. Se usa a través de la API o como un dispositivo de bloques Cables de I/O de DSSD: cables de DSSD que conectan la tarjeta cliente con el dispositivo Tarjeta cliente de DSSD: tarjeta PCIe de DSSD al interior de los clientes, se conecta con el dispositivo a través del cable cliente Controlador del dispositivo de tarjeta cliente de DSSD: software para integrar la tarjeta cliente con el kernel del cliente 18 CLI cliente: interfaz de la línea de comandos en un cliente DSSD Sistema cliente: computadora conectada a un dispositivo D5 CM: módulo de control, componente del dispositivo Objeto de directorios: tipo de objeto que proporciona un nombre para las traducciones de OID Objeto de archivos: tipo de objeto que proporciona semánticas POSIX (funciona como un archivo) Flood: software DSSD FM: módulo de flash, componente del dispositivo Longitud de fragmento (flen): “tamaño del bloque” por objeto del espacio asignado de un objeto Flood IOM: módulo de entrada/salida, componente del dispositivo Objeto de valores clave: tipo de objeto que proporciona el almacenamiento y las operaciones del par de valores clave Múltiples rutas: múltiples rutas en el nivel de la API y múltiples rutas del controlador de bloques de DSSD NVMe: memoria no volátil express. Es una especificación para acceder a NVM a través del bus PCIe Objeto: recopilación de datos, denominados con un número de OID único OID: identificador de objetos Pool: es el almacenamiento agregado de la configuración instalada que permite a los administradores ver la capacidad de almacenamiento completa como una sola entidad Puerto: conector físico al que se conectan los cables de I/O (en la tarjeta cliente y en el IOM del dispositivo) Directorio raíz: el elemento más importante de la estructura de asignación de nombres de una recopilación de objetos SM: módulo de servicio, componente del dispositivo Aprovisionamiento delgado: asignación retrasada del almacenamiento hasta que sea necesario UUID: identificador único universal Volumen: tipo de objeto que asigna un identificador único a una asignación de capacidad y objetos del pool para controlar los permisos de acceso por parte de los clientes conectados a VPCI 19