mrkeyoor.com_
Mon 28 Sept 17:35 UTC
Dataevaluationupdated 26 Aug 2026

juicefs review

JuiceFS is a distributed POSIX file system that keeps file data in object storage and file metadata in a separate database. Applications mount it like a shared drive, while the client translates ordinary file operations into metadata transactions and object-store reads and writes.

+24stars / 7d
Verdict

Our JuiceFS checkout installed 550 npm packages in 36 seconds, but it exposed no build or test target and npm audit found 21 known vulnerabilities, so our run did not validate the Go file-system client. JuiceFS is worth a staged trial for shared POSIX access over object storage when a storage team can own the metadata service and recovery plan. Do not adopt it from the quick start alone; prove mount behavior, failure recovery, and upgrades with the exact database and object store you will run.

We ran it

Lab card: what happened when we ran juicefsScreenshot of juicefs (juicefs.com)
Install✓ · 36s550 packages · 114 MB
Buildn/ano build script
Testsn/ano test script
Known vulns210 critical · 11 high · 7 moderate · 3 low (npm audit)
Repo1079 files~164,231 lines of source · 50.4 MB · 39 CI workflows · tests dir

Answers from our run

Does juicefs build from source?

Dependencies installed in 36 seconds (550 packages), and the project has no separate build step. We cloned commit a6a0299 into a clean Debian container with 3 CPUs and no project-specific setup.

Does juicefs have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does juicefs have known vulnerabilities in its dependencies?

npm audit flagged 21 known advisories in the dependency tree at the time of our run.

Who should not use juicefs?

Teams wanting a single storage daemon: the README requires a JuiceFS client, a metadata engine, and an object store.

What are the alternatives to juicefs?

SeaweedFS, Alluxio, s3fs-fuse. Our JuiceFS checkout installed 550 npm packages in 36 seconds, but it exposed no build or test target and npm audit found 21 known vulnerabilities, so our run did not validate the Go file-system client.

Setup2/536-second npm install did not exercise the multi-service runtime
Docs5/5Architecture, engines, deployment paths, and caveats are documented
Community5/514,358 stars with active August 2026 source and issue work
Maturity4/5Stable format and active releases, but storage upgrades need care

Discussed on

  1. hnA distributed Posix file system built on top of Redis and S3219 points
  2. hnJuiceFS is a distributed POSIX file system built on top of Redis and S3186 points
  3. hnJuiceFS 1.0,a cross-cloud file system that is Posix, HDFS, S3 compliant27 points
  4. hnA shared Posix file system built on top of Redis and S319 points
  5. hnJuiceFS: A distributed Posix file system built on top of Redis and S316 points

Who it’s for

Data and machine-learning teams that need shared POSIX access over an existing object store.
Kubernetes operators who want persistent volumes backed by object storage and a separate metadata service.
Hadoop users who need a compatible Java SDK while keeping data in cloud or private object storage.
Storage teams prepared to operate, monitor, back up, and upgrade both metadata and object-storage layers.

Who it’s NOT for

Teams wanting a single storage daemon: the README requires a JuiceFS client, a metadata engine, and an object store.
Anyone expecting original files to appear in the object-storage browser: JuiceFS stores numbered blocks and chunk directories instead.
Operators who cannot test metadata compatibility before upgrades: v1.4.1 included a minimum-client check intended to prevent tiered-storage metadata corruption.
Privacy policies that forbid default telemetry: anonymous usage reporting is enabled unless mounts use --no-usage-report.
Buyers treating our package check as proof of the file-system runtime: our sandbox found no build or test target in the npm surface it exercised.

Setup reality

Our sandbox installed 550 npm packages in 36 seconds and used 114 MB. It found no build script or target and no test script or target, so both steps were skipped. Npm audit reported 21 known vulnerabilities: 11 high, 7 moderate, and 3 low.

A real JuiceFS file system also needs the native client, one supported metadata engine, and object storage credentials. Mounting through FUSE, deploying the Kubernetes CSI driver, exposing an S3 gateway, or using Hadoop each has a separate setup path outside the npm dependency check we ran.

The 50.4 MB checkout contained 1,079 files and about 164,231 source lines, plus 39 CI workflow files and a tests directory. Those signals show a much larger Go storage project than the npm surface; our skipped build and test steps should not be mistaken for validation of the client.

JuiceFS puts POSIX metadata in a database and data in objects

JuiceFS separates a file system into pieces that cloud infrastructure already knows how to operate. A metadata engine stores names, permissions, directory structure, locks, and file layout. Object storage holds the data blocks. The JuiceFS client joins them and presents POSIX, Hadoop, Kubernetes, or S3-facing interfaces to applications. This design lets several machines share a namespace without rewriting software to speak an object API, which is the main reason to consider it over a plain bucket mount.

Separation also creates two failure domains. Our checkout contained 1,079 files, about 164,231 source lines, and measured 50.4 MB before dependency installation. In production, losing object data loses file contents, while losing or corrupting metadata can make those numbered objects unusable as files. The README says original source files do not appear in the bucket browser because JuiceFS splits them into chunks, slices, and blocks. Metadata backup and restore therefore deserve the same attention as object durability.

A working mount needs three independent pieces

The getting-started list requires a metadata engine, an object store, and the JuiceFS client. Supported metadata choices include Redis, MySQL, SQLite, and TiKV, while data can live in major public clouds, S3-compatible services, Ceph, MinIO, local disk, and other backends. The flexibility is useful, but every pairing has different latency, transaction, credential, and recovery behavior. A SQLite demonstration on one machine says little about a Redis-backed shared mount under concurrent writers.

Deployment paths multiply from there. FUSE provides an ordinary mount, the CSI driver serves Kubernetes volumes, a Java SDK connects Hadoop, and an S3 gateway exposes an object interface. Our npm step used 114 MB after adding 550 packages, yet that result did not install a FUSE device, create a metadata database, configure object credentials, or mount a volume. Treat each interface as its own acceptance project, especially when permissions and locking affect existing applications.

What happened when we ran it

Our fresh unprivileged Debian sandbox installed the repository's npm dependency surface in 36 seconds. It added 550 packages and occupied 114 MB. The harness found no build script or target, so the build step was skipped. It also found no test script or target, so no project tests ran. Those are findings about commit a6a0299 and the command surface our Node-based harness discovered, not evidence that the core Go client builds or passes its own suites.

Npm audit reported 21 known vulnerabilities: 11 high, 7 moderate, and 3 low, with none critical. The repository has 39 CI workflow files and a tests directory, which shows that upstream validation exists outside the targets our run could invoke. That mismatch matters more than a cosmetic score. A buyer should run the documented Go, integration, FUSE, and chosen-backend checks before adoption instead of treating a completed 36-second package install as file-system validation.

Strong semantics depend on the metadata path

JuiceFS documents close-to-open consistency across clients, immediate visibility within one mount, atomic rename and metadata operations, file access after unlink, extended attributes, and global file locks. Those claims explain why the project is more ambitious than mapping object keys to paths. The README also says its storage format is stable and will remain supported. Applications built around normal file operations can therefore use object storage without learning multipart uploads or eventual job-specific staging logic.

The cost is that metadata behavior becomes central to correctness. Release v1.4.1 fixed setgid handling, changelog overflow in SQL metadata, repeated tier reloads, missing checksum protection for one object backend, and a Linux FUSE descriptor leak. It also enforced a minimum client version for tiered storage to prevent metadata corruption. Those are useful fixes and a warning: mixed client versions, metadata schema behavior, and backend-specific checks belong in upgrade planning.

Anonymous usage reporting is enabled by default

The README says JuiceFS reports anonymous usage information such as its version and excludes user data. Operators can disable the report with --no-usage-report on the mount command. That is clear documentation, but the choice needs to be carried into every service definition, CSI configuration, or automation path covered by organizational policy. An opt-out tested on a laptop does not prove that a separately managed Kubernetes deployment uses the same flag.

Security also spans more than telemetry. Object-store keys, metadata credentials, encryption settings, mount permissions, S3 gateway access, and backup credentials all need separate ownership. The 21 npm audit findings are concrete, though they concern the dependency surface measured by our harness rather than every Go component. Current pull requests also discuss authenticating distributed sync and SFTP peers and failing closed on service authentication. Check whether those paths exist in your design and which release contains the required controls.

August 2026 activity supports a careful production trial

GitHub showed 14,358 stars and 198 combined open issues and pull requests when fetched. The repository was pushed on August 26, 2026, less than a month after v1.4.1 on July 30. Current issue activity includes concurrency, permission, cache warmup, and CI reports, alongside proposed fixes. The queue is large because the project covers many backends and interfaces; it is still worth searching for the exact metadata engine, object store, and deployment mode you plan to use.

JuiceFS makes sense when shared POSIX behavior is worth operating a metadata plane in front of object storage. Its documentation exposes the architecture and many operational topics, and current maintenance is visible. Our own run is deliberately weaker evidence: 550 npm packages installed, while build and tests were unavailable to the harness. A real evaluation should fill that gap with failure injection, restore drills, mixed-client upgrade tests, and workload checks on the chosen storage pair before customer data moves.

Alternatives

ProjectWhat it isPick it when
SeaweedFS gh↗A distributed storage system spanning object, file, and volume services.pick this instead when you want the project to provide more of the storage stack rather than pairing a client with an external metadata database.
AlluxioA distributed data access layer focused on bringing remote data closer to compute.pick this instead when acceleration across several underlying stores is more important than a direct POSIX file system.
s3fs-fuseA FUSE client that mounts an S3 bucket with a simpler object-to-file mapping.pick this instead when a straightforward S3 mount matters more than JuiceFS metadata semantics and distributed locking.

What people are saying

  1. [github-trending] juicedata/juicefs

Sources

  1. JuiceFS repository and README
  2. JuiceFS v1.4.1 release
  3. JuiceFS architecture documentation
  4. JuiceFS quick start guide
  5. JuiceFS issue tracker

More data reviews

polyledger · timeseries-atlas · opendataloader-pdf · data-formulator · toasty · gfwlist · the whole board →