9 puntos por GN⁺ 2024-02-03 | 1 comentarios | Compartir por WhatsApp
  • Sistema de archivos distribuido simple y altamente escalable
  • Su objetivo es almacenar decenas de miles de millones de archivos y servirlos rápidamente
  • Implementado a partir de ideas del diseño Haystack de Facebook y de f4: Facebook’s Warm BLOB Storage System
  • El almacenamiento de blobs tiene búsqueda en disco O(1) y capacidades de almacenamiento por niveles en la nube
  • Filer soporta directorios y atributos POSIX, e incluye funciones como unidad en la nube, replicación activo-activo entre DC, Kubernetes, montaje POSIX FUSE, API S3, gateway S3, Hadoop, WebDAV, cifrado y erasure coding

Funciones

  • Ofrece varias opciones de replicación, incluidos niveles de réplica, reconocimiento de racks y de centros de datos.
  • Sin punto único de falla gracias a la conmutación automática por error del servidor master.
  • Soporta compresión Gzip automática según el tipo MIME del archivo.
  • Compactación automática para recuperar espacio en disco después de borrar o actualizar datos.
  • Es posible aumentar el espacio total de almacenamiento agregando servidores.
  • No hay rebalanceo de datos al agregar o quitar servidores; solo se activa mediante un comando administrativo.
  • Soporta redimensionamiento de imágenes, ETag, Accept-Range, Last-Modified y más.
  • Soporta ajuste de modos in-memory/leveldb/readonly para equilibrar memoria y rendimiento.
  • Ofrece múltiples capas de almacenamiento personalizables e integración transparente con la nube.
  • El erasure coding 10.4 con reconocimiento de racks para almacenamiento tibio reduce costos y mejora la disponibilidad.

Funciones de Filer

  • El servidor Filer sirve directorios y archivos “normales” a través de HTTP.
  • Expiración automática de metadatos y datos reales del archivo mediante TTL de archivos.
  • Se pueden leer y escribir archivos directamente en un filer montado mediante FUSE.
  • La replicación del almacenamiento de Filer permite HA para el almacén de metadatos.
  • Se puede acceder a archivos con herramientas S3 mediante una API compatible con Amazon S3.
  • Se puede acceder a archivos desde Hadoop/Spark/Flink y otros mediante un sistema de archivos compatible con Hadoop.
  • Almacena los datos de forma segura con almacenamiento cifrado AES256-GCM.
  • Soporta almacenamiento de archivos grandes de decenas de TB.
  • Como unidad en la nube, permite montar almacenamiento cloud en el clúster local para lecturas y escrituras rápidas.

Kubernetes

  • Soporta el driver CSI de Kubernetes y el operador de SeaweedFS.

Ejemplos de uso del almacenamiento de objetos de Seaweed

  • Guía de puertos predeterminados y formas de ejecución de los nodos master y volume.
  • Proporciona ejemplos de cómo escribir, leer y borrar archivos.
  • Explica la replicación con reconocimiento de racks y centros de datos, y cómo asignar claves de archivo a un centro de datos específico.

Arquitectura

  • SeaweedFS administra volúmenes de datos sin dividir los archivos en chunks.
  • El servidor master solo administra metadatos de los volúmenes, mientras que los metadatos reales de los archivos se administran en el servidor de volúmenes.
  • Ofrece una explicación detallada del proceso de escritura y lectura de archivos.

Comparación con otros sistemas de archivos

  • Explica las ventajas de SeaweedFS en comparación con HDFS, GlusterFS, Ceph, MooseFS, MinIO y otros.
  • SeaweedFS está optimizado para archivos pequeños y ofrece acceso rápido con operaciones de lectura en disco O(1).

Plan de desarrollo

  • Se planea ofrecer más herramientas y documentación para la administración y escalado del sistema.
  • Soporte para lectura y escritura de datos en stream.
  • Soporte para datos estructurados.

Guía de instalación

  • Se ofrece una guía de instalación para usuarios no familiarizados con Golang.

Temas relacionados con disco

  • Explicación del rendimiento de discos duros y SSD.
  • SeaweedFS tiene una estructura amigable con SSD.

Benchmarks

  • Se ofrecen resultados personales y no científicos de benchmarks en una sola máquina.
  • Guía sobre cómo ejecutar benchmarks mixtos usando WARP.

Licencia

  • Licenciado bajo Apache License, Version 2.0.

Opinión de GN⁺:

  • SeaweedFS es un sistema de archivos distribuido orientado a gestionar eficientemente archivos pequeños y servirlos con rapidez. Esto lo hace muy adecuado para servicios web modernos que manejan grandes volúmenes de datos.
  • Su compatibilidad con diversos almacenamientos y bases de datos le da flexibilidad, y su integración con la nube permite una gestión de datos rentable.
  • Como proyecto de código abierto, recibe apoyo de la comunidad y sigue evolucionando continuamente, por lo que también resulta interesante desde una perspectiva técnica.

1 comentarios

 
GN⁺ 2024-02-03
Opiniones de Hacker News
  • Mención de JuiceFS

    • En los comentarios se mencionan varias alternativas como Minio, Ceph y GarageFS.
    • Otra alternativa que aún no se había mencionado es JuiceFS.
    • Hay material que compara JuiceFS y SeaweedFS.
  • Experiencia usando SeaweedFS

    • Se usó SeaweedFS para almacenar decenas de miles de millones de documentos XML de tamaño medio, miniaturas de imágenes, archivos PDF, etc.
    • Cubre el vacío entre la base de datos y el sistema de archivos.
    • La documentación y las herramientas operativas al principio se sienten algo torpes, pero tiene muchas funciones y funciona bien.
    • Fue posible recuperar datos tras cortes de energía, fallas de hardware y otros problemas.
    • Resulta sorprendente el vacío que existe en torno a los blob stores open source con API S3.
  • Experiencia negativa con SeaweedFS

    • Se decidió no usar SeaweedFS porque Postgres no se inicializaba en un volumen POSIX FS montado a través del controlador CSI de SeaweedFS.
    • Se necesita un sistema SDS que ofrezca un POSIX FS completo y volúmenes S3, que sea FOSS y permita administrar, monitorear y manejar recuperación ante desastres de forma efectiva.
    • Se descartan sistemas como Ceph. GarageFS solo soporta S3.
  • Opinión del desarrollador de SeaweedFS

    • SeaweedFS está construido sobre un almacenamiento de blobs basado en el paper Haystack de Facebook.
    • Aún no todas las funciones están completamente desarrolladas, pero ofrece una nueva forma de programar adecuada para la era de la nube.
    • Cuando se necesita espacio de almacenamiento, se asigna espacio y se recibe un ID de archivo para usarlo como un puntero que apunta a un bloque de memoria.
  • Casos de uso de SeaweedFS

    • Se usa SeaweedFS para almacenar más de 50 TB de grabaciones de partidas multijugador (replays).
    • Aprovecha la función integrada de expiración, y no ha habido problemas con su uso ni con la incorporación de nuevas funciones y migraciones.
  • Opiniones sobre SeaweedFS y Min.io

    • Al preguntar por experiencias con soluciones autohospedadas tipo S3, los usuarios de SeaweedFS recomiendan Min.io, y los usuarios de Min.io recomiendan SeaweedFS.
  • Usuario de larga data de SeaweedFS

    • Se almacenan alrededor de 250 mil objetos en SeaweedFS, y gran parte de ellos está en cold storage detrás de Cloudflare.
    • SeaweedFS se ha usado durante mucho tiempo por la fascinación con Haystack de Facebook, y ha resultado muy estable y eficiente.
  • Historia de las tecnologías de almacenamiento de Microsoft

    • Microsoft intentó varias veces en el pasado cerrar la brecha entre archivos y bases de datos, pero la mayoría de esos intentos fracasó.
    • Se menciona el interés de Bill Gates en estas tecnologías y su decepción al respecto.
  • Aspectos a considerar al elegir almacenamiento distribuido

    • Hay que considerar si realmente se necesita almacenamiento distribuido y si es posible hacer sharding por cuenta propia.
    • Hay que verificar si los blobs necesitan modificarse o si basta con leer/modificar/reemplazar.
    • Hay que considerar la proporción entre lecturas y escrituras.
    • Hay que considerar la frecuencia de cambio de los metadatos.
    • Hay que considerar cómo gestionar escrituras simultáneas sobre el mismo objeto.
    • Hay que decidir qué importa más: disponibilidad, consistencia o velocidad.
    • Hay que considerar cómo recuperarse de fallas simultáneas en el almacenamiento distribuido.
    • Hay que considerar el método de control de acceso.
  • Comparación de rendimiento entre SeaweedFS y Min.io

    • Se probaron SeaweedFS y Min.io para almacenar de forma económica más de 100 TB de datos de audio en HDD.
    • SeaweedFS mostró mejor rendimiento para ese caso de uso.