s3fs alternatives: mounting S3 as a filesystem in 2026

· Amulet Labs

s3fs makes an S3 bucket look like a folder, and for casual read-mostly access it's genuinely fine. The trouble starts when real workloads arrive: every file operation becomes S3 API round trips, renames are server-side copies, small-file work crawls, and concurrent writers silently overwrite each other. The right alternative depends on which of those hurts — this guide covers the honest options: goofys and Mountpoint for S3, JuiceFS, EFS, Archil, and Amulet.

Why do teams outgrow s3fs?

Because s3fs can't fix S3's semantics, only wrap them. A stat is an API request; a directory listing is an API request; a rename is a full copy-and-delete because S3 has no rename; and metadata-heavy workloads — git status, npm install, code search — spend nearly all their time waiting on the network. Writes buffer locally and upload on close, so a crashed instance loses them. And two writers on the same key resolve last-writer-wins, invisibly. None of this is an s3fs bug; it's the object store showing through.

copy-based provisioningdownload 100 GB, then mount — minutes, scales with sizeamulet mount84 msno scan, no copy — bytes hydrate on first read020 min
The structural difference: adapters pay per-operation network costs, while a real filesystem serves hot data from local cache.

When are goofys or Mountpoint for S3 enough?

When your workload is streaming large sequential objects. Both trade away even more POSIX behavior for throughput — Mountpoint doesn't support renames or appends at all — which is a good trade for reading training shards or writing large results, and a bad one for anything resembling a working directory. They inherit every s3fs limitation around small files, concurrency, and semantics, because the model is the same: a translator in front of a bucket.

When does JuiceFS make sense?

When you need a general-purpose shared POSIX filesystem — including live multi-client writes and locks — and can operate one. JuiceFS stores data in object storage with metadata in a database you run (Redis, MySQL, TiKV), delivering real filesystem semantics and strong cached performance. The cost is operational: a highly available metadata service, cache planning, upgrades, backups. It's a solid system that assumes a storage team. Amulet vs JuiceFS covers the trade in detail.

When does EFS make sense?

When you want managed NFS inside one AWS VPC for existing applications. It's dependable and zero-ops, but metadata-heavy workloads pay NFS round-trip costs, every stored byte bills at ~$0.30/GiB-month whether touched or not, and there's no branching or history. Amulet vs AWS EFS has the workload-by-workload breakdown.

What about Archil?

Archil is the modern take on the bucket mount: your existing S3/GCS/R2 bucket, fronted by a managed cache layer, with sub-millisecond cached reads. If the goal is "my current bucket, but fast," it's a genuine upgrade over s3fs. What it doesn't change is the model — one shared live view, no forks, no commits, no conflict handling — because it accelerates the bucket rather than replacing its semantics. Amulet vs Archil goes deeper.

When is Amulet the right alternative?

When the filesystem is where work happens — especially parallel work. Amulet is at least 2× faster than s3fs across small-file operations, with sub-100 ms mounts and hot reads at 1.9 ms p99, and it changes the semantics rather than just the speed: instant zero-copy forks per agent or experiment, content-addressed history with restore, compare-and-swap publishing that can't silently lose work, and scoped credentials that keep S3 keys out of sandboxes. Pricing is $0.20/GiB-month on actively used data with requests and transfers free — the request bill that surprises s3fs users at volume doesn't exist.

Which alternative should you pick?

  • Streaming big objects: Mountpoint for S3 or goofys.
  • General shared POSIX, self-operated: JuiceFS.
  • Managed NFS for AWS-resident apps: EFS.
  • Existing bucket, faster reads: Archil.
  • Agent and parallel-AI workloads — small files, forks, history, concurrent writers: Amulet.

Frequently asked questions

What is the best alternative to s3fs?

It depends on what broke. For faster large-object streaming, AWS Mountpoint for S3 or goofys trade POSIX behavior for speed. For a general shared POSIX filesystem you operate yourself, JuiceFS. For managed NFS inside AWS, EFS. For a fast cached mount of an existing bucket, Archil. For agent and parallel-AI workloads that need fast small files plus forks, history, and conflict-safe writes, Amulet.

Why is s3fs slow for small files?

Because every filesystem operation becomes one or more S3 API round trips: a stat is a request, a directory listing is a request, and a rename is a full copy-and-delete since S3 has no rename. Workloads dominated by metadata — Git, package installs, code search — spend nearly all their time waiting on the API.

Can multiple writers safely share an s3fs mount?

No. S3's semantics make concurrent writes last-writer-wins per object, s3fs adds no coordination, and there is no way to detect that another writer published first. Two agents or jobs writing the same prefix will silently destroy each other's work — which is why multi-writer workloads need session isolation and conflict-checked publishing instead.

Related reading

Give your agents a real filesystem.