Convertí almacenamiento en la nube barato en una unidad local de 1PB (con JuiceFS)
BBetter Stack
Computing/SoftwareInternet Technology
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.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video