Almacenamiento de objetos asincrónico distribuido DAOS | Diseño de arquitectura

        El almacenamiento de objetos asincrónico distribuido ( DAOS ) es un sistema de almacenamiento de objetos de código abierto diseñado para memoria no volátil distribuida a gran escala (NVM, memoria no volátil), utilizando SCM (memoria de clase de almacenamiento) y NVMe (memoria no volátil). -Volatile Memory express) y otras tecnologías NVM de próxima generación.

        DAOS es un almacenamiento de objetos escalable que proporciona contenedores de almacenamiento de alto ancho de banda, baja latencia y alto IOPS para aplicaciones informáticas de alto rendimiento, y admite flujos de trabajo centrados en datos de próxima generación que combinan simulación, análisis de datos y aprendizaje automático. .

        A diferencia de las pilas de almacenamiento tradicionales diseñadas principalmente para medios giratorios, DAOS se ha reconstruido para que la nueva tecnología NVM se ejecute de un extremo a otro en el espacio del usuario, sin pasar por el sistema operativo por completo, y es un sistema liviano.

        DAOS proporciona un modelo de E/S que brinda soporte nativo para acceder a datos altamente granulares, en lugar del modelo de E/S tradicional basado en alta latencia y diseño de almacenamiento en bloque, liberando así el rendimiento de las tecnologías de almacenamiento de próxima generación.

        A diferencia de los buffers tradicionales, DAOS es una capa de almacenamiento independiente de alto rendimiento y tolerante a fallas que no depende de otras capas para administrar metadatos y proporcionar capacidades de recuperación de datos. Los servidores DAOS mantienen sus metadatos en la memoria persistente, mientras que los datos masivos se guardan directamente en los SSD NVMe.

1. Funciones DAOS

        DAOS se basa en OFI (OpenFabric Interface) para omitir el sistema operativo, entregar operaciones DAOS al servidor de almacenamiento DAOS y aprovechar al máximo cualquier función de acceso remoto directo a la memoria (RDMA, acceso directo a la memoria remota) en la arquitectura para lograr baja latencia. usuario con alta tasa de mensajes Espacio de comunicación y almacenamiento de datos en memoria persistente y SSD NVMe.

        La interfaz de almacenamiento de valores clave de DAOS proporciona un modelo de almacenamiento unificado . Después de migrar la biblioteca de middleware de E/S para lograr soporte nativo para la API de DAOS, puede aprovechar la rica API y las funciones avanzadas de DAOS, como HDF5, MPI-IO y Flecha Apache.

        DAOS también proporciona una emulación de POSIX. POSIX ya no es la base para el nuevo modelo de datos, pero al igual que otros middleware de E/S, la interfaz POSIX se construirá como una biblioteca sobre la API backend de DAOS.

        Las operaciones de E/S de DAOS se registrarán y almacenarán en el SCM para mantener un índice persistente. Cada E/S se marca con una marca de tiempo específica y se asocia con una versión específica del conjunto de datos. Internamente, no se realiza ninguna operación de lectura-modificación-escritura (lectura-modificación-escritura), y la operación de escritura no tiene pérdidas y es insensible a la alineación. En una solicitud de lectura, el servidor DAOS atraviesa el índice persistente, creando descriptores RDMA agregados, reconstruyendo así la versión solicitada de los datos directamente en el búfer proporcionado por la aplicación.

        El SCM asigna la memoria directamente al espacio de direcciones del servicio DAOS, y el servicio DAOS administra índices persistentes mediante carga/almacenamiento directo. Según las características de las diferentes E/S, el servicio DAOS puede decidir almacenar E/S en SCM o NVMe:

  • Las E/S sensibles a la latencia, como los metadatos de las aplicaciones y los datos de bytes, normalmente se almacenan en SCM;
  • Los datos de puntos de control y lotes se almacenan en NVMe.

        Este enfoque permite a DAOS transmitir datos a NVMe y mantener un índice de metadatos interno en SCM, proporcionando ancho de banda NVMe sin procesar para datos masivos. El kit de desarrollo de memoria persistente  PMDK  gestiona el acceso transaccional a SCM, y el kit de desarrollo de rendimiento de almacenamiento  SPDK  realiza operaciones de E/S de espacio de usuario en dispositivos NVMe.

DAOS puede proporcionar:

  • E/S de grano ultrafino, baja latencia y verdadera copia cero
  • Operaciones de datos y metadatos sin bloqueo para admitir E/S y superposición de cálculo
  • Ubicación avanzada de datos para abordar dominios de fallas
  • La redundancia se gestiona mediante software y se puede reconstruir en línea, lo que permite copiar y borrar códigos.
  • Integridad de datos de extremo a extremo (E2E)
  • Transacciones distribuidas escalables, que proporcionan coherencia de datos confiable y recuperación automática
  • Función de instantánea del conjunto de datos
  • Marco de seguridad para gestionar el control de acceso a grupos de almacenamiento.
  • Gestión de almacenamiento definida por software para aprovisionar, configurar, modificar y monitorear grupos de almacenamiento
  • Proporciona soporte nativo para bibliotecas de middleware de E/S como HDF5, MPI-IO y POSIX a través del modelo de datos y API DAOS. La aplicación puede utilizar directamente la API DAOS sin portar el código.
  • Integración de Apache Spark
  • Implemente un flujo de trabajo nativo de productor/consumidor utilizando la API de publicación/suscripción
  • Funciones de consulta e indexación de datos.
  • Computación en almacenamiento para reducir el movimiento de datos entre el almacenamiento y los nodos de computación
  • Herramienta de recuperación ante desastres
  • Se integra perfectamente con el sistema de archivos paralelo Lustre y se puede extender a otros sistemas de archivos paralelos, proporcionando un espacio de nombres unificado para el acceso a datos en múltiples niveles de almacenamiento.
  • Data Mover para migrar conjuntos de datos entre grupos de DAOS, migrar conjuntos de datos del sistema de archivos paralelo a DAOS y viceversa

2. Componentes DAOS

        Un centro de datos puede tener cientos de miles de nodos informáticos, interconectados por una estructura escalable de alto rendimiento, donde todos los nodos o un subconjunto de nodos llamados nodos de almacenamiento tienen acceso directo al almacenamiento NVM.

        Una instalación DAOS implica varios componentes que pueden centralizarse o distribuirse.

Sistema DAOS y nodos de almacenamiento

        Un sistema DAOS se identifica por un nombre de sistema y consta de un grupo de nodos de almacenamiento DAOS conectados al mismo tejido. Los nodos de almacenamiento DAOS ejecutan una instancia de servicio DAOS por nodo, lo que inicia un proceso de motor de E/S DAOS por socket físico. La información de estos servicios DAOS se registra en el mapa del sistema, que asigna a cada proceso del motor de E/S un rango entero único. Dos sistemas DAOS diferentes constan de dos conjuntos separados de servidores DAOS que no pueden cooperar entre sí.

servicio DAOS

        El servicio DAOS es un demonio multiinquilino que se ejecuta en la instancia de Linux de cada nodo de almacenamiento (nodo físico, máquina virtual o contenedor). El subproceso del motor de E/S del servicio exporta almacenamiento SCM y NVM conectado localmente a través de la red. Los servicios escuchan en un puerto de administración (dirigido por dirección IP y número de puerto TCP) y uno o más puntos finales de tejido (dirigidos por URI de red).

        Los servicios DAOS  /etc/DAOS se configuran a través de archivos YAML en , incluida la configuración de los procesos secundarios de su motor de E/S. El inicio de los servicios se puede integrar con diferentes marcos de orquestación o gestión de demonios (scripts systemd, servicios de Kubernetes o lanzadores paralelos como pdsh y srun).

Manejo de E/S

        En el motor de E/S de DAOS, el almacenamiento abarca estáticamente varias particiones de destino para mejorar la simultaneidad. Para evitar carreras, cada Target tiene su propio almacenamiento privado, su propio grupo de subprocesos de servicio y un contexto de red dedicado al que se puede acceder directamente a través de la estructura sin dependencias de otros Targets alojados en el mismo nodo de almacenamiento.

        Los módulos SCM generalmente se configuran en  modo entrelazado de AppDirect  . Por lo tanto, se  fsdax presentan al sistema operativo como un único espacio de nombres PMEM por socket (en modo). Al configurar N destinos por motor de E/S, cada destino utiliza  fsdax 1NN1​ de la capacidad SCM del socket, independientemente de otros destinos. Cada Target también utiliza una fracción de la capacidad de la unidad NVMe conectada a este zócalo.

Objetivo

        Target no implementa ningún mecanismo interno de protección de datos contra fallas de los medios de almacenamiento. Por lo tanto, un Objetivo es un único punto de falla y también una unidad de falla. Se asocia un estado dinámico a cada destino: su estado puede ser "en funcionamiento" o "inactivo y no disponible".

        El objetivo es una unidad de rendimiento. Los componentes de hardware asociados con Target, como los medios de almacenamiento de back-end, los núcleos de CPU y las redes, tienen capacidades y capacidades limitadas.

        La cantidad de destinos exportados por la instancia del motor de E/S DAOS es configurable y depende del hardware subyacente (la cantidad de módulos SCM y SSD NVMe de la instancia del motor de E/S). La configuración óptima para la cantidad de destinos de un motor de E/S es un múltiplo entero de la cantidad de unidades NVMe atendidas por el motor de E/S.

API de almacenamiento, interfaces y herramientas de programación de aplicaciones

        Las aplicaciones, los usuarios y los administradores pueden interactuar con el sistema DAOS a través de dos API de cliente diferentes.

        La API de administración proporciona una interfaz para administrar el sistema DAOS. Está diseñado para integrarse con marcos de gestión de almacenamiento o de orquestación de código abierto de diferentes proveedores. dmg Las herramientas de línea de comandos están construidas sobre la API de administración de DAOS.

        La biblioteca DAOS  libdaos implementa el modelo de almacenamiento DAOS y se proporciona principalmente a desarrolladores de aplicaciones y middleware de E/S que desean almacenar conjuntos de datos en el sistema DAOS. Los comandos comúnmente utilizados por los usuarios  daos también se basan en la API, lo que permite a los usuarios administrar conjuntos de datos a través de la línea de comandos.

        Las aplicaciones pueden acceder directamente a conjuntos de datos almacenados en DAOS a través de API DAOS nativas, bibliotecas de middleware de E/S como la emulación POSIX, MPI-IO, HDF5 o marcos como Spark o TensorFlow que se han integrado con el modelo de almacenamiento DAOS nativo.

interino

        El agente DAOS es un proceso demonio que reside en el nodo cliente y autentica el proceso de la aplicación interactuando con la biblioteca DAOS. Es una entidad confiable que admite la firma de clientes DAOS con certificados. DAOS Proxy admite diferentes marcos de autenticación y se comunica con bibliotecas cliente mediante sockets de dominio Unix.

GitHub:  https://github.com/storagezhang

Correo electrónico: [email protected]

DAOS: https://github.com/daos-stack/daos

Este artículo está traducido de https://daos-stack.github.io/overview/architecture

Supongo que te gusta

Origin blog.csdn.net/iamonlyme/article/details/132305285
Recomendado
Clasificación