Repository for Laerning Rustfs
RustFS is an open-source object storage server written in Rust. It provides an Amazon S3-compatible API, allowing applications to store and retrieve objects such as documents, images, videos, backups, and datasets using standard S3 tools and SDKs.
+------------+ S3 API +------------------+
| Application| ---------------> | RustFS |
+------------+ +------------------+
|
+------------+------------+
| |
Metadata Storage Object Storage
| |
Object Information Images, Videos,
Documents, Backups
- Written in Rust for safety and performance.
- S3-compatible API.
- Stores unstructured data as objects.
- Scalable and reliable.
- Suitable for cloud-native applications, backups, and data lakes.
Each stored object consists of:
- Object data
- Metadata
- Unique Object ID
Unlike traditional file systems, object storage uses a flat namespace instead of folders, making it highly scalable.
is a storage configuration where multiple physical disks are used independently rather than combined into a RAID array. In Linux, each disk is treated as its own separate storage device unless you explicitly combine them with tools like LVM or mdadm.
Imagine you have four hard drives:
Disk 1 → 500 GB
Disk 2 → 1 TB
Disk 3 → 2 TB
Disk 4 → 4 TB
In a JBOD setup:
- Each disk is visible separately.
- Data is stored on whichever disk you choose.
- There is no striping, no mirroring, and no parity.
Linux
/dev/sda → 500 GB
/dev/sdb → 1 TB
/dev/sdc → 2 TB
/dev/sdd → 4 TB
You can mount each disk individually:
sudo mount /dev/sdb1 /mnt/disk1
sudo mount /dev/sdc1 /mnt/disk2
sudo mount /dev/sdd1 /mnt/disk3| Feature | JBOD | RAID 0 | RAID 1 |
|---|---|---|---|
| Data Protection | ❌ No | ❌ No | ✅ Yes |
| Performance | Normal | High | Read performance can improve |
| Combines Disks | No (or simple concatenation on some controllers) | Yes | Yes |
| Disk Sizes | Can differ | Usually matched | Usually matched |
| Fault Tolerance | None | None | Can survive one disk failure (per mirror) |
- Very simple to set up
- No RAID controller required
- Can mix different disk sizes
- Easy to add or remove disks
- Each disk can use its own filesystem
- No redundancy
- No automatic failover
- If one disk fails, the data on that disk is lost
- No performance improvements from RAID striping
List available disks:
lsblkExample:
NAME SIZE TYPE
sda 500G disk
sdb 1T disk
sdc 2T disk
sdd 4T disk
Show detailed information:
sudo fdisk -lOr:
sudo parted -lMany modern object storage systems, including RustFS and MinIO, often use JBOD-style storage.
Instead of creating a RAID array:
Application
│
▼
RustFS
│
┌────┼─────┐
│ │ │
Disk1 Disk2 Disk3 Disk4
The object storage software itself decides:
- where to place objects,
- how to replicate or distribute data,
- how to recover from failures.
This shifts data protection and distribution from the storage hardware (RAID) into the application layer, allowing more flexibility and scalability.
JBOD is a good choice when:
- You want to use disks independently.
- Your application (such as an object storage system) manages data redundancy itself.
- You need flexibility with different disk sizes.
- You don't require RAID-managed redundancy.
For traditional file servers where hardware-level redundancy is important, RAID may be more appropriate. For distributed object storage systems, JBOD is often the preferred approach because the software handles replication and fault tolerance.
