Barre/ZeroFS
ZeroFS - ZeroFS serves S3-compatible buckets as POSIX filesystems over NFS and 9P, or as raw block devices over NBD.
30 Releases
Latest: today
v1.2.6Latest
📋 What's Changed
- Index fenced code blocks in docs search so exact matches in CLI/config examples are findable by @Barre in https://github.com/Barre/ZeroFS/pull/440
- Website docs restyle by @Barre in https://github.com/Barre/ZeroFS/pull/441
- Kubernetes csi driver by @Barre in https://github.com/Barre/ZeroFS/pull/444
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.2.5...v1.2.6
v1.2.5
📋 What's Changed
- Exclude generic/465 from 9p xfstests: kernel netfs O_DIRECT read past EOF returns ENODATA by @Barre in https://github.com/Barre/ZeroFS/pull/436
- Run foyer caches, slatedb GC/compaction, and ZeroFS GC on a dedicated maintenance runtime by @Barre in https://github.com/Barre/ZeroFS/pull/435
- Bump dependencies by @Barre in https://github.com/Barre/ZeroFS/pull/437
- Fold create/open and create-family metadata ops into single 9P roundtrips via the 9P2000.L.zerofs2 extensions by @Barre in https://github.com/Barre/ZeroFS/pull/438
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.2.4...v1.2.5
v1.2.4
📋 What's Changed
- Performance quick wins on the read/write hot path by @Barre in https://github.com/Barre/ZeroFS/pull/434
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.2.3...v1.2.4
v1.2.3
📋 What's Changed
- Substantial compaction performance improvements
- Bypass the prefetch store and tune read-ahead for compaction by @Barre in https://github.com/Barre/ZeroFS/pull/433
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.2.2...v1.2.3
v1.2.2
📋 What's Changed
- Add configurable object storage class for writes by @Barre in https://github.com/Barre/ZeroFS/pull/431
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.2.1...v1.2.2
v1.2.1
📋 What's Changed
- Tune L0 flush for high-latency stores by @Barre in https://github.com/Barre/ZeroFS/pull/428
- Hot path optimizations @Barre in https://github.com/Barre/ZeroFS/pull/429
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.2.0...v1.2.1
v1.2.0
📋 What's Changed
- Skip read-modify-write reads for chunks beyond the old file size by @Barre in https://github.com/Barre/ZeroFS/pull/425
- Raise default l0_max_ssts from 32 to 64 and correct stale LSM tuning docs by @Barre in https://github.com/Barre/ZeroFS/pull/426
- Add zerofs mount, a userspace FUSE 9P client with transparent reconnect and per-user access
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.15...v1.2.0
v1.1.15
📋 What's Changed
- Avoid panic on spawn_blocking failure during compactor shutdown by @Barre in https://github.com/Barre/ZeroFS/pull/422
- Support writing generated config to stdout via "init -" by @Barre in https://github.com/Barre/ZeroFS/pull/423
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.14...v1.1.15
v1.1.14
📋 What's Changed
- Add async prefetch to fill cache ahead of sequential consumers by @Barre in https://github.com/Barre/ZeroFS/pull/420
- Bump dependencies by @Barre in https://github.com/Barre/ZeroFS/pull/421
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.13...v1.1.14
v1.1.13
📋 What's Changed
- Bypass prefetching object store for compaction by @Barre in https://github.com/Barre/ZeroFS/pull/417
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.12...v1.1.13
v1.1.12
📋 Changes
- Bump dependencies
v1.1.11
📋 What's Changed
- Improve startup error messages with phase labels and consistent formatting by @Barre in https://github.com/Barre/ZeroFS/pull/415
- Adaptive prefetcher with per-file sequential/random I/O detection by @Barre in https://github.com/Barre/ZeroFS/pull/416
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.10...v1.1.11
v1.1.10
📋 What's Changed
- Tune DB settings to reduce flush backpressure by @Barre in https://github.com/Barre/ZeroFS/pull/414
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.9...v1.1.10
v1.1.9
📋 What's Changed
- Default chunk compression to zstd-3 instead of lz4 by @Barre in https://github.com/Barre/ZeroFS/pull/413
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.8...v1.1.9
v1.1.8
📋 What's Changed
- Bump jemalloc to 5.3.1
- Render Total Ops sparkline right-to-left so newest samples stay on screen by @Barre in https://github.com/Barre/ZeroFS/pull/411
- Set User-Agent on object store requests by @Barre in https://github.com/Barre/ZeroFS/pull/412
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.7...v1.1.8
v1.1.7
📋 Changes
- Tune compactor for faster L0 drain
v1.1.6
📦 Compatibility
- This version is backwards compatible but new filesystems adopts a new compaction strategy.
📋 What's Changed
- Adopt segment-oriented compaction with v2 meta/chunk key layout by @Barre in https://github.com/Barre/ZeroFS/pull/408
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.5...v1.1.6
v1.1.5
📋 What's Changed
- Box the 9P request handler future to shrink per-task state machine size by @Barre in https://github.com/Barre/ZeroFS/pull/401
- Bump dependencies by @Barre in https://github.com/Barre/ZeroFS/pull/400
- Consolidate foyer, slatedb maintenance, and main async work onto a single tokio runtime by @Barre in https://github.com/Barre/ZeroFS/pull/402
- Defer 9P deku parsing to the per-request task to unblock the reader by @Barre in https://github.com/Barre/ZeroFS/pull/403
- Skip empty WriteBatch commits to fix fatal exit on sub-chunk trim of a sparse file by @Barre in https://github.com/Barre/ZeroFS/pull/405
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.4...v1.1.5
v1.1.4
📋 What's Changed
- [Use native `into_split()` for 9P TCP/Unix streams to avoid `tokio::io::split` mutex serialization](https://github.com/Barre/ZeroFS/pull/399/changes/e899470cd6f172c4d76bcea0c0c71cfcfa954a4e) by [@Barre](https://github.com/Barre/ZeroFS/commits?author=Barre)
- [Fast-path single-chunk reads in `chunk_store` to skip scan/spawn overhead](https://github.com/Barre/ZeroFS/pull/399/changes/1d4cd5e1025c75cb4acdd7ef1fc0ac22a1c777c8) by [@Barre](https://github.com/Barre/ZeroFS/commits?author=Barre)
- [Lazily allocate `Notify` in 9P dispatch only when `Tflush` actually arrives](https://github.com/Barre/ZeroFS/pull/399/changes/587996364e5800b01363da6d6596a994c04af00c) by [@Barre](https://github.com/Barre/ZeroFS/commits?author=Barre)
- [Coalesce 9P writer responses through a `BufWriter` and drain channel per burst](https://github.com/Barre/ZeroFS/pull/399/changes/27e6261f072c9d46ddc24916f9fa7957115eb76a) by [@Barre](https://github.com/Barre/ZeroFS/commits?author=Barre)
- [Switch foyer caches to S3FIFO eviction to avoid per-shard write-lock contention on cache hits](https://github.com/Barre/ZeroFS/pull/399/changes/0da5f88d8164948d718010d581156b3f695bf13d) by [@Barre](https://github.com/Barre/ZeroFS/commits?author=Barre)
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.3...v1.1.4
v1.1.3
📋 What's Changed
- Use prefix-extracted bloom filters for readdir to skip non-matching SSTs by @Barre in https://github.com/Barre/ZeroFS/pull/398
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.0...v1.1.3
v1.1.1
📋 What's Changed
- Build aarch64 binaries with JEMALLOC_SYS_WITH_LG_PAGE=16 for 16K/64K-page kernels by @Barre in https://github.com/Barre/ZeroFS/pull/396
- Add sync_writes option to flush every commit to object storage before returning by @Barre in https://github.com/Barre/ZeroFS/pull/397
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.1.0...v1.1.1
v1.1.0
💥 Breaking changes
- Before upgrading, stop ZeroFS and remove the contents of your cache directory:
- `rm -rf <cache_dir>/*`
- _(Path is whatever you configured as cache.dir. ZeroFS recreates the layout it needs on startup.)_
📋 What's Changed
- Fix duplicate slatedb_ prefix in Prometheus metric names by @Barre in https://github.com/Barre/ZeroFS/pull/390
- Replace SlateDB CachedObjectStore with foyer-hybrid + in-memory prefetch wrapper by @Barre in https://github.com/Barre/ZeroFS/pull/393
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.14...v1.1.0
v1.0.14
📋 What's Changed
- Various small improvements
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.13...v1.0.14
v1.0.13
📋 What's Changed
- Coalesce commits through a single worker task by @Barre in https://github.com/Barre/ZeroFS/pull/385
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.12...v1.0.13
v1.0.12
📋 What's Changed
- Tune jemalloc and expose allocator stats in monitor and prometheus by @Barre in https://github.com/Barre/ZeroFS/pull/383
- Default wal_enabled to false by @Barre in https://github.com/Barre/ZeroFS/pull/384
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.11...v1.0.12
v1.0.11
📋 What's Changed
- Make NFS server address optional, consistent with other servers by @Barre in https://github.com/Barre/ZeroFS/pull/375
- Bump dependencies by @Barre in https://github.com/Barre/ZeroFS/pull/378
- Bump slatedb by @Barre in https://github.com/Barre/ZeroFS/pull/379
- Revert chunk reads to range scans and tune scan options by @Barre in https://github.com/Barre/ZeroFS/pull/380
- Don't fsync cache writes by @Barre in https://github.com/Barre/ZeroFS/pull/381
- Various performance improvements
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.9...v1.0.11
v1.0.9
📋 What's Changed
- This releases introduces a webui.
- <img width="2914" height="1700" alt="image" src="https://github.com/user-attachments/assets/97d39d5a-11d9-4c67-8d78-846669b2e8f5" />
- The file manager talks to ZeroFS over 9P via WebSocket. Drag-and-drop uploads work, including entire folders.
- <img width="2602" height="2066" alt="image" src="https://github.com/user-attachments/assets/b486b5d8-1dec-4e6b-8c8f-a76b61db7cd7" />
- The dashboard streams live stats (throughput, IOPS, storage usage, operation counters, GC) over gRPC-web.
- <img width="2914" height="1700" alt="image" src="https://github.com/user-attachments/assets/9d8a738f-1acb-4539-a6f3-c0861ff109cf" />
- The terminal runs a Linux VM in the browser using [v86](https://github.com/copy/v86). Its root filesystem is the ZeroFS instance, mounted over the same 9P WebSocket.
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.8...v1.0.9
v1.0.8
📋 What's Changed
- Add real-time TUI monitoring dashboard by @Barre in https://github.com/Barre/ZeroFS/pull/369
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.7...v1.0.8
v1.0.7
📋 What's Changed
- Use system protoc if available by @Barre in https://github.com/Barre/ZeroFS/pull/354
- Bump dependencies by @Barre in https://github.com/Barre/ZeroFS/pull/357
- Telemetry and prometheus by @Barre in https://github.com/Barre/ZeroFS/pull/367
- Update CI zerofs config by @Barre in https://github.com/Barre/ZeroFS/pull/368
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.5...v1.0.7
v1.0.6
📋 What's Changed
- Use system protoc if available by @Barre in https://github.com/Barre/ZeroFS/pull/354
- Bump dependencies by @Barre in https://github.com/Barre/ZeroFS/pull/357
- Fix read-only mode with separate WAL object store by @Barre in https://github.com/Barre/ZeroFS/pull/359
- Full Changelog: https://github.com/Barre/ZeroFS/compare/v1.0.5...v1.0.6
