Linux sees files.
The FUSE frontend handles file I/O, directories, links, ownership, timestamps, extended attributes, and permissions. Byte-oriented filenames are preserved without assuming UTF-8.
Browse the FUSE frontendUnder the hood
A Linux FUSE frontend connects ordinary file operations to an erasure-coded data path, persistent metadata, and a health-aware controller.
The FUSE frontend handles file I/O, directories, links, ownership, timestamps, extended attributes, and permissions. Byte-oriented filenames are preserved without assuming UTF-8.
Browse the FUSE frontendWrites are split into stripes, compressed and optionally encrypted, then encoded into data and parity shards. Checksums detect corruption; surviving shards support degraded reads and repair.
Browse the data pathMetadata copies, checksummed journals, replay, and checkpoints support recovery. The current implementation still serializes logical metadata as JSON; keyed-page helpers and raw checkpoint indexes are steps toward a more scalable store.
Metadata design & current limitsDisk health, capacity, latency, and workload signals guide placement and maintenance. The controller can explain its choices, limit background work, and verify state after an action.
Read the controller modelThe control loop
Each stage makes the controller’s behavior inspectable. Dry-run mode lets you review a plan before any maintenance is executed.
Collect available SMART counters, capacity pressure, measured latency, and workload information. Missing telemetry is part of the state.
Score candidate actions with confirmation gates, cooldowns, redundancy checks, and capacity constraints. Keep rejection reasons visible.
Run bounded scrub, drain, repair, or rebalance work. Maintenance budgets and throttling limit how much work a cycle can do.
Check journal, filesystem, and shard state after maintenance. Verification failures can downgrade the automation mode.
Storage backends
Shard objects are ordinary host files. This is the simplest way to explore the CLI and mounted behavior.
Image files use the project’s block layout and allocator. Useful for testing pool and rootfs behavior without assigning physical disks.
Dedicated block devices use the same raw format. Device selection, recovery, and replacement need operator validation.
Data-path options
Per-stripe compression is configurable. Choose the CPU and storage trade-off that fits the data you actually store.
Optional XChaCha20-Poly1305 protects stripe data with Argon2id-derived keys. Encryption is configured explicitly.
RAM and persistent L2 caches accelerate reads. Optional direct I/O and io_uring paths have buffered fallbacks.