RustFS 1.0.0-beta.10 Released: A Milestone Leap Forward in Distributed Storage Performance

Today, we’re excited to announce the official release of RustFS 1.0.0-beta.10.

This is a milestone release for RustFS. Compared with previous versions, 1.0.0-beta.10 delivers major improvements in both performance and stability. In our benchmarks against MinIO, RustFS now outperforms MinIO across PUT requests, while the performance gap for GET requests continues to narrow.

Key Architectural & Quality Improvements

While raw performance is the headline, 1.0.0-beta.10 also introduces rigorous production-grade enhancements across the entire software stack:

  • Optimized Core Storage Path: Streamlined data paths with reduced locking latency, enhanced IO observability, and improved overall throughput stability.
  • S3 Compatibility & Replication: Resolved a high volume of edge-case compliance issues, bucket replication deadlocks, and lifecycle convergence lags.
  • Hardened Default Security: Remediated multiple GHSA-class authorization vulnerabilities and eliminated risky default configuration fallbacks.
  • Decoupled Modular Architecture: Extracted core storage, configuration, and execution runtime contracts to systematically reduce legacy coupling with ECStore.
  • Enterprise-Grade CI/CD Gateways: Upgraded our release pipeline with automated Software Bill of Materials (SBOM) generation, SLSA provenance verification, strict dependency pinning, and multi-layered end-to-end (E2E) regression testing.

Performance Benchmarks

To validate these gains, we deployed both RustFS and MinIO in a mirrored enterprise environment on Azure Cloud.

Test Environment Setup

Node numDisk num/nodeDisk storage capacityDisk IOPSOSCPU coreRAMCloud provider
44300GB32000Ubuntu 24.04816GBAzure

Methodology & Version Info

Benchmarking Tool: MinIO’s open-source warp tool running 11 object sizes with 64 concurrent clients for 5 minutes per run (covering GET, PUT, and Mixed phases).

  • RustFS Build Profile:
rustfs 1.0.0-beta.10
build time   : 2026-07-17 04:58:16 +00:00
build profile: release
build os     : linux-x86_64
rust version : rustc 1.97.1 (8bab26f4f 2026-07-14)
rust channel : stable-x86_64-unknown-linux-gnu
git branch   : 
git commit   : f67e8a6cdcb3e08dfa3c3c390412a9815837d0b2
git tag      : 1.0.0-beta.10
git status   :
  • MinIO Build Profile:
minio version RELEASE.2026-06-06T02-44-06Z (commit-id=a5e7b80cc659ff4b75d6d3d7be2caf72317b7a23)
Runtime: go1.26.4 linux/amd64
License: MinIO AIStor License
Copyright: 2015-2026 MinIO, Inc.

Cluster Configurations

  • RustFS Env Config:
RUSTFS_ACCESS_KEY=rustfstest
RUSTFS_SECRET_KEY=rustfstest
RUSTFS_VOLUMES="http://rustfs-node{1...4}:9000/data/rustfs{1...4}/mnmd"
RUSTFS_ADDRESS=":9000"
RUSTFS_CONSOLE_ADDRESS=":9001"
RUSTFS_CONSOLE_ENABLE=true
RUSTFS_OBS_LOGGER_LEVEL=error
  • MinIO Env Config:
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_LICENSE="/opt/minio/minio.license"
MINIO_BROWSER="on"
MINIO_VOLUMES="http://rustfs-node{5...8}:19000/data/rustfs{1...4}/mnmd"
MINIO_OPTS="--address :19000 --console-address :19001"

Benchmark Results: Evolution & Head-to-Head

Part 1: RustFS 1.0.0-beta.8 vs. 1.0.0-beta.10

The performance jump between our two most recent versions is extraordinary. Writes (PUT) are up to 2.4x faster, and reads (GET) have consistently achieved 100%+ improvement across almost all payload sizes.

PUT

Object size1.0.0-beta.101.0.0-beta.8percentage improvement
1KiB2,195.911,524+44.1%
4KiB2,150.881,562+37.7%
10KiB2,150.421,518+41.7%
16KiB2,082.301,559+33.6%
32KiB2,006.791,436+39.7%
100KiB1,850.761,093+69.3%
1MiB1,017.72293+247.3%
4MiB652.31481+35.6%
10MiB301.34267+12.9%
16MiB190.33175+8.8%
32MiB90.6769+31.4%

GET

Object size1.0.0-beta.101.0.0-beta.8percentage improvement
1KiB12,409.746,125+102.6%
4KiB12,071.085,829+107.1%
10KiB11,556.065,656+104.3%
16KiB11,239.025,463+105.7%
32KiB10,209.605,194+96.6%
100KiB7,152.313,689+93.9%
1MiB1,327.43705+88.3%
4MiB1,549.36271+471.7%
10MiB595.67248+140.2%
16MiB370.21ERRORN/A
32MiB187.66ERRORN/A

Part 2: RustFS vs. MinIO

RustFS now outperforms MinIO across all PUT workloads, reaching up to 2.x the performance of MinIO for certain object sizes. For GET performance, RustFS continues to narrow the gap with MinIO.

PUT

Thanks to highly parallelized metadata serialization and lockless memory-mapped IO operations, RustFS outperforms MinIO across 100% of the write workloads, delivering up to 2.85x the throughput.

Object sizeRustFSMinIORatioLeader
1KiB2,195.911,4701.49RustFS
4KiB2,150.881,0772.00RustFS
10KiB2,150.421,0752.00RustFS
16KiB2,082.301,2191.71RustFS
32KiB2,006.791,1551.74RustFS
100KiB1,850.767122.60RustFS
1MiB1,017.724702.17RustFS
4MiB652.312292.85RustFS
10MiB301.341462.06RustFS
16MiB190.331821.05RustFS
32MiB90.67691.31RustFS

GET

For read performance, RustFS has closed the gap to a razor-thin margin. Crucially, our optimized read-ahead caching mechanism and zero-copy data routing allow us to beat MinIO in small-file classes and multiple large object segments (>4MiB).

Object sizeRustFSMinIORatioLeader
1KiB12,409.7411,9381.04RustFS
4KiB12,071.0811,7691.03RustFS
10KiB11,556.0611,0091.05RustFS
16KiB11,239.0210,9631.03RustFS
32KiB10,209.6010,8870.94MinIO
100KiB7,152.319,9650.72MinIO
1MiB1,327.435,8930.23MinIO
4MiB1,549.361,2341.26RustFS
10MiB595.675501.08RustFS
16MiB370.213151.18RustFS
32MiB187.661661.13RustFS

Important Migration & Upgrade Notes

To align with modern security best practices and prevent unauthorized access on default deployments, we have deprecated the hardcoded default fallback credentials (rustfsadmin).

Security Enhancements:

  • Users must now explicitly specify values for RUSTFS_ACCESS_KEY and RUSTFS_SECRET_KEY prior to launching the server.
  • The runtime will no longer allow the server to boot if default placeholders are left unchanged.

Action Required for Existing Clusters:

  • If your active RUSTFS_SECRET_KEY is still set to rustfsadmin, you must add an additional environment variable: RUSTFS_RPC_SECRET.
  • Note: The value of RUSTFS_RPC_SECRETmust be different from RUSTFS_SECRET_KEY.
  • If you are already utilizing custom access/secret keys, no additional action is required.

Ecosystem Updates

An enterprise-grade object storage system relies on an equally robust developer toolset. Along with the server, we have released critical updates to our CLI utility and Kubernetes Operator.

rc CLI (v0.1.27) — The Native Command-Line Utility

Our dedicated CLI companion, rc (similar to MinIO’s mc), has been updated with enhanced multi-stream upload logic and faster local-to-remote directory syncs.

  • Quick Setup & Verification:
# Set a cluster connection alias
$ rc alias set rustfs http://<your-ip>:9000 rustfstest rustfstest
✓ Alias 'rustfs' configured successfully.

# Create and list buckets
$ rc mb rustfs/benchmark-bucket
✓ Bucket 'rustfs/benchmark-bucket' created successfully.

$ rc ls rustfs
[2026-07-16 14:30:01]         0B benchmark-bucket/

# Stream-upload a local file
$ echo "RustFS performance milestone" > test-object.txt
$ rc cp test-object.txt rustfs/benchmark-bucket
test-object.txt -> rustfs/benchmark-bucket/test-object.txt (29 B)

For detailed usage, explore the RustFS CLI GitHub Repository.

RustFS Operator (v0.0.5) — Native Kubernetes Orchestration

Our cloud-native RustFS Operator has achieved full-infrastructure automation, adding native multi-tenant management and dynamic storage pool expansion.

  • Step 1: Add the Official Helm Repository

Our charts are published natively to ArtifactHub.

$ helm repo add operator https://operator.rustfs.com
  • Step 2: Install the Operator & Management Console
helm install operator operator/rustfs-operator --version 0.0.5

Once deployed, you will see the operator controller and administrative console pods up and running:

kubectl -n rustfs-system get pods
NAME                                                READY   STATUS    RESTARTS   AGE
operator-rustfs-operator-978454bf4-zgdp9            1/1     Running   0          3d14h
operator-rustfs-operator-console-7cfbf88c84-m7ct2   1/1     Running   0          3d14h
  • Step 3: Deploy a Declarative Multi-Tenant Cluster

Simply apply the following custom resource (CRD) to automatically provision a resilient 4-node tenant cluster with 16 storage disks:

kubectl apply -f - <<EOF
apiVersion: rustfs.com/v1alpha1
kind: Tenant
metadata:
  name: svt-minimal
  namespace: tenant-svt
spec:
  image: rustfs/rustfs:latest
  pools:
    - name: dev-pool
      servers: 4
      persistence:
        volumesPerServer: 4
EOF

Check the tenant info

# kubectl -n tenant-svt get tenant
NAME          STATE   AGE
svt-minimal   Ready   3d14h

# kubectl -n tenant-svt get pods
NAME                     READY   STATUS    RESTARTS        AGE
svt-minimal-dev-pool-0   1/1     Running   0               3d14h
svt-minimal-dev-pool-1   1/1     Running   0               3d14h
svt-minimal-dev-pool-2   1/1     Running   0               3d14h
svt-minimal-dev-pool-3   1/1     Running   0               3d14h

For full Helm value mappings and advanced configuration profiles, visit our RustFS Kubernetes Operator GitHub Repository.

What’s Next: The Road to General Availability (GA)

The milestones achieved in 1.0.0-beta.10 represent the maturation of RustFS into a reliable, high-performance distributed storage engine. As we charge toward our GA release, we will focus our development cycles on refining Galois Field lookup matrices for Reed-Solomon Erasure Coding, optimizing multi-tenant network policies, and further expanding unified analytical S3 Tables structures.

We are an open-source, community-driven project. If you have any feature requests, bug reports, or questions, please join our growing community of developers on GitHub:

Previous Article

RustFS Brings Native Support for S3 Tables: Upgrading Object Storage to AI-Native Storage

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *