Create: reference/rustfs.md
This commit is contained in:
@@ -0,0 +1,495 @@
|
||||
---
|
||||
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.*
|
||||
Reference in New Issue
Block a user