Runix FS is a POSIX file system and a multi-tier distributed cache over object storage, built on Curvine, the open-source project it packages. Because the engine is open source, you can try it today on a single machine with the steps below; they follow the Curvine documentation, and every command on this page comes from it. In early access, we deploy and size the production cluster with you.
1. What you deploy
- Masters hold the metadata: the namespace, the mount table and scheduling. Run three for high availability; they replicate metadata with Raft.
- Workers hold the cache, in memory, SSD and HDD tiers, and serve data directly to clients. On a miss they read from the bucket.
- Access is whichever of these your workloads need: the FUSE daemon for a POSIX mount, the S3-compatible gateway, the CSI driver for Kubernetes, or the Java, Python and Rust SDKs.
The bucket stays the durable copy. File paths map one-to-one to object keys, so the data remains readable in its original layout without the cluster.
2. Try it on one machine
Download a release package from the Curvine releases page, extract it, and start a local cluster from the extracted directory:
export CURVINE_MASTER_HOSTNAME=localhost
./bin/restart-all.sh
This starts a master, a worker and the FUSE daemon, mounted at /curvine-fuse by default. Confirm the cluster is healthy and list the namespace:
bin/cv report
bin/cv fs mkdir /quick-start
bin/cv fs ls /
The web UI is served on port 9000 on the master and 9001 on the worker. localhost is only right for a single machine: on more than one node, set the master, worker and client hostnames to addresses the other nodes can reach.
3. Attach a bucket
A mount attaches a bucket prefix to a path in the namespace. In cache_mode, reads are served from the cache and filled from the bucket on a miss:
bin/cv mount s3://training-data/imagenet /training-data/imagenet \
--write-type cache_mode \
-c s3.endpoint_url=https://s3.us-east-1.amazonaws.com \
-c s3.region_name=us-east-1 \
-c s3.credentials.access=$AWS_ACCESS_KEY_ID \
-c s3.credentials.secret=$AWS_SECRET_ACCESS_KEY
By default the path inside the namespace mirrors the bucket and prefix, as above. Mounts are stored in the metadata, so they survive a restart. To warm the cache before a job starts, load a path ahead of time:
bin/cv load /training-data/imagenet/train/shard-00001.tar --watch
4. Mount it
The FUSE daemon exposes the namespace as a local directory, so existing code reads files by path:
bin/curvine-fuse.sh start --mnt-path /mnt/curvine
ls /mnt/curvine/training-data/imagenet
Standard file operations work under the mount, including rename, permissions, symbolic links and extended attributes. Both FUSE 2 and FUSE 3 are supported.
5. Kubernetes volumes
The CSI driver provisions a volume by creating a directory in the namespace, so claims bind without calling a cloud API. A StorageClass points the driver at the masters and names the directory new volumes are created under:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: curvine-sc
provisioner: curvine
volumeBindingMode: Immediate
allowVolumeExpansion: true
parameters:
master-addrs: "m0:8995,m1:8995,m2:8995"
fs-path: "/agents"
path-type: "DirectoryOrCreate"
Claims against curvine-sc can be ReadWriteMany, so several pods can share one volume. The example manifests ship in the Curvine source tree under curvine-csi/examples.
6. The S3 gateway
The gateway serves the same namespace over the S3 API, on port 9900 by default, so S3 tools and SDKs work against it:
bin/curvine-s3-gateway.sh start
aws s3 ls s3://training-data/ --endpoint-url http://localhost:9900
7. Early access with Runix
The steps above are enough to evaluate the engine. A production cluster is a sizing question: how much of the working set the cache should hold, which tiers the workers get, and where the masters run. In early access we answer it with you, deploy the cluster into your own cloud account, and support it afterwards under a contract with Runix AI Inc.
Tell us about your data: where it lives, how big it is and what reads it. We reply within one business day.