Almacenamiento distribuido ruso. Como funciona



Esta primavera, el equipo de Reydiks preparó y lanzó la primera versión del software para crear sistemas de almacenamiento de bloques distribuidos que se ejecutan en plataformas de servidor Elbrus-4.4 basadas en microprocesadores Elbrus-4C.

La utilidad de tal simbiosis es visible a simple vista: el ensamblaje de sistemas de almacenamiento basados ​​en hierro nacional y el sistema operativo nacional se está convirtiendo en un producto atractivo del mercado interno, en particular para los clientes que se centran en la sustitución de importaciones.

Sin embargo, el potencial del sistema operativo desarrollado no se limita a las plataformas de servidores rusos. Por el momento, la compatibilidad con los servidores estándar x86-64, que están ampliamente distribuidos en el mercado, se está probando y probando. Además, el producto está "terminado" con la funcionalidad deseada, lo que permitirá su implementación fuera del mercado ruso.

A continuación, presentaremos una pequeña discusión sobre cómo se organiza la solución de software (llamada RAIDIX RAIN), que permite combinar los medios del servidor local en un único clúster de almacenamiento tolerante a fallas con administración centralizada y capacidades de escalado horizontal y vertical.

Funciones de almacenamiento distribuido


Los sistemas de almacenamiento tradicionales, hechos en forma de un solo complejo de hardware y software, tienen un problema común relacionado con el escalado: el rendimiento del sistema depende de los controladores, su número es limitado, la expansión de capacidad al agregar estantes de expansión con los operadores no aumenta la productividad.

Con este enfoque, el rendimiento general del sistema de almacenamiento disminuirá, ya que con el aumento de la capacidad, el número anterior de controladores necesita procesar más operaciones de acceso al mayor volumen de datos.

RAIDIX RAIN admite la escala horizontal de bloques, en contraste con las soluciones tradicionales, el aumento de los nodos (bloques de servidor) del sistema conduce a un aumento lineal no solo de la capacidad, sino también del rendimiento del sistema. Esto es posible porque cada nodo RAIDIX RAIN incluye no solo medios, sino también recursos informáticos para E / S y procesamiento de datos.

Escenarios de aplicación


RAIDIX RAIN implica la implementación de todos los escenarios de aplicaciones principales para el almacenamiento de bloques distribuidos: infraestructura de almacenamiento en la nube, bases de datos altamente cargadas y almacenamiento de análisis de Big Data. RAIDIX RAIN también puede competir con los sistemas de almacenamiento tradicionales con volúmenes de datos suficientemente altos y las capacidades financieras correspondientes del cliente.

Nubes públicas y privadas


La solución proporciona la escalabilidad flexible requerida para implementar una infraestructura en la nube: el rendimiento, el rendimiento y la capacidad de almacenamiento aumentan con cada nodo agregado al sistema.

Bases de datos


El clúster RAIDIX RAIN en una configuración todo flash es una solución eficiente para dar servicio a bases de datos altamente cargadas. La solución será una alternativa asequible a los productos Oracle Exadata para Oracle RAC.

Análisis de Big Data


Junto con el software adicional, es posible utilizar una solución para realizar análisis de big data. RAIDIX RAIN proporciona niveles significativamente más altos de rendimiento y facilidad de mantenimiento en comparación con un clúster HDFS.

Arquitectura de soluciones


RAIDIX RAIN admite 2 opciones de implementación: dedicada (externa o convergente) e hiperconvergente (HCI, infraestructura hiperconvergente).

Opción de implementación dedicada


En la versión seleccionada, el clúster RAIDIX RAIN es un almacenamiento de software clásico. La solución se implementa en el número requerido de nodos de servidor dedicados (al menos 3, el número es prácticamente ilimitado desde arriba), cuyos recursos se utilizan por completo para las tareas de almacenamiento.

Fig. 1. Opción de implementación dedicada

El software RAIDIX RAIN se instala directamente sobre el metal desnudo. Las aplicaciones, los servicios y los recursos informáticos que utilizan RAIN para almacenar información se alojan en hosts externos y se conectan a través de una red de almacenamiento (arquitectura clásica del centro de datos).

Opción de implementación hiperconvergente


La opción hiperconvergente implica la colocación conjunta de potencia informática (hipervisor y máquinas virtuales de producción) y recursos de almacenamiento (almacenamiento de software) del centro de datos en un conjunto de nodos, principalmente esto es cierto para las infraestructuras virtuales. Con este enfoque, el software RAIN se instala en cada host (nodo) de la infraestructura (HCI) en forma de máquina virtual.

Fig. 2. Opción de implementación hiperconvergente

La interacción de los nodos del clúster RAIN entre sí y con los usuarios finales de los recursos de almacenamiento (servidores, aplicaciones) se lleva a cabo a través de los protocolos iSCSI (IP, IPoIB), iSER (RoCE, RDMA) o NVMeOF.

La opción de implementación hiperconvergente ofrece los siguientes beneficios:

  • Consolidación de recursos informáticos y de almacenamiento (no es necesario implementar y mantener un almacenamiento externo dedicado).
  • Escalado de bloque horizontal conjunto de recursos informáticos y recursos de almacenamiento.
  • Facilidad de implementación y mantenimiento.
  • Gestión centralizada.
  • Ahorre capacidad de montaje en bastidor y consumo de energía.

En términos de medios utilizados, RAIDIX RAIN admite 3 configuraciones:

  • All-flash: los nodos del clúster se suministran solo con medios flash (NVMe, SSD);
  • HDD: los nodos del clúster se suministran solo con portadores de HDD;
  • Híbrido: dos niveles de almacenamiento independientes en HDD y SSD.


Resiliencia Productiva


El valor central de RAIDIX RAIN es el equilibrio óptimo de rendimiento, tolerancia a fallas y uso eficiente de la capacidad de almacenamiento.

Como parte de la infraestructura de TI del cliente, RAIDIX RAIN también es atractivo porque tenemos acceso de bloque "honesto" en la salida, que distingue la solución de la mayoría de los análogos del mercado.

Actualmente, la mayoría de los productos competitivos muestran un alto rendimiento, solo cuando se utiliza la duplicación. Al mismo tiempo, la capacidad de almacenamiento útil se reduce 2 veces o más: replicación de datos única (duplicación) - 50% de redundancia, duplicación de datos doble (duplicación) - 66.6% de redundancia.

El uso de tecnologías de optimización de almacenamiento, como EC (Codificación de borrado - codificación silenciosa), deduplicación y compresión implementadas en sistemas de almacenamiento distribuido, conduce a una degradación significativa del rendimiento del almacenamiento, lo cual es inaceptable para aplicaciones sensibles al retraso.

Por lo tanto, en la práctica, tales soluciones generalmente se ven obligadas a operar sin el uso de estas tecnologías, o incluirlas solo para datos "fríos".

Requisitos de conmutación por error


Inicialmente, RAIDIX RAIN se diseñó con un conjunto claro de requisitos iniciales para la resistencia y disponibilidad del sistema:

  • El clúster debe sobrevivir a una falla de al menos dos nodos, con el número de nodos estrictamente mayor que 4. Para tres y cuatro, se garantiza la falla de un nodo.
  • Un nodo debe sobrevivir a una falla de al menos dos discos en cada nodo si hay al menos 5 discos en un nodo.
  • El nivel de redundancia de las unidades en un clúster típico (de 16 nodos) no debe exceder el 30%
  • El nivel de disponibilidad de datos debe ser de al menos 99.999%

Esto ha influido mucho en la arquitectura del producto existente.

Capacidades de codificación de borrado en almacenamiento distribuido


El enfoque principal de tolerancia a fallas RAIDIX RAIN es el uso de tecnologías únicas de codificación de borrado. Las empresas de la CE conocidas por su producto estrella también se utilizan en el almacenamiento distribuido, lo que permite un rendimiento comparable a las configuraciones duplicadas. Esto se aplica tanto a cargas aleatorias como secuenciales. Al mismo tiempo, se garantiza un nivel predeterminado de tolerancia a fallos y la capacidad útil aumenta significativamente, y los gastos generales no representan más del 30% de la capacidad de almacenamiento sin procesar.

Se requiere una mención por separado de EC RAIDIX de alto rendimiento en operaciones secuenciales, en particular cuando se utilizan discos SATA de gran capacidad.

En general, RAIDIX RAIN ofrece 3 opciones de codificación de corrección de errores:

  • para 3 nodos, el uso de RAID 1 es óptimo;
  • para 4 nodos, uso óptimo de RAID 5;
  • Para un subgrupo de almacenamiento de 5 a 20 nodos, el enfoque óptimo es utilizar la red RAID 6.


Fig. 3. Opciones para codificación de corrección de errores

Todas las opciones suponen una distribución uniforme de datos en todos los nodos del clúster con la adición de redundancia en forma de sumas de verificación (o códigos de corrección). Esto nos permite establecer paralelismos con los códigos Reed-Solomon utilizados en las matrices RAID estándar (RAID-6) y permitir la conmutación por error de hasta 2 operadores. Network RAID-6 funciona de manera similar a uno basado en disco, sin embargo, distribuye datos entre los nodos del clúster y permite la conmutación por error de 2 nodos.

En RAID 6, cuando 1-2 operadores fallan dentro de un nodo, se restauran localmente sin usar sumas de verificación distribuidas, minimizando la cantidad de datos que se recuperan, la carga de la red y la degradación general del sistema.

Dominios de falla


RAIN admite el concepto de dominios de falla o dominios de disponibilidad. Esto le permite resolver el fallo no solo de nodos individuales, sino también de bastidores o cestas de servidores completos, cuyos nodos se agrupan lógicamente en dominios de fallo. Esta posibilidad se logra mediante la distribución de datos para garantizar su tolerancia a fallas no a nivel de nodos individuales, sino a nivel de dominio, lo que permitirá sobrevivir a la falla de todos los nodos agrupados en él (por ejemplo, un rack de servidores completo). En este enfoque, el grupo se divide en subgrupos independientes (subgrupos). El número de nodos en un subgrupo no es más de 20, lo que proporciona el requisito de tolerancia a fallas y disponibilidad. Además, el número de subgrupos no está limitado.

Fig. 4. Dominios de falla

La falla de cualquier falla (discos, nodos o red) se lleva a cabo automáticamente, sin detener el sistema.

Además, todos los dispositivos de clúster RAIDIX RAIN están protegidos contra fallas de energía al conectarse a fuentes de alimentación ininterrumpida (UPS). Los dispositivos conectados al mismo UPS se denominan grupo de falla de energía.

Características y Funcionalidad


Considere las principales características funcionales de RAIDIX RAIN.
Tabla 1. Características básicas de RAIDIX RAIN
Características operativasValor
Tipos de nodos admitidosPlataformas de servidores nacionales basadas en procesadores Elbrus-4C
Servidores x86-64 estándar (perspectiva)
Tipos de medios admitidosHDD SATA y SAS, SSD SATA y SAS, NVMe
Capacidad máxima de almacenamiento16 EB
Tamaño máximo de clúster1,024 nudos
Funcionalidad básicaExpansión de volumen caliente
Agregar nodos al clúster en caliente
Reequilibrio de clúster
Conmutación por error sin tiempo de inactividad
Tecnologías de resilienciaFalla de nodos, medios, red.
Codificación de borrado, distribuida entre los nodos del clúster: red RAID 0/1/5/6.
Códigos de corrección a nivel de operadores host locales (RAID 6 local)
Dominios de falla

Como una característica funcional importante de RAIDIX RAIN, vale la pena señalar que los servicios como la inicialización, reconstrucción y reescritura (escalado) pasan a un segundo plano y se pueden establecer en un parámetro de prioridad .

La configuración de prioridad permite al usuario ajustar de forma independiente la carga en el sistema, acelerando o ralentizando el trabajo de estos servicios. Por ejemplo, la prioridad 0 significa que los servicios solo funcionan cuando no hay carga de las aplicaciones cliente.

Opciones de escala


El proceso de expansión de un clúster RAIDIX RAIN es lo más simple y automatizado posible, el sistema redistribuye de forma independiente los datos en el proceso en segundo plano teniendo en cuenta la capacidad de los nuevos nodos, la carga se equilibra y es uniforme, el rendimiento general y la capacidad de almacenamiento aumentan proporcionalmente. El proceso de escalado horizontal pasa "caliente" sin tiempo de inactividad, no requiere detener aplicaciones y servicios.

Fig. 5. Esquema del proceso de escalado.

Flexibilidad de la arquitectura


RAIDIX RAIN es un producto de software y no se limita a una plataforma de hardware específica; su concepto sugiere la capacidad de instalar en cualquier hardware de servidor compatible.

Según los detalles de su infraestructura y aplicaciones, cada cliente elige la mejor opción de implementación: dedicada o hiperconvergente.

El soporte para varios tipos de medios le permite construir en base a RAIDIX RAIN según el presupuesto y las tareas a resolver:
1. almacenamiento todo flash distribuido con alto rendimiento sin precedentes y baja latencia garantizada;
2. sistemas híbridos económicos que satisfacen la mayoría de los tipos básicos de cargas.

Indicadores de desempeño


Como conclusión, mostraremos algunas cifras obtenidas como resultado de probar RAIDIX RAIN en la configuración de un clúster NVMe de 6 nodos. Una vez más, observamos que en dicho ensamblaje (con servidores x86-64) el producto aún se está finalizando, y estas cifras no son definitivas.

Entorno de prueba


  • 6 nudos en 2 discos NVMe HGST SN100
  • Tarjeta IB Mellanox MT27700 Familia [ConnectX-4]
  • Linux Kernel 4.11.6-1.el7.elrepo.x86_64
  • MLNX_OFED_LINUX-4.3-1.0.1.0-rhel7.4-x86_64
  • Incursión local - incursión 0
  • Incursión externa - incursión 6
  • Punto de referencia para probar FIO 3.1


UPD: la carga se realizó en bloques 4K, secuencial - 1M, profundidad de cola 32. La carga se lanzó en todos los nodos del clúster simultáneamente y la tabla muestra el resultado total. Los retrasos no superan 1 ms (percentil 99.9).

Tabla 2. Resultados de la prueba
Tipo de cargaValor
Lectura aleatoria 100%4,098,000 IOps
Escritura aleatoria 100%517,000 IOps
Lectura secuencial 100%33.8 GB / s
Escritura secuencial 100%12 GB / s
Lectura aleatoria 70% / escritura aleatoria 30%1,000,000 IOps / 530,000 IOps
Lectura aleatoria 50% / escritura aleatoria 50%530,000 IOps / 530,000 IOps
Lectura aleatoria 30% / escritura aleatoria 70%187,000 IOps / 438,000 IOps

Source: https://habr.com/ru/post/es415961/


All Articles