495 lines
14 KiB
Markdown
495 lines
14 KiB
Markdown
---
|
||
created: '2026-04-16T03:58:55+00:00'
|
||
id: c724b70a-3a92-4527-82a8-22a64533adee
|
||
keywords:
|
||
- RustFS
|
||
- object storage
|
||
- S3 compatible
|
||
- Rust
|
||
- erasure coding
|
||
- Reed-Solomon
|
||
- distributed storage
|
||
- docker
|
||
- kubernetes
|
||
- MinIO client
|
||
- mc
|
||
- AWS S3 SDK
|
||
- Apache 2.0
|
||
- Blake3
|
||
- Rayon
|
||
- AVX2
|
||
- WORM
|
||
- federation
|
||
- multi-cloud gateway
|
||
- SNSD
|
||
- SNMD
|
||
- MNMD
|
||
links: []
|
||
modified: '2026-04-16T03:58:55+00:00'
|
||
summary: Comprehensive reference for RustFS, a high-performance distributed object
|
||
storage system written in Rust. Covers architecture, installation, S3 compatibility,
|
||
erasure coding, SDKs, management, and usage limits.
|
||
tags:
|
||
- rustfs
|
||
- object-storage
|
||
- s3
|
||
- distributed-storage
|
||
- docker
|
||
- kubernetes
|
||
- rust
|
||
- devops
|
||
- reference
|
||
title: RustFS — High-Performance Distributed Object Storage
|
||
---
|
||
|
||
---
|
||
id: reference/rustfs
|
||
title: "RustFS — High-Performance Distributed Object Storage"
|
||
created: 2025-07-10
|
||
modified: 2025-07-10
|
||
tags:
|
||
- rustfs
|
||
- object-storage
|
||
- s3
|
||
- distributed-storage
|
||
- docker
|
||
- kubernetes
|
||
- rust
|
||
- devops
|
||
- reference
|
||
keywords:
|
||
- RustFS
|
||
- object storage
|
||
- S3 compatible
|
||
- Rust
|
||
- erasure coding
|
||
- Reed-Solomon
|
||
- distributed storage
|
||
- docker
|
||
- kubernetes
|
||
- MinIO client
|
||
- mc
|
||
- AWS S3 SDK
|
||
- Apache 2.0
|
||
- Blake3
|
||
- Rayon
|
||
- AVX2
|
||
- WORM
|
||
- federation
|
||
- multi-cloud gateway
|
||
- SNSD
|
||
- SNMD
|
||
- MNMD
|
||
links:
|
||
- "[[reference/docker-compose]]"
|
||
---
|
||
|
||
# RustFS — High-Performance Distributed Object Storage
|
||
|
||
> **Official documentation:** <https://docs.rustfs.com>
|
||
> **License:** Apache 2.0 (commercially friendly)
|
||
> **Repository:** `git@github.com:rustfs/rustfs.git`
|
||
> **Docker image:** `rustfs/rustfs`
|
||
|
||
RustFS is a high-performance, distributed object storage solution designed for simplicity and efficiency. Fully compatible with the S3 protocol, it is open-source software built with Rust — leveraging industry-leading memory safety and zero-cost abstractions to deliver exceptional performance comparable to C/C++.
|
||
|
||
It serves as a modern alternative to legacy object storage solutions, offering a robust platform for data-intensive applications.
|
||
|
||
---
|
||
|
||
## Table of Contents
|
||
|
||
- [Overview & Features](#overview--features)
|
||
- [Architecture](#architecture)
|
||
- [Installation](#installation)
|
||
- [Deployment Modes](#deployment-modes)
|
||
- [Docker Quick Start](#docker-quick-start)
|
||
- [Docker Compose Deployment](#docker-compose-deployment)
|
||
- [Production Recommendations](#production-recommendations)
|
||
- [S3 Compatibility](#s3-compatibility)
|
||
- [Erasure Coding](#erasure-coding)
|
||
- [Bare Metal & Virtualized Deployment](#bare-metal--virtualized-deployment)
|
||
- [Enterprise Features](#enterprise-features)
|
||
- [SDKs & Client Libraries](#sdks--client-libraries)
|
||
- [MinIO Client (mc) Reference](#minio-client-mc-reference)
|
||
- [Usage Limits](#usage-limits)
|
||
- [Platform & OS Support](#platform--os-support)
|
||
- [Documentation Map](#documentation-map)
|
||
- [Related](#related)
|
||
|
||
---
|
||
|
||
## Overview & Features
|
||
|
||
| Feature | Detail |
|
||
|---|---|
|
||
| **S3 Compatible** | Fully compatible with the S3 API (V2 and V4) |
|
||
| **Distributed Architecture** | Horizontal scaling, symmetric nodes |
|
||
| **License** | Apache v2.0 — commercially friendly |
|
||
| **Language** | Rust — memory safety, zero-cost abstractions |
|
||
| **Performance** | Comparable to C/C++ |
|
||
| **Security** | Rust memory safety guarantees, TLS, AES-256-GCM, KMS integration |
|
||
| **Cross-Platform** | Linux, macOS, Windows, FreeBSD, Docker, edge gateways |
|
||
| **Extensible** | Plugin architecture |
|
||
| **Cloud-Native** | Docker and Kubernetes optimized |
|
||
| **Single Binary** | ~100 MB static binary |
|
||
|
||
**Vision:** Provide the storage foundation for the AI era, enabling every personal AI agent to securely store and access data.
|
||
|
||
---
|
||
|
||
## Architecture
|
||
|
||
RustFS uses a **fully symmetric architecture** — all servers are functionally equal. There are no name nodes or metadata servers. Data and metadata are written atomically. Key architectural characteristics:
|
||
|
||
- **One process per node** with lightweight coroutines for high concurrency.
|
||
- **Erasure sets** group drives (default: 16 drives/set) with deterministic hashing for object placement.
|
||
- **Inline operations:** erasure coding, bitrot checking, and encryption are strictly consistent — applied before the write acknowledgment is returned.
|
||
- **Single-layer software-defined design** running on industry-standard hardware (JBOD/JBOF commodity servers).
|
||
- **Lightweight containers** suitable for Kubernetes deployment.
|
||
- **Multi-datacenter** support: each tenant runs an isolated cluster; independent scaling via federation across geographies.
|
||
|
||
### S3 Ports
|
||
|
||
| Port | Purpose |
|
||
|---|---|
|
||
| `9000` | S3 API |
|
||
| `9001` | Console UI |
|
||
|
||
---
|
||
|
||
## Installation
|
||
|
||
### Deployment Modes
|
||
|
||
RustFS supports three installation modes, each suited to different scales:
|
||
|
||
| Mode | Abbreviation | Use Case | Redundancy |
|
||
|---|---|---|---|
|
||
| **Single Node, Single Disk** | SNSD | Local testing, small-scale | None — zero erasure coding |
|
||
| **Single Node, Multiple Disk** | SNMD | Development, moderate workloads | Erasure coding across local disks |
|
||
| **Multiple Node, Multiple Disk** | MNMD | Enterprise-grade production | Full erasure coding + distributed redundancy |
|
||
|
||
> **Pre-installation checks** are recommended. RustFS runs on almost any CPU/OS (x86, ARM).
|
||
|
||
### Docker Quick Start
|
||
|
||
**Prerequisites:** Docker ≥ 20.10, port 9000 open.
|
||
|
||
```bash
|
||
docker pull rustfs/rustfs
|
||
|
||
docker run -d \
|
||
--name rustfs_local \
|
||
-p 9000:9000 \
|
||
-p 9001:9001 \
|
||
-v /mnt/rustfs/data:/data \
|
||
rustfs/rustfs:latest \
|
||
/data
|
||
```
|
||
|
||
The container runs as a non-root user `rustfs` (UID `10001`).
|
||
|
||
#### Environment Variables
|
||
|
||
| Variable | Default | Description |
|
||
|---|---|---|
|
||
| `RUSTFS_ADDRESS` | `:9000` | S3 API bind address |
|
||
| `RUSTFS_SERVER_DOMAINS` | — | Server domain(s) |
|
||
| `RUSTFS_ACCESS_KEY` | `rustfsadmin` | Access key |
|
||
| `RUSTFS_SECRET_KEY` | `rustfsadmin` | Secret key |
|
||
| `RUSTFS_CONSOLE_ENABLE` | `true` | Enable Console UI on port 9001 |
|
||
|
||
Command-line parameters are also supported and take **higher priority** than environment variables.
|
||
|
||
### Docker Compose Deployment
|
||
|
||
> For the full Docker Compose reference, see **[Docker Compose Deployment](/reference/docker-compose)**.
|
||
|
||
```bash
|
||
# Clone the repository
|
||
git clone git@github.com:rustfs/rustfs.git
|
||
|
||
# Start with observability stack (Grafana, Prometheus, Jaeger, OpenTelemetry Collector)
|
||
docker compose --profile observability up -d
|
||
|
||
# Start RustFS only (no observability)
|
||
docker compose -f docker-compose.yml up -d rustfs
|
||
```
|
||
|
||
The observability profile starts: **rustfs-server**, **Grafana**, **Prometheus**, **Jaeger**, and **otel-collector**.
|
||
|
||
#### Default Credentials
|
||
|
||
| Method | Username | Password |
|
||
|---|---|---|
|
||
| Environment variables | `rustfsadmin` | `rustfsadmin` |
|
||
| Some documentation | `rustfsadmin` | `ChangeMe123!` |
|
||
|
||
#### TLS Support
|
||
|
||
Mount certificates and set `RUSTFS_TLS_PATH` to enable TLS.
|
||
|
||
### Production Recommendations
|
||
|
||
- Deploy **multi-node** for redundancy and performance.
|
||
- Enable **TLS** for all connections.
|
||
- Configure **log rotation**.
|
||
- Establish a **backup strategy**.
|
||
- Use **local SSD/NVMe** storage.
|
||
- **Avoid NFS** — use direct-attached storage.
|
||
|
||
---
|
||
|
||
## S3 Compatibility
|
||
|
||
RustFS maintains strict adherence to S3 API standards, supporting **API V2 and V4** with location-independent compatibility across:
|
||
|
||
- Public cloud
|
||
- Private cloud
|
||
- Data center
|
||
- Multi-cloud
|
||
- Hybrid cloud
|
||
- Edge deployments
|
||
|
||
### Core S3 Features
|
||
|
||
- **S3 Select:** SIMD-optimized queries on CSV, Parquet, and JSON data.
|
||
- **AWS Signature Version 4:** Policy-based access control compatible with AWS IAM.
|
||
- **Broad ecosystem support:** GitHub/GitLab, MongoDB, ClickHouse, MariaDB, CockroachDB, Teradata, KubeFlow, TensorFlow.
|
||
|
||
---
|
||
|
||
## Erasure Coding
|
||
|
||
RustFS uses **Reed-Solomon (RS) Code** based on finite field algebraic structures.
|
||
|
||
### Key Parameters
|
||
|
||
| Parameter | Meaning |
|
||
|---|---|
|
||
| **k** | Original data shards |
|
||
| **m** | Parity shards |
|
||
| **n** | Total shards (k + m) |
|
||
|
||
Any **k** of **n** shards are sufficient to recover the original data. Recovery uses Gaussian elimination or FFT.
|
||
|
||
### Example: RS(10, 4)
|
||
|
||
- **Fault tolerance:** 4 nodes
|
||
- **Storage utilization:** 71% (vs 33% for triple replication)
|
||
|
||
### RustFS Implementation Details
|
||
|
||
| Component | Detail |
|
||
|---|---|
|
||
| **Shard size** | Dynamic, 64 KB – 4 MB |
|
||
| **Hash checksum** | Blake3 algorithm |
|
||
| **Parallel encoding** | Rayon framework + AVX2 SIMD instructions |
|
||
| **Finite field** | GF(2⁸) with generator polynomial `0x11D` |
|
||
| **Tiering** | Runtime (k, m) adjustment for hot/warm/cold tiers |
|
||
| **Max parity** | N/2 |
|
||
|
||
---
|
||
|
||
## Bare Metal & Virtualized Deployment
|
||
|
||
RustFS is software-defined, runs on industry-standard hardware, and requires no special storage appliances.
|
||
|
||
### Key Capabilities
|
||
|
||
| Feature | Detail |
|
||
|---|---|
|
||
| **Bitrot Protection** | HighwayHash, READ/WRITE verification, >10 GB/s hash speed on single core |
|
||
| **Server-Side Encryption** | AES-256-GCM, ChaCha20-Poly1305, AES-CBC; AEAD encryption; KMS integration (HashiCorp Vault); SSE-S3 support |
|
||
| **WORM** | Write Once Read Many — disables all mutation APIs; for regulatory compliance |
|
||
| **Identity Management** | OpenID Connect, external IdP integration, temporary rotated passwords, fine-grained access policies |
|
||
| **Continuous Replication** | Lambda-based notifications for immediate change propagation; cross-datacenter, multi-vendor |
|
||
| **Global Federation** | Unified namespace across distributed mode sets; unlimited mode sets per federation; single console administration |
|
||
| **Multi-Cloud Gateway** | S3 API view regardless of data location; makes non-S3 storage appear S3-compatible |
|
||
|
||
---
|
||
|
||
## Enterprise Features
|
||
|
||
- **Object Lock & Read-Only:** Compliance and governance modes.
|
||
- **Cross-Region Replication:** Active-active and active-passive.
|
||
- **Version Control:** Configurable version limits.
|
||
- **Lifecycle Management:** Automated tiering and expiration policies.
|
||
- **Log Management:** Structured logging with observability integration.
|
||
- **Encryption:** At-rest and in-transit with KMS support.
|
||
|
||
---
|
||
|
||
## SDKs & Client Libraries
|
||
|
||
### Management Interfaces
|
||
|
||
1. **Console UI** — web-based (port 9001)
|
||
2. **MinIO Client (mc)** — CLI tool
|
||
3. **SDKs** — programmatic access
|
||
|
||
### Available SDKs
|
||
|
||
| Language | Recommended SDK |
|
||
|---|---|
|
||
| Java | Official AWS S3 SDK for Java |
|
||
| JavaScript | Official AWS S3 SDK for JavaScript |
|
||
| Python | Official AWS S3 SDK for Python (boto3) |
|
||
| Rust | Official AWS S3 SDK for Rust |
|
||
| TypeScript | Official AWS S3 SDK for TypeScript |
|
||
| Golang | Official AWS S3 SDK for Go |
|
||
|
||
> **Recommendation:** Use the **official AWS S3 SDKs** — they are mature, well-maintained, and highly optimized. RustFS is fully compatible. Fully compatible with MinIO SDKs as well (just change Endpoint, AK, SK). Avoid non-S3-compliant third-party SDKs.
|
||
|
||
---
|
||
|
||
## MinIO Client (mc) Reference
|
||
|
||
### Setup
|
||
|
||
```bash
|
||
mc alias set rustfs http://12.34.56.78:9000 ACCESS_KEY SECRET_KEY
|
||
```
|
||
|
||
### Common Operations
|
||
|
||
```bash
|
||
mc ls rustfs # List buckets
|
||
mc mb rustfs/mybucket # Create bucket
|
||
mc rb rustfs/mybucket # Delete bucket
|
||
mc cp localfile.txt rustfs/mybucket # Upload object
|
||
mc rm rustfs/mybucket/localfile.txt # Delete object
|
||
mc get rustfs/mybucket/localfile.txt . # Download object
|
||
```
|
||
|
||
### Quick Verification
|
||
|
||
```bash
|
||
mc alias set rustfs http://localhost:9000 rustfsadmin ChangeMe123!
|
||
mc mb rustfs/mybucket
|
||
mc ls rustfs
|
||
```
|
||
|
||
---
|
||
|
||
## Usage Limits
|
||
|
||
### S3 API Limits
|
||
|
||
| Resource | Limit |
|
||
|---|---|
|
||
| Max object size | 5 TiB |
|
||
| Min object size | 0 B |
|
||
| Single PUT max (non-multipart) | 500 GiB |
|
||
| Multipart upload max | 5 TiB |
|
||
| Max parts per upload | 10,000 |
|
||
| Part size range | 5 MiB – 5 GiB (last part: 0 – 5 GiB) |
|
||
| Max list objects per request | 1,000 |
|
||
| Bucket name max length | 63 characters |
|
||
| Object name max length | 1,024 characters |
|
||
| Object name segment max (per `/`) | 255 characters |
|
||
| Max versions per object | 10,000 (configurable) |
|
||
|
||
### Erasure Coding Limits
|
||
|
||
| Resource | Limit |
|
||
|---|---|
|
||
| Max servers per cluster | No hard limit |
|
||
| Max drives per server | No hard limit |
|
||
| Min servers | 1 (SNSD — no redundancy) |
|
||
| Read quorum | N/2 |
|
||
| Write quorum | (N/2) + 1 |
|
||
|
||
### Naming Conventions
|
||
|
||
- **Production recommendation:** Linux + XFS filesystem.
|
||
- Avoid special characters on Windows.
|
||
- Do not create objects whose names conflict with parent or sibling prefixes.
|
||
|
||
---
|
||
|
||
## Platform & OS Support
|
||
|
||
| Platform | Supported |
|
||
|---|---|
|
||
| Linux | ✅ |
|
||
| Unix | ✅ |
|
||
| Windows | ✅ |
|
||
| macOS | ✅ |
|
||
| FreeBSD | ✅ |
|
||
| Docker | ✅ |
|
||
| Edge gateways | ✅ |
|
||
|
||
**CPU architectures:** x86, ARM, and others.
|
||
|
||
---
|
||
|
||
## Documentation Map
|
||
|
||
Reference structure of the official RustFS documentation at <https://docs.rustfs.com>:
|
||
|
||
### Installation
|
||
- [Linux (SNSD / SNMD / MNMD)](https://docs.rustfs.com/installation/linux/)
|
||
- [Windows](https://docs.rustfs.com/installation/)
|
||
- [macOS](https://docs.rustfs.com/installation/)
|
||
- [Docker](https://docs.rustfs.com/installation/docker/)
|
||
- Installation Checklist: Hardware, Network, Software, Security
|
||
|
||
### Performance
|
||
- Comparison, Design Architecture, Terminology, Usage Limits
|
||
|
||
### Core Concepts
|
||
- [Erasure Coding](https://docs.rustfs.com/concepts/principle/erasure-coding.html)
|
||
- [Introduction](https://docs.rustfs.com/concepts/introduction.html)
|
||
|
||
### Management
|
||
- Bucket (creation/deletion)
|
||
- Object (upload/deletion/scanner)
|
||
- IAM (access tokens)
|
||
- Upgrade / Expansion / Uninstallation
|
||
- Troubleshooting: Disk Failure, Object Healing, Node Failure
|
||
|
||
### Integration
|
||
- Nginx Reverse Proxy
|
||
- Virtual Host Mode
|
||
- TLS Configuration
|
||
|
||
### Developer
|
||
- MCP
|
||
- [MinIO Client (mc)](https://docs.rustfs.com/developer/mc.html)
|
||
- [SDKs](https://docs.rustfs.com/developer/sdk/) (Java, Python, Rust, JS, TS, Go)
|
||
- [S3 Compatible API](https://docs.rustfs.com/features/s3-compatibility/)
|
||
|
||
### Features
|
||
- [Distributed Architecture](https://docs.rustfs.com/features/distributed/)
|
||
- [Bare Metal & Virtualized Deployment](https://docs.rustfs.com/features/baremetal)
|
||
- Log Management
|
||
- Version Control
|
||
- S3 Compatibility
|
||
- Object Lock & Read-Only
|
||
- Cross-Region Replication
|
||
- Encryption
|
||
- Lifecycle Management
|
||
|
||
### Solutions
|
||
- Modern Data Lake
|
||
- AI / ML
|
||
- Cloud Native
|
||
- Big Data — Compute/Storage Separation
|
||
- SQL Support
|
||
- Quantitative Trading
|
||
- Manufacturing Cost Reduction
|
||
- Cold Archive
|
||
- Video Storage
|
||
- Domestic Innovation
|
||
|
||
---
|
||
|
||
## Related
|
||
|
||
- **[Docker Compose Deployment](/reference/docker-compose)** — Docker Compose deployment patterns and configuration reference, including the RustFS observability stack.
|
||
|
||
---
|
||
|
||
*Source: <https://docs.rustfs.com> — official RustFS documentation.* |