Almacenamiento S3 en Grid UNAM

En este documento se muestra la infraestructura de almacenamiento masivo con que cuenta Grid UNAM. Asimismo se explica como acceder a ellos desde un nodo "Submit" y desde su interaz WEB. Finalmente, se muestra el uso de los comandos báscos de manupulación de archivos de esta plataforma.

Introducción

GridUNAM tiene integrado un conjunto de servidores de almacenamiento basados en la tecnología "High Performance Object Storage", que en conjunto tiene la capacidad de almacenar hasta 600 TB TeraBytes de datos. A estos servidores los llamaremos "Servidores-S3". La intención es que usted coloque en los Servidores-S3 los archivos o datos que requiera para la ejecución de su aplicación, así como los archivos de resultados al finalizar su experimento. En la Tabla 1 se muestran los nombres de los Servidores-S3 disponibles en GridUNAM, su capacidad, la liga para accederlos desde un navegador, un identificador del nodo submit necesario en el ambiente de envíos de trabajo y la entidad Grid UNAM a la que pertenecen.

Servidor-S3 Capacidad total Acceso URL Identificador Entidad Grid UNAM
s3.lamod.unam.mx 50 TB https://s3.lamod.unam.mx:9001/ dgtic sumbmit.lamod.unam.mx
atenea.astrosen.unam.mx 50 TB https://atenea.astrosen.unam.mx:9001/ atenea jamatu.astrosen.unam.mx
s3.grid.unam.mx 500 TB https://s3.grid.unam.mx:9001/ lamod submit.grid.unam.mx

Tabla 1. Servidores-S3 disponibles en Grid UNAM.

Los Servidores-S3 están enlazados con una red de alta velocidad de 10 Gbps y distribuidos en distintas entidades geográficamente distantes. Alguno de ellos están ubicados en las instalaciones de Ciudad Universitaria en la Ciudad de México y uno de ellos en Ensenada, Baja California. La red de alta velocidad, permite que sus datos puedan ser alojados en cualquiera de los Servidores-S3 y el programa que los utiliza resida o pueda ser enviados desde cualquiera de las 4 entidades Grid UNAM. Es así, que los tiempos de transporte de datos no impactarán de forma sustancial el rendimiento de algoritmo.

Los Servidores-S3 de Grid UNAM están basados en el software MinIO Enterprise Object Store, https://min.io/, que es compatible con el protocolo Simple Storage Service (S3) desarrollado por Amazon, disponible para procesos de almacenamiento masivo en la nube. En particular la seguridad está basado en la generación de "Tokens" y este es el mecanísmo base de autenticación de nuestra plataforma. Es así, que para operar a los Servidores-S3 es a través de un comando llamado "mcli", https://min.io/docs/minio/linux/reference/minio-mc.html. En este documento solo probaremos con los comandos más sencillos de MinIO.

Adicionalmente, Grid UNAM ha desarrollado una utileria llamada "gridauth.sh" que nos permite:

  1. Generar un "token" de acceso de manera simple.
  2. El "token" tiene una duración de 3 días, equivalente al tiempo máximo de ejecución de cualquier trabajo sometido a nuestra plataforma.
  3. Genera una etiqueta única para un acceso uniforme a los Servidores-S3 desde cualquier nodo de envío. Esta etiqueta es:

gridunam

Requerimientos

  1. Tener un proyecto Grid UNAM vigente
  2. Tener una cuenta para acceso a un nodo submit
  3. Tener una cuenta para acceso a un nodo de almacenamiento.

De las Cuentas

  1. Cada uno de los proyectos aprobados tienen un directorio raiz único, que en el contexto de almacenamiento S3 lo llamaremos "Bucket-Raiz", y está especificado en el momento de alta del proyecto.
  2. Cada proyecto tiene un espacio almacenamiento total permitido para todo el proyecto.
  3. Cada proyecto tiene un Servidor-S3 asociado. Solo en casos especiales puede tener mas de un Servidor-S3, que será especificado en el momento de la aprobación del proyecto o solicitado en el desarrollo del mismo.
  4. Cada proyecto puede tener mas de un colaboradores.
  5. Cada integrante de un proeycto debe tener su propia cuenta.
  6. Los integrantes de un proyecto pueden leer, escribir y borrar el contenido del Bucket-Raiz.

Acceso a los Servidores-S3 desde un nodo submit

Una buena práctica para los usuarios de Grid UNAM, es tener la información de los accesos de los diferentes componentes de esta plataforma disponibles para su consulta. En la siguiente tabla mostramos el ejemplo del proyecto "Taller Grid UNAM" cuyo nombre corto es "tallergu". En este proyecto se generaron 50 cuentas para acceso al nodo submit, equivalente a 50 colaboradores.

Para el uso del almacenamiento se creo un solo usuario llamado "tallergu" en el servidor atenea.astrosen.unam.mx. Se le asignó 5 TB de espacio de almacenamiento al proyecto. Al Bucket-Raiz se le asignó el nombre "tallergu" y es aquí en donde cada usuario crea y trabaja en su propio directorio. Nótese que el nombre corto del proyecto es igual que el nombre del Bucket-Raiz, ésta es una política que mantendrá el grupo de desorrollo Grid UNAM, siempre y cuando no exista una razón para cambiarla.

Descriptor Valor
Nombre del proyecto: Taller Grid UNAM
Nombre Corto: tallergu
Nodo Submit: jamatu.astrosen.unam.mx
Cuenta nodo submit: tgu40
Palabra de acceso: xxxxxx
Servidor-S3: atenea.astrosen.unam.mx
Cuota de almacenamiento: 5 TB
Cuenta de almacenamiento: tallergu
Palabra de acceso almacenamiento: yyyyyy
Bucket-Raiz: tallergu
Identificador-S3: atenea
URL: https://atenea.astrosen.unam.mx:9001/

Tabla 2. Información de accesos a la plataforma Grid UNAM

Generación del "Token" de acceso.

  1. Conectese al nodo submit que le fué asignado
    ssh Cuenta-nodo-submit@Nodo-Submit
    
    En nuestro caso sería
ssh tgu40@jamatu.astrosen.unam.mx
tgu40@jamatu.astrosen.unam.mx' s password: xxxxxx
[tgu40@jamatu ~]$ 
  1. Ejecute el comando gridauth.sh en el directorio "$HOME" de su cuenta en el nodo submit.
cd $HOME

source gridauth.sh Identificador-S3
Identificador
Usuario: Cuenta-de-almacenamiento
Password: Palabra-de-acceso-almacenamiento

Para nuestro caso sería

[tgu40@jamatu ~]$ cd $HOME

[tgu40@jamatu ~]$ source gridauth.sh atenea
atenea
Usario: tallergu
Password: yyyyyy

A partir de este momento usted tiene acceso a la sección de almacenamiento S3 de la plataforma Grid UNAM.

Comandos básicos de manipulación de archivos y directorios.

La forma de interactuar con Grid UNAM es a través del comando "mcli", en las versiones mas recientes cambia a simplemente "mc". La sintaxis tiene la forma siguiente:

mcli comando opciones
En general, los comando del sistema operativo Linux para el manejo de archivos y directorios, funcionan anteponiendo "mcli" al comando de Linux. No obstante, hay que tomar en cuenta que en el ambiente de almacenamiento S3, un directorio es llamado "bucket" y un archivo es llamado "object". En la tabla siguiente se muestran los comandos básicos que usaremos en este documento.
MinIO Comando Descripción
mcli ls Lista el nombre de los objetos y buckets
mcli cp Copia un archivo desde o hacia el Servidor-S3
mcli rm Borra un objeto del Servidor-S3
mcli mb Crea un directorio o bucket en el Servidor-S3
mcli rb Borra un directorio o bucket del Servidor-S3

Tabla 3. Comandos básicos de manejo de archivos

  1. Listar el contenido. La etiqueta "gridunam" es la que activa el acceso Servidor-S3. Entonces, listar
    esta etiqueta significa listar el nombre de nuestro Bucket-Raiz.

    [tgu40@jamatu ~]$ mcli ls gridunam
    [2023-09-21 13:11:59 PDT]     0B tallergu/
    [2023-09-21 13:15:01 PDT]     0B tallergusrc/
    
    Nótese que para el caso de este taller aparecen dos Bucket-Raiz, "tallergu/" y "tallergusrc/". Esto se debe a que los talleristas tienen acceso a un segundo Bucket-Raiz llamado "tallergusrc/", en donde están los documentos y programas o aplicaiones de interés para estos talleres, sin embargo el acceso a éste es solo de lectura.
  2. Copiar archivos. La sintaxis más simples es:

    mcli cp fuente destino
    
    Si en el nodo submit tengo el archivo $HOME/Dir/file1_30MB.raw y quiero subirlo al Servidor-S3 en el Bucket-Raiz, el comando sería:
    [tgu40@jamatu ~]$ mcli cp $HOME/Dir1/file1_30MB.raw gridunam/tallergu/
    .../file1_30MB.raw: 30.00 MiB / 30.00 MiB ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.20 MiB/s 
    
    [tgu40@jamatu ~]$ mcli ls gridunam/tallergu/
    [2024-10-24 11:49:46 PDT]  30MiB STANDARD file1_30MB.raw
    

Ahora bien, si tengo un "objet" en el servidor Servidor-S3 en la trayectoria gridunam/tallergu/file1_30MB.raw y lo quiero colocar en un direcotrio de nodo submit $HOME/Dir2 el comnado es:

[tgu40@jamatu ~]$ mcli cp gridunam/tallergu/file1_30MB.raw $HOME/Dir2/
.../file1_30MB.raw: 30.00 MiB / 30.00 MiB ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 109.85 MiB/s

[tgu40@jamatu ~]$ ls -l $HOME/Dir2/
-rw-r--r-- 1 tgu40 GridIAE 31457280 Oct 24 11:22 file1_30MB.raw
  1. Borrado de un objeto. La sintaxis más simple es:

    mcli rm objetc
    
    Ahora, quiero borrar el archivo file1_30MB.raw del Servidor-S3. El comnado sería
    [tgu40@jamatu ~]$ mcli rm gridunam/tallergu/file1_30MB.raw 
    Removed `gridunam/tallergu/file1_30MB.raw`.
    
    [tgu40@jamatu ~]$ mcli ls gridunam/tallergu/
    
  2. Crear directorios en el Servidor-S3. La sintaxís básica es:

    mcli mb gridunam/Bucket-Raiz/Nombre_Directorio
    
    Para generar el directorio "MiDirectorio" en el Bucket-Raiz el comando sería:
     [tgu40@jamatu ~]$ mcli mb gridunam/tallergu/MiDirectorio
     Bucket created successfully `gridunam/tallergu/MiDirectorio`.
    
     [tgu40@jamatu ~]$ mcli  ls gridunam/tallergu/
     [2024-10-24 12:04:48 PDT]     0B MiDirectorio/
    
  3. Borrar un "bucket". Un directorio en el Servidor-S3 solo puede ser borrado si éste está vacío. Por lo tanto habrá que borrar todos los archivos y sub-directorios dentre de él. No obstante, MinIO ofrece opciones para hacer un borrado recursivo, pero hay que usarlo con cuidado, ya que puede eliminar el contenido completo del *Bucket-Raiz". La sintaxis simplé es:

    mcli rb bucket
    
    Si quiero borrar el "bucket" que generé anteriormente el comando sería:
    [tgu40@jamatu ~]$ mcli  rm   gridunam/tallergu/MiDirectorio
    Removed `gridunam/tallergu/MiDirectorio`.
    
    [tgu40@jamatu ~]$ mcli  ls   gridunam/tallergu
    

Finalizar la sesión de almacenamiento

Antes de abandonar el node submit es una buena práctica limpiar las variables de ambiente generadas por gridauth.sh. También será necesario hacer este proceso si usted tiene acceso a 2 o mas *Servisores-S3", primero finaliza la sesión en el primero e inicia la sesión en el segundo. Ejecuté la secuencia siguiente:

cd $HOME
source gridauth.sh logout
logout

Referencias del comando "mcli"

La información completa de los comnado "mcli" se puede consulatr en la liga:

https://min.io/docs/minio/linux/reference/minio-mc.html

O bien desde la línea de comandos de la forma:

mcli --help
mcli comando --help

Acceso a los Servidores-S3 desde el WEB

La interfaz WEB de acceso a los servidores es intuitiva y puede ser visualizada
desde cualquier navegador y desde cualquier punto del Internet.

Es muy útil cuando los trabajos que son enviados a Grid UNAM, guardan información directamenta al Servidor-S3, ya sea parcial, por cada paso o iteracción o bien al término del mismo. Entonces, se pude revisar el progreso desde cualquier sitio. De la misma forma, si los archivos de entrada se encuentran en su servidor o computadora persona y se almacenar en el Servidor-S3 sin hacer uso del nodo submit.

El procedmiento es el siguiente:

  1. Desde cualquier navegador accese al Servidor-S3 que se muestra en la columna "Aceso URL" de la Tabla 1. Seleccione "Other Authentication Methods" → "GridUMAM", vea la Figura 1.

Pantalla de login Figura 1: Pantalla de inicio

  1. Llene los campos de "Username or email" con en nombre de la "Cuenta de almacenamiento:" y de "Password" con "Palabra de acceso almacenamiento:", descritos en la Tabla 2. Seguido presione "Sign In", vea la Figura 2.

Acceso Figura 2: Pantalla de acceso

  1. Seguido le aparecen el o los *Buckets-Raiz" que su proyecto tiene aprobado.

Bucket-Raiz Figura 3: Bucket-Raiz del proyecto