Skip to content
STACK IT FAST

SeaweedFS vs RustFS

Architecture comparison 2 projects Built from source-audited deep dives

SeaweedFS is a Go file store built on Facebook's Haystack idea, with masters, volume servers and a Filer, strong at billions of small files and POSIX mounts. RustFS is a Rust, MinIO-style object store with erasure sets, IAM, KMS and replication. Both are Apache-2.0.

SeaweedFS
Go · Apache-2.0
RustFS
Rust · Apache-2.0
Updated
2026-09-25

Which one should you pick?

Pick SeaweedFS if…
  • You store huge numbers of small files and want O(1) disk lookups
  • You need FUSE mounts or Hadoop-compatible access next to S3
  • You want to choose the metadata store (RocksDB, PostgreSQL, FoundationDB)
Pick RustFS if…
  • You want a MinIO-like object store written in Rust
  • You need object lock, KMS-backed encryption, S3 Select and site replication
  • You are migrating from MinIO and want tested interoperability

Side by side

Attribute SeaweedFS RustFS
Written in GoRust RustShellPython
License Apache-2.0 Apache-2.0
Frontend none Web console
Backend & APIs GoRust RustTokiogRPCS3
Data & persistence S3RocksDB Erasure coding (Reed-Solomon)KMS (Vault / AWS KMS)
Infrastructure & deploy DockerKubernetes DockerHelmNixOpenTelemetryGitHub Actions
Key decisions
  • Haystack-inspired architecture: decoupling metadata from chunk storage
  • Pluggable Filer metadata backends (RocksDB, PostgreSQL, FoundationDB)
  • Native S3 and POSIX FUSE filesystem interfaces
  • Dozens of single-purpose crates behind one rustfs binary
  • Erasure-coded storage with a separate healing and scanner layer
  • Protocols beyond S3 are cargo features
Audited 66f1754 · 2026-09-17 edcc81a · 2026-09-25

How they differ

Two architectures

SeaweedFS separates metadata from data. Masters (coordinated with Raft) assign file ids, volume servers append “needles” into large volume files and keep an in-memory index for single-seek reads, and the Filer maps paths to needles in a pluggable store. RustFS is one binary built from many Rust crates, with crates/ecstore writing objects across erasure sets and crates/heal repairing them.

Interfaces

SeaweedFS exposes S3, FUSE, WebDAV and Hadoop-compatible access from the weed binary. RustFS centres on S3 with a web console, and adds FTPS, WebDAV and GCS by default and Swift and SFTP as opt-in features.

Redundancy

SeaweedFS replicates volumes and can erasure-code cold volumes (8 data + 4 parity shards). RustFS erasure-codes by default and adds bucket and site replication across clusters.

Architecture diagrams

SeaweedFS Open SVG
SeaweedFS architecture diagramS3 clients → S3 gateway (S3 API); FUSE / WebDAV → Filer (paths); S3 gateway → Filer (objects); Filer → Filer metadata (path to needle); Filer → Masters (assign fid); Filer → Volume servers (read / write); Masters → Volume servers (allocate); Volume servers → Volume files (append needles)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGES3 clientsAWS SDKs · CLIFUSE / WebDAVmountS3 gatewayweed s3Filerweed filerMastersRaftVolume serversGo / Rust engineFiler metadataRocksDB · Postgres · FDBVolume files.dat / .idx · ECobjectsassign fidS3 APIpathsread / writeallocateappend needlespath to needle
RustFS Open SVG
RustFS architecture diagramS3 clients → rustfs server (S3 API); Web console → rustfs server (admin API); FTPS / WebDAV / Swift → rustfs server (protocols); rustfs server → IAM & policy (authorize); rustfs server → Erasure-coded store (put / get); Erasure-coded store → Erasure sets (shards); Scanner & heal → Erasure sets (repair); Replication → Other nodes (replicate); rustfs server → KMS (SSE keys); rustfs server → Other nodes (internode)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEEXTERNALS3 clientsAWS SDKs · CLIWeb consoleport 9001FTPS / WebDAV / Swiftcargo featuresrustfs serverRust · TokioIAM & policycrates/iam · policyErasure-coded storecrates/ecstoreScanner & healcrates/healReplicationbucket · siteErasure setslocal drivesKMSVault · AWS KMSOther nodesgRPC (tonic)authorizeS3 APIadmin APIprotocolsput / getshardsrepairreplicateSSE keysinternode

Frequently asked questions

Is SeaweedFS or RustFS written in Rust?

RustFS is written in Rust. SeaweedFS is written in Go, with an optional Rust re-implementation of its volume server.

Which one is closer to MinIO?

RustFS. It uses an erasure-coded, MinIO-style design and runs a MinIO interop workflow in CI. SeaweedFS uses a different Haystack-style architecture with masters, volume servers and a Filer.