mrkeyoor.com_
Thu 01 Oct 19:42 UTC
Dataevaluationupdated 26 Aug 2026

seaweedfs review

SeaweedFS is a distributed storage system that can serve blobs, files, S3-compatible objects, FUSE mounts, and Iceberg tables from the same cluster. It is designed to keep metadata for huge numbers of small files away from one central bottleneck while allowing capacity to grow by adding volume servers.

+168stars / 7d
Verdict

Our SeaweedFS build took 306 seconds, and after 900 seconds its test run showed 13 passing and 18 failing packages, with S3 tagging calls unable to reach a localhost service. SeaweedFS deserves a serious pilot when small-file scale, S3, FUSE, and flexible tiering must coexist, but it demands a storage team rather than a spare-server mindset. Do not put irreplaceable data on it until your topology has survived node loss, cleanup, repair, and restore tests.

We ran it

Lab card: what happened when we ran seaweedfsScreenshot of seaweedfs (seaweedfs.com)
Install✓ · 191s1159 packages
Build✓ · 306s
Tests✗ timed out · 900s13 passed · 18 failed of 31 (go test)
Repo3935 files~919,530 lines of source · 219.6 MB · 72 CI workflows · tests dir

Answers from our run

Does seaweedfs build from source?

Dependencies installed in 191 seconds (1159 packages), and the build succeeded in 306 seconds. We cloned commit 69cc286 into a clean Debian container with 3 CPUs and no project-specific setup.

Do seaweedfs's tests pass?

Not all of them: 13 of 31 passed and 18 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use seaweedfs?

Small teams wanting storage they can deploy and forget: our checkout had 3,935 files, installed 1,159 packages, and its tests ran for 900 seconds without finishing.

What are the alternatives to seaweedfs?

Ceph, RustFS, JuiceFS. Our SeaweedFS build took 306 seconds, and after 900 seconds its test run showed 13 passing and 18 failing packages, with S3 tagging calls unable to reach a localhost service.

Setup2/5One-node start is short; production topology and recovery are not
Docs5/5Extensive architecture, protocol, operation, and deployment material
Community5/5Very recent release and push with heavy issue and PR activity
Maturity4/5Broad storage system, held back by 18 failing measured packages

Discussed on

  1. hnSeaweedFS fast distributed storage system for blobs, objects, files and datalake328 points
  2. hnSeaweedFS – A simple and highly scalable distributed file system119 points
  3. hnSeaweedFS – A simple and highly scalable distributed file system with S3 API106 points
  4. hnSeaweed-FS: simple distributed file system written in Go67 points
  5. hnSeaweedfs10 points

Who it’s for

Infrastructure teams storing very large counts of small files or objects.
Operators who need S3, an HTTP filer, FUSE, replication, and cloud tiering in one storage system.
Organizations prepared to design storage topology, metadata stores, backup, repair, monitoring, and upgrades.
Data-platform teams interested in colocating S3 table buckets and an Iceberg REST catalog.

Who it’s NOT for

Small teams wanting storage they can deploy and forget: our checkout had 3,935 files, installed 1,159 packages, and its tests ran for 900 seconds without finishing.
Buyers who require a clean upstream test result before evaluation: our run had 13 passing and 18 failing Go packages when the timeout stopped it.
Users who need complete S3 compatibility as the first priority: the README says SeaweedFS is still catching up on S3 behavior, and our failures were in S3 tagging tests.
Operators unable to run destructive-failure drills: an open low-risk report describes completed multipart data becoming vulnerable when upload cleanup meets a narrow metadata-failure window.
Large FUSE deployments with tight memory limits: an open report describes 6.8 GB to 8 GB of RAM with roughly 32.8 million files.

Setup reality

Our Go dependency step succeeded in 191 seconds and installed 1,159 packages. The build passed in 306 seconds. Tests hit the 900-second cap with 13 passing and 18 failing packages out of 31 reported; the tail shows S3 tagging tests unable to list or create buckets through a localhost endpoint after 3 attempts.

weed mini starts a single-node S3 service quickly, but dropping access-key variables enables unauthenticated Allow All mode. A production cluster needs master and volume topology, replication choices, filer metadata, credentials, monitoring, backup, and recovery practice.

The project publishes container images despite no repository Dockerfile in our signal scan. FUSE, Kubernetes, cloud tiering, S3, and Iceberg each add their own configuration and failure modes.

SeaweedFS spreads file metadata across volume servers

SeaweedFS attacks a specific storage problem: central metadata becomes painful when a system holds enormous numbers of small files. Its master tracks volumes rather than every object, while each volume server manages the locations of its own files. A client receives a file identifier and contacts the relevant volume server directly. The mapping from volume ID to server changes infrequently enough to cache, keeping reads away from a central hop.

The implementation is correspondingly large. Our checkout contained 3,935 files, roughly 919,530 source lines, and 219.6 MB. One binary exposes several roles, including master, volume server, filer, S3 gateway, WebDAV, and administrative commands. The optional filer adds directories and POSIX attributes through a selectable metadata database. FUSE mounts, replication, erasure coding, cloud tiering, Kubernetes CSI, and cross-cluster copying sit around that core.

This design fits archives, media systems, data pipelines, and other workloads where object count hurts more than individual file size. It also creates choices that simpler S3 servers avoid. Operators select replication by rack and data center, decide when warm volumes move to erasure coding or cloud storage, choose a filer store, and plan master and filer availability. Those decisions affect durability, cost, and repair behavior.

weed mini is a demo path, not a cluster design

A single command can start master, volume, filer, S3, and admin services, create a bucket, and install supplied credentials. The same path runs from the published container image. It is a good way to test an SDK against the S3 endpoint or inspect the filer UI. The README explicitly positions it for development, learning, testing, and single-node use.

Our source setup took 191 seconds and installed 1,159 Go packages before the 306-second build. Production effort begins after that successful compile. Multiple volume servers need separate failure domains, while master failover, filer metadata replication, authentication, TLS, metrics, backups, and recovery procedures must be designed. A single weed mini process cannot demonstrate how a cluster behaves when a disk, rack, metadata store, or network link disappears.

One default deserves immediate attention: if the quick-start access-key variables are omitted, S3 runs in unauthenticated Allow All mode. That is convenient on loopback and dangerous on a reachable interface. Issue 10838 also reports that the default mini admin gRPC port can collide with Linux's ephemeral range in a specific startup sequence, leaving other endpoints briefly healthy while requested buckets are never created. Pinning ports is reasonable in repeatable deployments.

What happened when we ran it

Our dependency step succeeded in 191 seconds and installed 1,159 packages. Building at commit 69cc286 completed successfully in 306 seconds. The repository had 72 CI workflow files and a tests directory, evidence of many supported paths, although our signal scan found no Dockerfile in the checkout. Published images and source-build layout are separate facts.

The test command did not finish within 900 seconds. At the cap, Go reported 13 passing packages and 18 failing packages out of 31. The final lines came from S3 tagging tests. Cleanup could not list buckets, and a versioned-object test could not create a bucket because a request to a localhost endpoint failed after 3 attempts. The excerpt does not show why that local service was unreachable.

That result is more serious than a slow suite alone. There were already 18 failed package results when the timeout arrived, so this was not a green run cut off during harmless cleanup. Our 3-CPU, 8 GB, unprivileged Debian sandbox had no secrets. A prospective operator should reproduce the repository's expected integration environment and require the S3 tests relevant to their workload to pass before comparing features or performance.

S3 compatibility remains an active engineering surface

SeaweedFS exposes an Amazon S3-compatible API over filer data, including versioning, policies, tagging, and multipart behavior. Its README candidly says it is trying to catch up with S3-focused systems in areas such as UI, policies, and versioning. The 900-second run reinforces that caution because the visible failures concern tagging on versioned buckets, even though the log points to service connectivity rather than a demonstrated semantic bug.

Open issue 10663 is a separate, narrowly described durability risk. The reporter says a failure while removing multipart-upload metadata can leave completed object chunks referenced by both the object and a leftover upload directory. A later cleanup job may then delete those chunks. The report calls the window low risk and supplies a reproducer. Storage operators should verify whether their chosen release contains the proposed fix and include interrupted multipart completion in failure testing.

Another report, issue 10810, describes version 4.37 consuming about one CPU core while idle because an S3 metadata subscription loops against persisted logs. The reporter found an identical binary without the problem, suggesting state helps trigger it. Current release 4.44 is newer, so the report is not proof that every current node spins. It is a reason to baseline idle CPU, memory, queue depth, and log growth after upgrades.

Filer flexibility transfers database choices to you

The filer can place directory metadata in SQLite, PostgreSQL, MySQL, Redis, Cassandra, Elasticsearch, MongoDB, and other stores. That flexibility lets organizations use infrastructure they already understand. It also means two SeaweedFS deployments can have very different consistency, backup, scaling, and failure characteristics. The object bytes may be healthy while the namespace needs its own repair or restore.

GitHub showed 34,271 stars, 760 open issues and pull requests combined, a push on 2026-08-26, and release 4.44 from 2026-08-22. Activity is intense across S3, erasure coding, filer behavior, metrics, startup, and recovery. SeaweedFS is alive and ambitious. Our 18 failing packages mean the buying decision should start with a workload-specific pilot and failure drills, not the feature checklist.

Alternatives

ProjectWhat it isPick it when
CephA mature distributed system providing object, block, and file storage through a large operational stack.pick this instead when block storage and a deeply established storage ecosystem justify greater cluster complexity.
RustFS gh↗An S3-focused distributed object store implemented in Rust.pick this instead when S3-compatible object storage is the job and SeaweedFS's filer and FUSE layers are unnecessary.
JuiceFS gh↗A distributed POSIX file system that stores metadata separately from object data.pick this instead when a shared POSIX file system over object storage matters more than SeaweedFS's native blob architecture.

What people are saying

  1. [velocity-scout] seaweedfs/seaweedfs

Sources

  1. SeaweedFS README
  2. SeaweedFS repository
  3. SeaweedFS 4.44 release
  4. S3 upload cleanup issue 10663
  5. S3 metadata CPU issue 10810
  6. FUSE memory issue 10020

More data reviews

INSLIB · HowToLiveBetter · TradeGenuis-box · awesome-submitlist · ccf-deadlines · instagram-private-graph · the whole board →