Convertí almacenamiento en la nube barato en una unidad local de 1PB (con JuiceFS)

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00Este es JuiceFS. Es un sistema de archivos distribuido, de alto rendimiento y código abierto, diseñado para proporcionar la escalabilidad infinita del almacenamiento de objetos en la nube con la funcionalidad y velocidad completas de un sistema de archivos local.
00:00:14En este video, veremos JuiceFS, cómo funciona y les mostraré cómo pueden configurar su propia solución de almacenamiento conectado en red de alto rendimiento con JuiceFS.
00:00:24Va a ser muy divertido, así que vamos a ello.
00:00:30El almacenamiento de objetos estándar como S3, Google Cloud Storage o Backblaze B2 es increíblemente rentable, pero interactuar con él normalmente requiere API o herramientas especializadas que rompen los flujos de trabajo tradicionales de las aplicaciones.
00:00:48JuiceFS actúa como una capa de abstracción transparente.
00:00:51Separa los datos de los metadatos, enviando trozos de datos sin procesar directamente a su proveedor de la nube mientras gestiona el diseño del sistema de archivos, permisos y estructuras de directorios dentro de una base de datos rápida como Redis, Postgres o TIKV.
00:01:07Lo que hace que JuiceFS sea completamente diferente de las puertas de enlace a la nube tradicionales o los recursos compartidos de red estándar es esta estricta separación arquitectónica y su motor de caché multinivel agresivo.
00:01:19En lugar de obligar a sus aplicaciones a esperar por solicitudes de red a la nube de alta latencia cada vez que se accede a un archivo,
00:01:26JuiceFS divide los archivos en bloques pequeños optimizados y utiliza una partición local NVMe o SSD como espacio de trabajo temporal rápido.
00:01:35La primera vez que una aplicación lee o escribe datos, se comunica a través de la red, pero la segunda vez que se solicitan esos datos, se sirven al instante desde el almacenamiento local a velocidades de hardware.
00:01:47Esto permite que aplicaciones heredadas, bases de datos, entrenamiento de aprendizaje automático, tuberías de datos y entornos de contenedores se ejecuten directamente sobre el almacenamiento de objetos sin reescribir una sola línea de código.
00:01:59Todo eso suena muy bien, pero probémoslo nosotros mismos y veamos cómo funciona.
00:02:04Así que para esta demostración, voy a configurar un almacenamiento conectado en red (NAS) local, que alojará todos mis datos en mi propio bucket S3 remoto y usaré Redis como nuestro motor de metadatos.
00:02:16Lo primero que deben hacer es activar una instancia de Redis con Docker y pueden hacerlo fácilmente con este comando.
00:02:24Y luego necesitamos inicializar el sistema de archivos ejecutando el comando de formato de JuiceFS.
00:02:29Este paso le indica a JuiceFS exactamente cómo asignar nuestra base de datos a nuestro bucket de almacenamiento.
00:02:34Le pasamos nuestra cadena de conexión de Redis, el nombre de nuestro bucket de AWS S3 y nuestras credenciales de acceso a la nube.
00:02:41Pero antes de hacer todo eso, asegúrense de haber creado un bucket S3 y una clave de acceso y clave secreta antes de ejecutar este comando.
00:02:48Yo ya había creado los míos de antemano.
00:02:50Así que ahora, cuando ejecuto esto, JuiceFS aún no altera nada dentro de nuestro bucket S3.
00:02:56Simplemente configura el esquema de almacenamiento dentro de Redis y asigna un UUID único a nuestro nuevo sistema de archivos virtual.
00:03:03Y una vez que el paso de formato está completo, montamos el dispositivo en nuestra máquina local usando el comando de montaje de JuiceFS.
00:03:10Apuntamos JuiceFS a nuestra instancia de Redis y proporcionamos una ruta de directorio local.
00:03:15En mi caso, una carpeta dentro de mi directorio personal.
00:03:18Y antes de ejecutar esto, hay una advertencia importante.
00:03:21Si están en Mac, debido a que Mac OS no admite sistemas de archivos personalizados de forma nativa, primero deben instalar una utilidad de extensión de kernel llamada MacFuse.
00:03:30Esto proporciona los enlaces de software subyacentes que JuiceFS necesita para comunicarse con el sistema operativo Mac.
00:03:37Y luego también estoy proporcionando esta bandera con la relación de espacio libre, porque por defecto, se establece en un 20% de su disco, lo cual es bastante alto.
00:03:47Y básicamente le dice a JuiceFS que si el disco local que aloja su caché cae por debajo de cierto porcentaje de su capacidad total,
00:03:55necesita dejar de escribir nuevos archivos de caché y comenzar a purgar agresivamente los bloques más antiguos y menos accedidos.
00:04:01Esto evita que su sistema operativo local se quede completamente sin espacio en disco.
00:04:05Muy bien.
00:04:06Así que ahora ejecutemos este comando.
00:04:07Y en el momento en que se ejecuta, el sistema operativo registra un montaje de sistema de archivos compatible con POSIX estándar.
00:04:15Y para la computadora, parece que acabamos de conectar un disco duro externo masivo con un terabyte de espacio disponible.
00:04:23Y ahora puedo arrastrar fácilmente archivos a este directorio como si fuera una unidad externa.
00:04:28Y si ahora vamos al panel de control del bucket S3, vemos que JuiceFS ha almacenado nuestros archivos y los ha dividido en trozos de datos.
00:04:37Y todo esto sucede detrás de escena y no tenemos que hacer nada del trabajo pesado.
00:04:42Y para mostrarles cómo funciona el almacenamiento en caché, vamos a probar el sistema de archivos usando un comando de terminal clásico, DD.
00:04:49Así que si no han usado DD antes, es una utilidad integrada utilizada para copiar datos sin procesar.
00:04:55Y en este comando específico, “if” significa archivo de entrada, que apunta a uno de nuestros archivos de video grandes que agregué a nuestra unidad JuiceFS.
00:05:03Y el “of” significa archivo de salida.
00:05:06Y estamos enviando estos datos directamente a “dev/null”, que es exactamente un agujero negro en nuestro sistema operativo que descarta los datos al instante porque en realidad no estamos copiando los datos.
00:05:17Solo estamos haciendo una prueba de referencia en este ejemplo.
00:05:19Y también configuramos el tamaño del bloque en cuatro megabytes para que coincida con cómo JuiceFS divide los trozos de datos.
00:05:25Y finalmente, prefijamos toda la línea con la utilidad “time” para que podamos ver exactamente cuánto tiempo lleva la transferencia de archivos.
00:05:32Y la primera vez que presionamos “Enter”, esto es lo que se llama una lectura en frío porque el archivo se acaba de subir.
00:05:38Nuestra máquina local aún no tiene una copia de él.
00:05:41Así que JuiceFS tiene que llegar a través de Internet a nuestro bucket S3, buscar todos esos trozos de datos de cuatro megabytes uno por uno y transmitirlos hacia abajo.
00:05:50Y en mi conexión, la primera ejecución lleva, como pueden ver, bastante tiempo.
00:05:55Pero observen qué sucede cuando ejecutamos exactamente el mismo comando por segunda vez.
00:05:59Boom.
00:06:00Ahí lo tienen.
00:06:01El indicador de la terminal vuelve casi al instante.
00:06:03La segunda ejecución tomó menos de un segundo porque ahora está en nuestro caché y lo estamos leyendo orgánicamente.
00:06:10Así es como funciona el motor de caché multinivel en acción.
00:06:14Mientras JuiceFS estaba ocupado descargando esos trozos durante nuestra primera ejecución, los estaba copiando silenciosamente en nuestro disco local NVMe.
00:06:22Pero en la segunda pasada, el sistema omitió Internet por completo, extrayendo los datos directamente de las velocidades de hardware locales.
00:06:29Así que obtienen la capacidad de almacenamiento infinita y barata de la nube combinada con la velocidad de latencia cero de una unidad local.
00:06:37Entonces, en esta demostración, utilicé archivos de video para mostrar la funcionalidad, pero esto se aplica a casi cualquier escenario de infraestructura del mundo real.
00:06:45Si son un ingeniero DevOps que gestiona entornos de contenedores, pueden usar JuiceFS para proporcionar almacenamiento persistente compartido en un clúster de Kubernetes.
00:06:54Y en lugar de pagar por un costoso almacenamiento de bloques en la nube para cada nodo, todos sus pods pueden montar el mismo volumen de JuiceFS simultáneamente.
00:07:03Compartiendo archivos de configuración, activos de aplicaciones o subidas de usuarios globalmente mientras mantienen los costos increíblemente bajos.
00:07:10Y también es una victoria masiva para el aprendizaje automático y las tuberías de ciencia de datos.
00:07:14Porque si tienen un conjunto de datos masivo, digamos cientos de gigabytes de imágenes de entrenamiento o datos de texto almacenados en un bucket S3, entrenar un modelo de ML generalmente requiere descargar ese conjunto de datos completo localmente primero, lo que desperdicia tiempo y espacio de almacenamiento.
00:07:30Pero con JuiceFS, su script de entrenamiento puede comenzar a ejecutarse al instante.
00:07:35La tubería lee los datos secuencialmente a través del montaje y JuiceFS maneja la transmisión de alto rendimiento y el almacenamiento en caché local en segundo plano, manteniendo sus GPU completamente saturadas sin cuellos de botella de almacenamiento local.
00:07:49Y hay una cosa más genial que quiero mostrarles.
00:07:51También pueden conectar fácilmente métricas a su sistema de archivos con Better Stack.
00:07:55Cada vez que montan un volumen de JuiceFS, activa silenciosamente un servidor de métricas compatible con Prometheus en segundo plano.
00:08:03Si abren su navegador y van a esta URL, pueden ver todas las métricas aquí en texto sin formato, que están rastreando cada acierto de caché, duración de lectura y errores de solicitud de S3 en tiempo real.
00:08:13Y para enviar estos datos de telemetría directamente a nuestro tablero, podemos usar la función de “scraping” de Prometheus nativa de Better Stack.
00:08:21Primero, necesitamos ir a “sources” y conectar nuestro JuiceFS como una fuente.
00:08:25Y elijamos “Prometheus scrape” desde la pestaña de métricas y hagamos clic en “connect source”.
00:08:31Ahora necesitamos ingerir nuestros registros.
00:08:33Pero antes de hacerlo, necesitamos abrir un túnel público seguro a nuestro puerto de métricas local usando una herramienta como “ngrok” y luego pegar nuestra URL de “ngrok”.
00:08:43Pero para que funcione con “ngrok
00:08:53Y esto le dice a “ngrok” que omita la página de advertencia por completo, permitiendo que Better Stack “scrape” métricas sin procesar de forma segura cada pocos segundos.
00:09:01Y ahora nuestras métricas deberían comenzar a ingerirse automáticamente.
00:09:05Y déjenme mostrarles la parte más genial.
00:09:07Si ahora vamos al AI SRE de Better Stack, podemos simplemente pedirle al AI SRE que nos cree un tablero que monitoree el rendimiento del caché o la latencia y el rendimiento de nuestro sistema.
00:09:19Y en unos segundos, el AI SRE nos creará un hermoso tablero personalizado con todas las métricas provenientes de JuiceFS.
00:09:27Y también podemos ver que se está actualizando en tiempo real.
00:09:32Entonces, ¿qué tan genial es eso?
00:09:34Así que espero que esta pequeña demostración les muestre lo poderoso que puede ser JuiceFS cuando lo combinan con el monitoreo de infraestructura moderno.
00:09:41Logramos tomar un bucket de almacenamiento en la nube estándar y barato, convertirlo en una unidad local infinitamente escalable que opera a velocidades de hardware y conectarlo a un tablero de observabilidad totalmente automatizado en solo unos minutos.
00:09:57Así que ahí lo tienen, amigos.
00:09:58Eso es JuiceFS en pocas palabras.
00:10:00¿Qué piensan de JuiceFS?
00:10:02¿Lo han probado?
00:10:03¿Lo usarán?
00:10:04Háganoslo saber en la sección de comentarios a continuación.
00:10:06Y amigos, si les gustan este tipo de desgloses técnicos, por favor háganmelo saber presionando ese botón de “like” debajo del video.
00:10:12Y también no olviden suscribirse a nuestro canal.
00:10:15Ha sido Andrus de BetterStack, y los veré en los próximos videos.

Key Takeaway

JuiceFS convierte almacenamiento de objetos en la nube de bajo costo en una unidad local de alto rendimiento mediante una separación arquitectónica de metadatos y un motor de caché NVMe agresivo.

Highlights

  • JuiceFS actúa como una capa de abstracción que separa los datos de los metadatos, almacenando archivos en servicios S3 y gestionando directorios en bases de datos como Redis.

  • El sistema utiliza particiones locales NVMe o SSD como caché multinivel para servir datos solicitados repetidamente a velocidades de hardware.

  • El comando de montaje de JuiceFS permite que el sistema operativo local reconozca el almacenamiento en la nube como un disco duro externo masivo con soporte POSIX.

  • Una partición de caché local configurada con un límite de espacio previene que el almacenamiento operativo se sature, purgando bloques antiguos automáticamente.

  • JuiceFS expone métricas compatibles con Prometheus que facilitan la observabilidad del rendimiento de lectura, escritura y aciertos de caché en tiempo real.

Timeline

Arquitectura y concepto de JuiceFS

  • JuiceFS ofrece escalabilidad de almacenamiento en la nube con la velocidad de un sistema de archivos local.
  • La arquitectura separa los datos en bloques en la nube y los metadatos en bases de datos rápidas como Redis.
  • Un motor de caché multinivel reduce la latencia al servir datos locales tras el primer acceso.

El sistema se posiciona como una capa de abstracción para servicios como S3, Google Cloud Storage o Backblaze B2. Al dividir archivos en bloques pequeños, evita la necesidad de reescribir aplicaciones existentes, permitiendo su uso inmediato en bases de datos o entornos de contenedores.

Configuración y montaje del sistema

  • La inicialización requiere una instancia de Redis y credenciales de acceso al bucket S3.
  • El proceso de formateo asigna un UUID único al sistema de archivos virtual antes del montaje.
  • Usuarios de macOS requieren MacFuse para habilitar la compatibilidad con sistemas de archivos personalizados.

La configuración se realiza mediante comandos de terminal que definen el esquema de almacenamiento. La bandera de relación de espacio libre permite gestionar el uso de discos locales, evitando que la caché agote la capacidad total del dispositivo físico.

Validación de rendimiento y caché

  • Las pruebas de lectura con la utilidad DD demuestran que las lecturas en frío dependen de la latencia de red.
  • Las solicitudes recurrentes se sirven instantáneamente desde el caché local NVMe a velocidades de hardware.
  • Los datos son replicados silenciosamente en el disco local durante la primera lectura del archivo.

Una prueba de referencia demuestra la diferencia de velocidad entre la primera descarga desde la nube y las lecturas posteriores desde el caché. El sistema omite el acceso a Internet en la segunda ejecución, eliminando los cuellos de botella de red.

Aplicaciones y observabilidad avanzada

  • El uso de volúmenes compartidos permite que clústeres de Kubernetes accedan a activos globalmente.
  • El procesamiento de grandes conjuntos de datos de aprendizaje automático ocurre sin necesidad de descargas locales completas.
  • La integración con Better Stack y Prometheus permite monitorear latencias y errores en tableros automatizados.

JuiceFS optimiza tuberías de datos y cargas de entrenamiento de ML al transmitir datos bajo demanda. El servidor de métricas integrado puede conectarse a herramientas de monitoreo, permitiendo incluso la creación de tableros mediante IA para visualizar el estado del sistema en tiempo real.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video