SeaweedFS: sistema rápido de almacenamiento distribuido para blobs, objetos, archivos y datalake

SeaweedFS, un sistema de almacenamiento distribuido de código abierto inspirado en Haystack de Facebook, está atrayendo atención como una alternativa rápida y rentable a S3 y otros almacenes de objetos autoalojados para cargas de trabajo con miles de millones de archivos pequeños o medianos. Quienes comentan informan de un buen rendimiento y fiabilidad a escala, especialmente frente a MinIO en algunas configuraciones con mucho uso de HDD, pero señalan compromisos en complejidad de configuración, documentación operativa escasa, semántica POSIX incompleta y los desafíos habituales de ejecutar almacenamiento distribuido de forma segura en producción. El hilo sitúa SeaweedFS junto a alternativas como Ceph, Garage, JuiceFS y ZFS tradicional, destacando cómo la compatibilidad de APIs, el diseño de metadatos, el erasure coding y la carga operativa influyen en la elección del backend de almacenamiento.

Despliegues reales y rendimiento

  • Varios usuarios informan que SeaweedFS se ejecuta en producción o en laboratorios: PVs de Kubernetes, laboratorios domésticos, más de 250TB de audio, más de 50TB de replays de juegos, miles de millones de miniaturas y miles de millones de archivos pequeños.
  • Recibe elogios constantes por su rendimiento con muchos objetos pequeños/medianos (miniaturas, XML, PDFs), buena latencia incluso en percentiles altos y uso eficiente de HDD.
  • Algunos señalan que “simplemente funciona” una vez configurado, con años de operación estable incluso a escalas más pequeñas (~250k objetos).

Comparación con alternativas

  • Se compara con frecuencia con MinIO: históricamente MinIO era más débil con archivos diminutos, aunque las versiones nuevas mejoraron; un equipo aún encontró que SeaweedFS era más rápido para cargas de trabajo de HDD de más de 100TB, especialmente por la sobrecarga del erasure coding de MinIO y su modelo rígido de expansión.
  • Garage se sugiere como una opción S3-only más simple, con código más fácil de leer pero sin erasure coding y con licencia AGPL.
  • Ceph se considera potente pero pesado/complejo; un comentario afirma que SeaweedFS tiene una sobrecarga de metadatos mucho menor y escrituras más rápidas gracias a su erasure coding a nivel de volumen.
  • Longhorn se menciona como almacenamiento en bloque (similar a EBS) más que como algo tipo S3.
  • JuiceFS requiere un almacenamiento de respaldo separado (por ejemplo, S3, SeaweedFS) y no es un SDS autónomo; una persona que lo probó vio problemas de corrección con backends lentos.

Arquitectura y diseño

  • Construido sobre un almacén de blobs append-only al estilo Haystack: grandes “volúmenes” con blobs empaquetados y metadatos separados, orientado a operaciones de disco/red de O(1) por acceso.
  • Las capas superiores de archivos y S3 son servicios de metadatos encima de blobs; los metadatos pueden almacenarse en distintos backends (Postgres, Cassandra, Redis, etc.).
  • Los volúmenes son append-only con un proceso de “vacuum” para recuperar espacio después de eliminaciones.

Desafíos operativos y fiabilidad

  • La configuración, las herramientas y los drivers CSI se describen como oscuros o torpes; los sidecars CSI pueden consumir muchos recursos.
  • Hubo problemas en el pasado con objetos sin replicar suficientemente durante escrituras concurrentes intensas; se cree que están corregidos en versiones más recientes.
  • Ejecutar bases de datos como Postgres sobre el montaje CSI de SeaweedFS falló para un usuario; otros advierten que las bases de datos sobre sistemas de archivos de red genéricos son arriesgadas.

Cuándo usarlo frente a S3 en la nube

  • Para cargas de trabajo completamente en AWS, quienes comentan ven poca ventaja frente a S3.
  • Para despliegues on-prem o fuera de la nube, SeaweedFS resulta atractivo para evitar costes de egress y aprovechar HDD baratos.

Lagunas de documentación y claridad

  • Se piden repetidamente mejores docs sobre: comportamiento de archivos pequeños, fragmentación e impacto del vacuum, reparación de scrubbing/bitrot, procedimientos de actualización y trade-offs detallados entre backends de filer.
  • Algunas explicaciones arquitectónicas sobre “blobs vs files vs objects” se consideran poco claras o incompletas.