S3-kompatibler Object Storage ist zur Grundlage moderner Cloud-Infrastruktur geworden – und wer ihn self-hosted betreibt, kommt an zwei Namen kaum vorbei: Ceph und MinIO. Beide lösen dasselbe Problem (ein S3-kompatibles Storage-Backend), mit fundamental unterschiedlichen Ansätzen. Ceph ist das Schweizer Taschenmesser für komplexe Cluster-Deployments, MinIO die schlanke Alternative für Teams, die einfach loslegen wollen. In diesem Artikel zeige ich, wann welche Lösung die bessere Wahl ist.
Was ist Object Storage, und warum S3-Kompatibilität?
Object Storage speichert Daten als unveränderliche "Objekte" mit eindeutigen IDs – im Gegensatz zu Block Storage (Festplatten) oder File Storage (NFS). Amazon S3 hat dabei das De-facto-Protokoll gesetzt: die S3-API ist heute der Standard für Object Storage, und nahezu jede moderne Anwendung (MinIO, Nextcloud, GitLab, Harbor, Longhorn) kann mit S3-kompatiblen Endpoints umgehen.
Self-hosted S3-Storage bedeutet: Du kontrollierst, wo deine Daten liegen, was du zahlst, und wie du skalierst. Die Frage ist nur: Ceph oder MinIO?
MinIO – S3 in 10 Minuten auf deinem Server
MinIO ist das Go-Binary-Äquivalent für Object Storage: schnell, einfach, S3-kompatibel. Ein einzelner MinIO-Prozess kann auf einem Docker-Host oder Kubernetes-Pod laufen und sofort S3-kompatiblen Storage bereitstellen. MinIO ist in Go geschrieben, hat eine exzellente Admin-UI und ist für Performance und Einfachheit optimiert.
MinIO wurde ursprünglich für Single-Node-Deployments entwickelt, unterstützt aber mittlerweile auch verteilte Cluster (Distributed Mode) mit Erasure Coding für Redundanz. Das klingt nach Ceph-Territorium – aber MinIO bleibt in der Umsetzung deutlich einfacher.
MinIO im Überblick
- Setup-Aufwand: Minimal – ein Container, eine Konfiguration
- S3-Kompatibilität: ✅ Vollständig, inkl. Multipart-Upload, Presigned URLs, Versioning
- Skalierung: Vertikal (größere Nodes) oder horizontal (Distributed Mode)
- Kubernetes-Integration: ✅ Exzellent (MinIO Operator, Helm-Chart)
- Lizenz: AGPL-3.0 (Open Source), kommerziell verfügbar
- Performance: Sehr hoch – MinIO hält Benchmarks zu AWS S3 stand
Docker-Quickstart
version: '3.8'
services:
minio:
image: quay.io/minio/minio:latest
command: server /data --console-address ":9001"
ports:
- "9000:9000" # S3 API
- "9001:9001" # Admin Console
volumes:
- minio_data:/data
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
restart: unless-stopped
volumes:
minio_data:
Das war's. MinIO läuft, die Admin-UI ist unter Port 9001 erreichbar, und der S3-Endpunkt unter Port 9000.
Ceph – verteilter Storage für komplexe Setups
Ceph ist das Schwergewicht unter den Open-Source-Storage-Systemen. Ursprünglich für große OpenStack-Deployments entwickelt, bietet Ceph block storage (RBD), file storage (CephFS) und object storage (RADOS Gateway / RGW) in einem einzigen System. Der RADOS Gateway bietet vollständige S3-Kompatibilität plus Swift-API.
Was Ceph von MinIO unterscheidet: Ceph ist ein echtes verteiltes System, das auf mehrere physische Nodes aufgeteilt werden muss. Ein Minimum-Deployment benötigt drei OSD-Nodes (Object Storage Daemons), einen oder mehrere MON-Nodes (Monitor) und einen MGR-Node (Manager). Das ist absichtlich so – Ceph ist für Hochverfügbarkeit und horizontale Skalierung auf Cluster-Ebene ausgelegt.
Ceph im Überblick
- Setup-Aufwand: Hoch – Multi-Node-Cluster erforderlich, Rook oder ceph-deploy empfohlen
- S3-Kompatibilität: ✅ Via RADOS Gateway (RGW), sehr vollständig
- Skalierung: Horizontal auf unbegrenzte OSD-Nodes
- Kubernetes-Integration: ✅ Via Rook-Ceph Operator
- Lizenz: LGPL-2.1 (Open Source)
- Performance: Gut, aber Overhead durch verteilte Koordination
Der entscheidende Unterschied: Komplexität vs. Skalierbarkeit
MinIO und Ceph repräsentieren zwei fundamentale Ansätze:
MinIO folgt der Unix-Philosophie: Tu eine Sache, und tu sie gut. Es ist ein Single-Purpose-Tool für S3-Storage, und diese Fokussierung macht es extrem zuverlässig und einfach zu betreiben. Wenn du Object Storage brauchst und nichts anderes, ist MinIO die erste Wahl.
Ceph ist eine vollständige Storage-Plattform. Block Storage für Kubernetes Persistent Volumes, File Storage für shared Mounts und Object Storage via RGW – alles aus einem System. Das macht Ceph unschlagbar für Setups, die mehrere Storage-Typen aus einer Hand brauchen. Aber der Preis ist Komplexität: Ceph zu operieren erfordert tiefes Verständnis des Systems, und Fehler können schwer zu debuggen sein.
Vergleichstabelle
| Kriterium | MinIO | Ceph (RGW) |
|---|---|---|
| Setup-Aufwand | ⭐⭐⭐⭐⭐ Sehr einfach | ⭐⭐ Komplex |
| Mindest-Hardware | 1 Node (sogar Raspberry Pi) | 3+ Nodes empfohlen |
| S3-Kompatibilität | Vollständig | Vollständig |
| Block Storage | ❌ | ✅ (RBD) |
| File Storage | ❌ | ✅ (CephFS) |
| Kubernetes-Integration | MinIO Operator | Rook-Ceph Operator |
| Performance | Sehr hoch (S3-optimiert) | Gut (mehr Overhead) |
| Operativer Aufwand | Niedrig | Hoch |
| Lizenz | AGPL-3.0 | LGPL-2.1 |
Kubernetes-Setup: Longhorn vs. Rook-Ceph vs. MinIO
In Kubernetes-Umgebungen stellt sich oft die Frage: Brauche ich Rook-Ceph oder reicht MinIO? Eine wichtige Unterscheidung: MinIO bietet nur Object Storage (S3), keine Kubernetes Persistent Volumes (PVCs). Wenn du PVCs für Datenbanken brauchst, benötigst du zusätzlich Longhorn, Rook-Ceph oder einen anderen Block Storage Provider.
Ein typisches Setup in einem Self-Hosted Kubernetes-Cluster:
- Für Block Storage (PVCs): Longhorn (einfach, aber Single-Cluster) oder Rook-Ceph (komplex, aber Multi-Cluster)
- Für Object Storage (S3): MinIO (einfach) oder Ceph RGW (wenn Ceph sowieso schon läuft)
Die pragmatische Empfehlung: Installiere Longhorn für Block Storage und MinIO für Object Storage. Das gibt dir 90% der Funktionalität mit 20% der Komplexität von Rook-Ceph.
Wann Ceph unvermeidbar ist
Es gibt Szenarien, in denen Ceph trotz seiner Komplexität die richtige Wahl ist:
- Multi-Protokoll-Storage: Wenn du Block, File und Object Storage aus einem System willst
- Sehr große Cluster: 10+ Nodes mit Petabytes an Daten – hier skaliert Ceph besser als MinIO Distributed
- OpenStack-Integration: Ceph ist das De-facto-Standard-Backend für OpenStack Cinder und Glance
- Wenn Rook-Ceph bereits im Cluster ist: Dann ist Ceph RGW für Object Storage die logische Erweiterung
Mein Fazit
Für den typischen Self-Hoster oder das kleine Dev-Team ist MinIO fast immer die bessere Wahl. Es ist in 10 Minuten produktionsbereit, bietet vollständige S3-Kompatibilität und ist einfach zu warten. Die meisten Anwendungen, die S3-Storage brauchen (Nextcloud-External-Storage, Harbor-Registry, GitLab-Artifacts, Loki-Backend), funktionieren problemlos mit MinIO.
Ceph lohnt sich erst, wenn du bereits mehrere Storage-Anforderungen hast (Block + Object) oder einen sehr großen Cluster mit vielen Nodes betreibst. Für ein typisches Homelab oder ein kleines Produktionssetup ist Ceph überdimensioniert – und die Komplexität überwiegt den Nutzen.
Das Schöne: Diese Entscheidung ist nicht für immer. MinIO speichert Daten in einem standardmäßigen Format, und eine Migration zu einem anderen S3-Backend ist über einfaches Sync-Tooling (mc mirror oder rclone) möglich, wenn die Anforderungen wachsen.
Weiterführende Artikel
- Restic vs. Borg Backup: Backup-Lösungen für Server und Self-Hosting im Vergleich
- Syncthing vs. Nextcloud: Datei-Synchronisation selbst hosten