Arquitectura: Sistema de archivos Lustre en Google Cloud con DDN EXAScaler

Last reviewed 2023-11-15 UTC

En este documento, se proporciona orientación sobre la arquitectura a fin de ayudarte a diseñar y dimensionar un sistema de archivos Lustre para cargas de trabajo de computación de alto rendimiento (HPC). También se proporciona una descripción general del proceso para implementar un sistema de archivos Lustre en Google Cloud mediante DDN EXAScaler.

Lustre es un sistema de archivos paralelo de código abierto que proporciona almacenamiento de alta capacidad de procesamiento y de baja latencia para cargas de trabajo de HPC con acoplamiento alto. Puedes escalar un sistema de archivos Lustre para admitir decenas de miles de clientes de HPC y petabytes de almacenamiento. EXAScaler Cloud es una versión empresarial de Lustre que ofrece DDN, un socio de Google. Puedes implementar EXAScaler Cloud en una arquitectura de nube híbrida para aumentar la capacidad de HPC local. EXAScaler Cloud también puede servir como un repositorio para almacenar elementos a largo plazo de una implementación local de EXAScaler.

La orientación de este documento está destinada a arquitectos empresariales y profesionales técnicos que diseñan, aprovisionan y administran almacenamiento para cargas de trabajo de HPC en la nube. En el documento, se da por sentado que tienes un conocimiento conceptual de los sistemas de archivos paralelos. También debes comprender los casos de uso de HPC para los que son ideales los sistemas de archivos paralelos, como Lustre. Si deseas obtener más información, consulta Sistemas de archivos paralelos para cargas de trabajo de HPC.

Descripción general del sistema de archivos Lustre

En el siguiente diagrama, se muestra la arquitectura de un sistema de archivos Lustre:

Arquitectura de un sistema de archivos Lustre

Como se muestra en el diagrama, la arquitectura contiene los siguientes componentes:

  • Servidor de administración (MGS) y destinos de administración (MGT): El MGS almacena y administra información de configuración sobre uno o más sistemas de archivos Lustre. En el diagrama, se muestra el MGS que administra un solo sistema de archivos Lustre. El MGS proporciona información de configuración a los otros componentes de Lustre en todos los sistemas de archivos que administra. El MGS registra los registros de configuración del sistema de archivos en dispositivos de almacenamiento llamados MGT.

  • Servidores de metadatos (MDS) y destinos de metadatos (MDT): Los nodos de MDS administran el acceso del cliente al espacio de nombres de un sistema de archivos Lustre. Este espacio de nombres incluye todos los metadatos del sistema de archivos, como la jerarquía de directorios, la hora de creación de los archivos y los permisos de acceso. Los metadatos se almacenan en dispositivos de almacenamiento que se llaman MDT. Un sistema de archivos Lustre tiene al menos un MDS y un MDT asociado. Para mejorar el rendimiento de las cargas de trabajo de metadatos intensivos, como cuando miles de clientes crean y acceden a millones de archivos pequeños, puedes agregar más nodos de MDS al sistema de archivos.

  • Servidores de almacenamiento de objetos (OSS) y destinos de almacenamiento de objetos (OST): Los nodos de OSS administran el acceso de los clientes a los datos de archivos que se almacenan en un sistema de archivos Lustre. Cada archivo se almacena como uno o más objetos de Lustre. Los objetos se almacenan en un solo dispositivo de almacenamiento (llamado OST) o seccionados en varios OST y nodos de OSS. Un sistema de archivos Lustre tiene al menos un OSS y un OST asociados. Puedes escalar la capacidad de almacenamiento y el rendimiento del sistema de archivos si agregas más OST y nodos de OSS. La capacidad de almacenamiento total del sistema de archivos es la suma de las capacidades de almacenamiento de los OST conectados a todos los nodos de OSS del sistema de archivos.

  • Clientes: Un cliente de Lustre es un nodo de procesamiento, como una máquina virtual (VM), que accede a un sistema de archivos Lustre a través de un punto de activación. El punto de activación proporciona un espacio de nombres unificado para todo el sistema de archivos. Puedes escalar un sistema de archivos Lustre para admitir el acceso simultáneo de más de 10,000 clientes. Los clientes de Lustre acceden a todos los MDS y nodos de OSS en un sistema de archivos Lustre en paralelo. Este acceso paralelo ayuda a maximizar el rendimiento del sistema de archivos. El acceso paralelo también ayuda a reducir los hotspots de almacenamiento, que son ubicaciones de almacenamiento a las que se accede con mucha más frecuencia que otras ubicaciones. Los hotspots son comunes en sistemas de archivos no paralelos y pueden causar un desequilibrio de rendimiento entre los clientes.

    Para acceder a un sistema de archivos Lustre, un cliente obtiene los metadatos de archivos y directorio necesarios de un MDS y, luego, lee o escribe datos comunicándose con uno o más nodos de OSS. Lustre cumple con la semántica de POSIX y permite que todos los clientes tengan acceso completo y paralelo al sistema de archivos.

Para obtener más información sobre el sistema de archivos Lustre y cómo funciona, consulta la documentación de Lustre.

Arquitectura de Lustre en Google Cloud

En el siguiente diagrama, se muestra una arquitectura para implementar un sistema de archivos Lustre en Google Cloud:

Arquitectura del sistema de archivos Lustre en Google Cloud

La arquitectura que se muestra en este diagrama contiene los siguientes recursos. Todos los recursos se implementan en un solo proyecto de Google Cloud. Los recursos de procesamiento y almacenamiento se aprovisionan dentro de una sola zona.

  • Compute Engine Las VM alojan los nodos MGS, MDS y OSS, y los clientes de Lustre. También puedes optar por implementar los clientes de Lustre en un clúster de Google Kubernetes Engine y, luego, implementar el sistema de archivos en las VM de Compute Engine.

  • La arquitectura incluye los siguientes recursos de herramientas de redes:

    • Una sola subred de nube privada virtual (VPC) que se usa para todas las VM.
    • Una puerta de enlace opcional de Cloud NAT y un Cloud Router opcional para el tráfico saliente de las VMs privadas a Internet.
    • Reglas de firewall opcionales para permitir conexiones de entrada SSH a todas las VMs en la topología.
    • Una regla de firewall opcional para permitir el acceso HTTP desde Internet a la consola web de DDN EXAScaler en el MGS.
    • Un firewall para permitir conexiones TCP entre todas las VMs.
  • Los discos persistentes proporcionan capacidad de almacenamiento para nodos OSS, MGS y MDS. Si no necesitas almacenamiento persistente, puedes compilar un sistema de archivos temporal mediante discos de unidad de estado sólido (SSD) locales, que se conectan a las VMs.

    Google envió entradas IO500 que demuestran el rendimiento de los sistemas de archivos Lustre persistentes y desde cero. Lee sobre el envío de Google Cloud que muestra un sistema de archivos temporales basado en Lustre de más de 10 Tbps en la clasificación IO500 de los sistemas de almacenamiento HPC.

Lineamientos de diseño

Usa los siguientes lineamientos para diseñar un sistema de archivos Lustre que cumpla con los requisitos de tus cargas de trabajo de HPC. Los lineamientos que se indican en esta sección no son exhaustivos. Proporcionan un marco de trabajo para ayudarte a evaluar los requisitos de almacenamiento de tus cargas de trabajo de HPC, evaluar las opciones de almacenamiento disponibles y dimensionar tu sistema de archivos Lustre.

Requisitos de las cargas de trabajo

Identifica los requisitos de almacenamiento de tus cargas de trabajo de HPC. Define los requisitos de la manera más detallada posible y considera los requisitos futuros. Usa las siguientes preguntas como punto de partida para identificar los requisitos de la carga de trabajo:

  • ¿Cuáles son tus requisitos para la capacidad de procesamiento y las operaciones de E/S por segundo (IOPS)?
  • ¿Cuánta capacidad de almacenamiento necesitas?
  • ¿Cuál es tu objetivo de diseño más importante: capacidad de procesamiento, IOPS o capacidad de almacenamiento?
  • ¿Necesitas almacenamiento persistente, almacenamiento temporal o ambos?

Opciones de almacenamiento

Para las opciones de almacenamiento más rentables, puedes elegir entre los siguientes tipos de discos persistentes:

  • Los discos persistentes estándar (pd-standard) son la opción más rentable cuando la capacidad de almacenamiento es el objetivo de diseño principal. Proporcionan un almacenamiento en bloque eficiente y confiable mediante unidades de disco duro (HDD).
  • Los discos persistentes SSD (pd-ssd) son la opción más rentable cuando el objetivo es maximizar las IOPS. Proporcionan almacenamiento en bloque rápido y confiable mediante el uso de SSD.
  • Los discos persistentes balanceados (pd-balanced) son la opción más rentable para maximizar la capacidad de procesamiento. Proporcionan almacenamiento en bloque rentable y confiable mediante SSD.

Los discos persistentes extremos (pd-extreme) pueden proporcionar un mayor rendimiento que los otros tipos de disco, y puedes elegir las IOPS necesarias. Sin embargo, pd-extreme cuesta más que los otros tipos de discos.

Para obtener más información sobre las capacidades de rendimiento de los discos persistentes, consulta Rendimiento del almacenamiento en bloque.

Para el almacenamiento temporal, puedes usar SSD locales efímeras. Las SSD locales están conectadas de manera física al servidor que aloja las VMs. Por lo tanto, las SSD locales proporcionan mayor capacidad de procesamiento y menor latencia que los discos persistentes. Sin embargo, los datos almacenados en una SSD local persisten solo hasta que se detenga o se borre la VM.

Servidores de almacenamiento de objetos

Cuando diseñas la infraestructura para los nodos de OSS, recomendamos lo siguiente:

  • Para el almacenamiento, elige un tipo de disco persistente adecuado según tus requisitos de capacidad de almacenamiento, IOPS y capacidad de procesamiento.

    • Usa pd-standard para las cargas de trabajo que tengan los siguientes requisitos:
      • La carga de trabajo necesita una capacidad de almacenamiento alta (por ejemplo, más de 10 TB) o una capacidad de procesamiento de lectura y una capacidad de almacenamiento altas.
      • La latencia de E/S no es importante.
      • Se acepta una capacidad de procesamiento de escritura baja.
    • Usa pd-balanced para las cargas de trabajo que tengan cualquiera de los siguientes requisitos:
      • Alta capacidad de procesamiento con capacidad baja.
      • La latencia baja que proporcionan los discos basados en SSD.
    • Usa pd-ssd para las cargas de trabajo que requieran IOPS altas (ya sean solicitudes pequeñas de E/S o archivos pequeños).
  • Aprovisiona suficiente capacidad de almacenamiento para lograr las IOPS necesarias. Considera las IOPS de lectura y escritura que proporciona cada tipo de disco.

  • Para las VMs, usa un tipo de máquina de la familia de máquinas N2 o N2D. Estos tipos de máquinas proporcionan un rendimiento predecible y rentable.

  • Asigna suficientes CPU virtuales para lograr la capacidad de procesamiento de disco persistente que se requiere. La capacidad de procesamiento máxima del disco persistente por VM es de 1.2 GBps y se puede lograr con 16 CPUs virtuales. Así que comienza con un tipo de máquina que tenga 16 CPU virtuales. Supervisa el rendimiento y asigna más CPU virtuales cuando necesites escalar las IOPS.

Servidores de metadatos

Los nodos de MDS no necesitan una alta capacidad de almacenamiento para entregar metadatos, pero necesitan un almacenamiento que admita altas IOPS. Cuando diseñes la infraestructura para los nodos de MDS, recomendamos lo siguiente:

  • Para el almacenamiento, usa pd-ssd porque este tipo de disco persistente proporciona un alto valor de IOPS (30 IOPS por GB), incluso con baja capacidad de almacenamiento.
  • Aprovisiona suficiente capacidad de almacenamiento para lograr las IOPS necesarias.
  • Para las VMs, usa un tipo de máquina de la familia de máquinas N2 o N2D. Estos tipos de máquinas proporcionan un rendimiento predecible y rentable.
  • Asigna suficientes CPU virtuales para alcanzar las IOPS requeridas:
    • Para cargas de trabajo de metadatos bajos, usa 16 CPU virtuales.
    • Para cargas de trabajo de metadatos medias, usa 32 CPU virtuales.
    • Para cargas de trabajo de metadatos intensivos, usa 64 CPU virtuales. Supervisa el rendimiento y asigna más CPU virtuales cuando sea necesario.

Servidor de administración

El MGS necesita recursos de procesamiento mínimos. No es un servicio de almacenamiento intensivo. Comienza con un tipo de máquina pequeño para la VM (por ejemplo, n2-standard-2) y un disco pd-ssd de 128 GB para el almacenamiento, y supervisa el rendimiento. Si la respuesta es lenta, asigna más CPU virtuales y aumenta el tamaño del disco.

Disponibilidad y durabilidad

Si necesitas almacenamiento persistente, los tipos de discos persistentes pd-standard y pd-balanced proporcionan almacenamiento duradero y con alta disponibilidad dentro de una zona. Para la persistencia entre zonas o regiones, puedes copiar los datos a Cloud Storage de bajo costo mediante Google Cloud CLI o el Servicio de transferencia de almacenamiento. Para reducir el costo de almacenamiento de datos en Cloud Storage, puedes almacenar los datos a los que se accede con poca frecuencia en un bucket de las clases Nearline Storage o Coldline Storage.

Si solo necesitas almacenamiento efímero para una implementación temporal, usa SSD locales como los discos de datos para los nodos de OSS y MDS. Este diseño ofrece un alto rendimiento con la menor cantidad de VMs de OSS y también te ayuda a lograr una proporción óptima de costo y rendimiento en comparación con las otras opciones.

Ejemplo de tamaño para VMs de OSS

La estrategia recomendada para dimensionar y aprovisionar el sistema de archivos Lustre es aprovisionar suficientes VMs de OSS para cumplir con el requisito general de capacidad de procesamiento. Luego, aumenta la capacidad de almacenamiento de los discos de OST hasta alcanzar la capacidad de almacenamiento requerida. En la carga de trabajo de ejemplo que se usa en esta sección, se muestra cómo implementar esta estrategia mediante los siguientes pasos:

  1. Determina los requisitos de la carga de trabajo.
  2. Elige un tipo de disco persistente.
  3. Calcula la cantidad de VMs de OSS.
  4. Calcula el tamaño de disco por VM.
  5. Determina la cantidad de CPU virtuales por VM.

Determina los requisitos de la carga de trabajo

En este ejemplo, la carga de trabajo requiere 80 TB de capacidad de almacenamiento persistente con una capacidad de procesamiento de lectura de 30 GBps.

Elige un tipo de disco persistente

Como se analizó en la sección Opciones de almacenamiento, pd-standard es la opción más rentable cuando la capacidad de almacenamiento es el objetivo de diseño principal, y pd-balanced es la opción más rentable para maximizar la capacidad de procesamiento. La capacidad de procesamiento máxima es diferente para cada tipo de disco y la capacidad de procesamiento se escala con el tamaño del disco.

En cada tipo de disco persistente que se puede usar para esta carga de trabajo, calcula la capacidad de almacenamiento necesaria a fin de escalar la capacidad de procesamiento de lectura al objetivo de 30 GBps.

Tipo de disco Capacidad de procesamiento de lectura por TB Capacidad de almacenamiento necesaria para lograr la capacidad de procesamiento objetivo
pd-standard 0.12 GBps 30 dividido por 0.12 = 250 TB
pd-balanced 0.28 GBps 30 dividido por 0.28 = 107 TB

Para alcanzar la capacidad de procesamiento de lectura objetivo de 30 Gbps con pd-standard, tendrías que aprovisionar 250 TB de capacidad de almacenamiento. Esta cantidad es más del triple de la capacidad requerida de 80 TB. Por lo tanto, para la carga de trabajo de este ejemplo, pd-balanced proporciona almacenamiento rentable que cumple con los requisitos de rendimiento.

Calcula la cantidad de VMs de OSS

La capacidad de procesamiento de lectura máxima por VM de Compute Engine es de 1.2 GBps. Para alcanzar la capacidad de procesamiento de lectura objetivo de 30 GBps, divide la capacidad de procesamiento de lectura objetivo por la capacidad de procesamiento máxima por VM de la siguiente manera:

   30 GBps / 1.2 GBps = 25

Necesitas 25 VM de OSS para lograr la capacidad de procesamiento de lectura objetivo.

Calcula el tamaño de disco por VM

A fin de calcular el tamaño del disco por VM, divide la capacidad (107 TB) necesaria para alcanzar la capacidad de procesamiento objetivo (30 GBps) por la cantidad de VM:

   107 TB / 25 VMs = 4.3

Necesitas 4.3 TB de capacidad pd-balanced por VM.

Determina la cantidad de CPU virtuales por VM

La capacidad de procesamiento de lectura de una VM escala con la cantidad de CPU virtuales asignadas a la VM. La capacidad de procesamiento máxima de lectura es de 1.2 Gbps para 16 (o más) CPU virtuales. Necesitas un tipo de máquina que proporcione al menos 16 CPU virtuales. Por lo tanto, elige un tipo de máquina de la familia de máquinas N2 o N2D, como n2-standard-32.

Resumen de la configuración

La carga de trabajo de ejemplo tiene los siguientes requisitos:

  • Capacidad de almacenamiento persistente de 80 TB
  • Capacidad de procesamiento de lectura de 30 Gbps

Para cumplir con los requisitos de esta carga de trabajo, necesitas los siguientes recursos de procesamiento y almacenamiento:

  • Cantidad de VMs de OSS: 25
  • Familia de máquinas de VM: N2 o N2D
  • Cantidad de CPU virtuales por VM: 16 o más
  • Tipo de disco persistente: pd-balanced
  • Tamaño del disco por VM: 4.3 TB

Ejemplo de configuración para un sistema de archivos temporal

La siguiente configuración se basa en un envío de Google Cloud a IO500 que demuestra el rendimiento de un sistema de archivos temporal a escala extrema que usa Lustre y que se implementa en Google Cloud:

Parámetro de configuración MDS OSS Clientes
Cantidad de VM 50 200 1,000
Tipo de máquina n2-standard-80 n2-standard-64 c2-standard-16
Cantidad de CPU virtuales por VM 80 vCPUs 64 vCPUs 16 CPU virtuales
RAM por VM 320 GB 256 GB 64 GB
SO CentOS 8 CentOS 8 CentOS 8
Ancho de banda de red 100 Gbps 75 Gbps 32 Gbps
Almacenamiento local SSD NVMe de 9 TB
(24 discos)
NVMe de 9 TB
(24 discos)
Ninguno

La configuración anterior proporcionó el siguiente rendimiento:

Métrica de rendimiento Resultado
Capacidad de procesamiento de escritura 700 GBps (5.6 Tbps)
Capacidad de procesamiento de lectura 1,270 GBps (10.16 Tbps)
Operaciones stat() con archivos 1.9 millones por segundo
Operaciones de lectura de archivos pequeños (3,901 bytes) 1.5 millones por segundo

Opciones de implementación

En esta sección, se proporciona una descripción general de los métodos que puedes usar para implementar un sistema de archivos EXAScaler Cloud en Google Cloud. En esta sección, también se describen los pasos que debes seguir cuando implementes las VMs de cliente.

Implementación del sistema de archivos EXAScaler Cloud

Puedes elegir entre los siguientes métodos para implementar un sistema de archivos EXAScaler Cloud en Google Cloud:

Con cualquiera de los métodos, puedes personalizar el sistema de archivos cuando lo implementes. Por ejemplo, puedes especificar la cantidad de VMs de OSS, el tipo de máquina para las VMs, los tipos de discos persistentes y la capacidad de almacenamiento.

Cuando elijas un método, ten en cuenta las siguientes diferencias:

  • Modificación posterior a la implementación: Si usas el kit de herramientas de HPC de Cloud, puedes modificar el sistema de archivos después de la implementación de forma eficiente. Por ejemplo, para agregar capacidad de almacenamiento, puedes aumentar la cantidad de nodos de OSS si actualizas el plano del kit de herramientas de HPC de Cloud y vuelves a aplicar la configuración generada de Terraform. Para obtener una lista de los parámetros que puedes especificar en el plano, consulta la sección Entradas en el archivo README del módulo de Terraform. Para modificar un sistema de archivos que se implementó mediante la solución de Cloud Marketplace, debes realizar los cambios en cada recurso de procesamiento y almacenamiento de forma individual mediante la consola de Google Cloud, la CLI de gcloud o la API.

  • Compatibilidad: La solución de Cloud Marketplace usa Deployment Manager, que no es compatible con los Controles del servicio de VPC. Para obtener más información sobre esta limitación, consulta Productos compatibles con los Controles del servicio de VPC y limitaciones.

Implementación de clientes

Puedes usar cualquiera de los métodos descritos en la sección Implementación del sistema de archivos EXAScaler Cloud para implementar las VMs de cliente. Sin embargo, Google recomienda que aprovisiones y administres tus VMs de cliente por separado del sistema de archivos. La forma recomendada de implementar tus clientes es mediante la imagen de VM de HPC que proporciona Google, que está optimizada para las cargas de trabajo de HPC.

A continuación, se presenta una descripción general del proceso de uso de la imagen de VM de HPC para implementar clientes de Lustre:

  1. Crea una VM mediante la imagen de VM de HPC.
  2. Instala los paquetes de cliente de Lustre en la VM
  3. Personaliza la VM según sea necesario.
  4. Crea una imagen personalizada a partir de la VM.
  5. Aprovisiona las VMs de cliente de Lustre con la imagen personalizada que creaste. Para automatizar el aprovisionamiento y la administración de las VMs de cliente, puedes usar un grupo de instancias administrado de Compute Engine o una herramienta de terceros, como el administrador de cargas de trabajo de Slurm.
  6. Activa el sistema de archivos Lustre en las VMs de cliente.

Opciones de transferencia de datos

Después de implementar un sistema de archivos Lustre en Google Cloud, debes trasladar tus datos al sistema de archivos. En la siguiente tabla, se muestran los métodos que puedes usar para trasladar datos a tu sistema de archivos Lustre. Elige el método que corresponda al volumen de datos que necesitas trasladar y la ubicación de tus datos de origen (locales o en Cloud Storage).

Fuente de datos Tamaño de los datos Método de transferencia de datos recomendado
Infraestructura local Pequeño (por ejemplo, inferior a 1 TB) Almacena en etapa intermedia los datos en Cloud Storage mediante la herramienta de gsutil. Luego, descarga los datos en el sistema de archivos Lustre mediante el Servicio de transferencia de almacenamiento o la CLI de gcloud.
Local Grande Traslada los datos al sistema de archivos Lustre mediante el Servicio de transferencia de almacenamiento. Sigue las instrucciones en Transfiere datos entre sistemas de archivos POSIX.

Este método implica el uso de un bucket intermediario de Cloud Storage. Después de completar el trabajo de transferencia, el Servicio de transferencia de almacenamiento borra los datos en el bucket intermediario.

Cloud Storage Grande o pequeño Descarga los datos de Cloud Storage al sistema de archivos Lustre mediante el Servicio de transferencia de almacenamiento o la CLI de gcloud.

¿Qué sigue?

Colaboradores

Autor: Kumar Dhanagopal | Desarrollador de soluciones entre productos

Otros colaboradores: