bcache vs. dm-cache: Linux SSD Caching im Vergleich
11 Min. Lesezeit - 28. Mai 2026

Vergleich von bcache und dm-cache für SSD-Caching unter Linux. Einrichtung, Leistung, Caching-Modi und wann sie zu verwenden sind.
bcache vs. dm-cache: SSD-Caching unter Linux
SSDs sind schnell, aber pro Gigabyte teuer. HDDs sind günstig, aber langsam. Linux bietet Ihnen zwei Tools auf Kernel-Ebene, um diese zu kombinieren: bcache und dm-cache. Beide nutzen eine SSD als transparenten Cache vor einer größeren HDD, unterscheiden sich jedoch in ihrer Architektur, den Einrichtungsanforderungen und den Bereichen, in denen sie am besten funktionieren.
So funktioniert bcache
Bcache ist seit Version 3.10 (Juni 2013) im Linux-Kernel enthalten. Es arbeitet auf der Blockebene und funktioniert daher mit jedem Dateisystem, das UUIDs unterstützt.
Intern verwendet bcache eine hybride B+-Baum-/Protokollstruktur. Es unterteilt den SSD-Speicher in Buckets fester Größe (128 KB bis 2 MB), die an den Grenzen der Löschblöcke ausgerichtet sind. Dadurch werden zufällige Schreibvorgänge in sequenzielle umgewandelt, was die Schreibverstärkung reduziert und die Lebensdauer der SSD verlängert. Sequenzielle E/A-Operationen über 4 MB umgehen den Cache automatisch, sodass sich die SSD auf die zufälligen Zugriffsmuster konzentrieren kann, bei denen sie den größten Nutzen bringt.
Bcache überwacht zudem die SSD-Latenz in Echtzeit. Wenn die Lese-Latenz 2 ms oder die Schreib-Latenz 20 ms überschreitet, drosselt es den Datenverkehr, um zu verhindern, dass das Cache-Gerät zu einem Engpass wird.
Einrichtung
Installieren bcache-tools, dann formatieren Sie Ihr Backing-Gerät und Ihr Cache-Gerät:
make-bcache -B /dev/sdb # format HDD as backing device
make-bcache -C /dev/sdc # format SSD as cache device
echo <UUID> > /sys/block/bcache0/bcache/attach # attach cacheDie Laufzeitoptimierung erfolgt über die /sys/block/bcache<N>/bcache/ sysfs-Schnittstelle, über die Sie Caching-Modi, Schwellenwerte für sequentielle E/A und Latenzziele anpassen können. Verwenden Sie bei RAID-Arrays --data-offset , um die Streifenbreite anzupassen.
Der Haken: Die Einrichtung ist destruktiv. Beide Geräte müssen als bcache-Ziele formatiert werden, sodass Sie bcache nicht zu einem bestehenden Dateisystem hinzufügen können, ohne dieses zuvor zu löschen. Bcache-Geräte können nach der Erstellung auch nicht mehr in ihrer Größe angepasst werden.
Leistung
Die Schreibkonsolidierung von Bcache sorgt für starke Werte bei zufälligen Schreibvorgängen. In Benchmarks wurden rund 18.500 zufällige 4K-Schreib-IOPS erreicht, verglichen mit 12.200 IOPS auf der bloßen SSD allein. Der Durchsatz bei zufälligen Lesevorgängen kann mit leistungsfähiger Hardware etwa 1.000.000 IOPS erreichen.
Für verschlüsselte Workloads sollten Sie dm-crypt auf dem /dev/bcache<N> Gerät an, anstatt die zugrunde liegenden Laufwerke einzeln zu verschlüsseln. Dies führt in der Regel zu einer besseren Leistung, da Bcache Schreibvorgänge vor der Verschlüsselung noch konsolidieren kann.
So funktioniert dm-cache
dm-cache ist ein Device-Mapper-Ziel, das über einem bestehenden logischen Volume liegt. Es nutzt drei Untergeräte: ein Ursprungsgerät (HDD), ein Cache-Gerät (SSD oder NVMe) und ein Metadaten-Gerät, das Blockpositionen und Dirty-Zustände verfolgt. Die Standard-Cache-Richtlinie ist smq (Stochastic Multi-Queue), die in gemischten Workloads häufig genutzte Daten identifiziert.
Der entscheidende Vorteil: dm-cache kann auf ein aktives LVM-Volume aufgesetzt werden, ohne vorhandene Daten zu zerstören. Die Größe lässt sich zudem mit Standard-LVM-Befehlen anpassen.
Einrichtung mit LVM
Die praktische Methode zur Konfiguration von dm-cache erfolgt über lvmcache. Eine manuelle dmsetup Konfiguration ist möglich, aber fehleranfällig und bleibt bei einem Neustart nicht erhalten. Der LVM-Ansatz:
- Erstellen Sie physische Volumes (PVs) sowohl auf der HDD als auch auf der SSD.
- Fügen Sie beide PVs einer einzigen Volume-Gruppe (VG) hinzu.
- Erstellen Sie drei logische Volumes: eines für die Datensicherung (HDD), eines für den Cache (SSD) und eines für Metadaten (SSD).
- Kombinieren Sie die Cache- und Metadaten-LVs zu einem Cache-Pool:
lvconvert --type cache-pool --poolmetadata <meta_lv> <cache_lv> - Hängen Sie den Pool an die Quelle an:
lvconvert --type cache --cachepool <pool_lv> <data_lv>
Ein wichtiger Hinweis: Mounten Sie das Dateisystem über seinen /dev/mapper/ Pfad ein, nicht über die UUID. Das Einbinden über die UUID kann die Cache-Ebene umgehen und direkt auf das Ursprungsgerät zugreifen.
Leistung und Speicher
Im Writeback-Modus unter einer 90/10-Lese-/Schreib-Zipf-Workload hat dm-cache Lesegeschwindigkeiten von etwa 193 MB/s und Schreibgeschwindigkeiten von rund 21 MB/s erreicht. In einem anderen Benchmark steigerte das Caching einer 100-GB-HDD mit einer 10-GB-NVMe-Partition die zufälligen Schreib-IOPS von 118 auf 798.
Der Nachteil ist der Speicherbedarf. Der Metadaten-Overhead von dm-cache hängt von der Blockgröße ab. Eine Blockgröße von 512 Byte kann pro 100 GB Cache über 16 GB RAM beanspruchen. Eine Erhöhung auf 4.096 Byte senkt den Speicherverbrauch auf etwa 2 GB pro 100 GB. Wählen Sie eine Blockgröße, die nahe an Ihrer durchschnittlichen E/A-Größe liegt (64 KB ist ein vernünftiger Ausgangspunkt), und stellen Sie sicher, dass sie ein Vielfaches von 64 Sektoren (32 KB) ist, innerhalb des Bereichs von 32 KB bis 1 GB.
Metadaten werden bei jedem FLUSH- oder FUA-Schreibvorgang oder mindestens einmal pro Sekunde geleert. Für hohe Verfügbarkeit sollten Sie das Metadaten-Gerät spiegeln, um einen Single Point of Failure zu vermeiden.
Caching-Modi
Sowohl bcache als auch dm-cache unterstützen dieselben grundlegenden Caching-Modi. Die Wahl wirkt sich sowohl auf die Leistung als auch auf die Datensicherheit aus.
| Modus | Funktionsweise | Geschwindigkeit | Risiko |
|---|---|---|---|
| Writethrough | Schreibvorgänge erfolgen gleichzeitig auf SSD und HDD | Nur Leseschleunigung | Gering. Die HDD verfügt immer über die aktuellen Daten. |
| Writeback | Schreibvorgänge erfolgen zuerst auf der SSD, später auf die HDD | Lese- und Schreibbeschleunigung | Höher. Ein Ausfall der SSD vor dem Flush führt zu Datenverlust. |
| Writearound / Passthrough | Schreibvorgänge umgehen den Cache vollständig | Nur Lesegeschwindigkeit, geringerer Verschleiß der SSD | Niedrig. Die HDD verfügt immer über aktuelle Daten. |
Writethrough ist die sichere Standardeinstellung für beide Tools. Writeback ist schneller, birgt jedoch ein echtes Risiko: Wenn die SSD ausfällt, während sie nicht gespülte Daten enthält, gehen diese Daten verloren und das Dateisystem kann beschädigt werden. Verwenden Sie Writeback nur, wenn Sie über redundante SSDs verfügen oder gelegentliche Datenverluste tolerieren können.
bcache vs. dm-cache: Welchen soll man verwenden?
| Faktor | bcache | dm-cache |
|---|---|---|
| Einrichtung auf bestehenden Daten | Destruktiv (erfordert Löschung) | Nicht-destruktiv (Online-Konvertierung) |
| Größenänderung | Nicht unterstützt | Wird über LVM unterstützt |
| Optimierung für zufällige Schreibvorgänge | Stark (Konsolidierung sequenzieller Schreibvorgänge) | Standard |
| Sequentieller I/O-Bypass | Automatisch (>4 MB) | Verwaltet durch SMQ-Richtlinie |
| Speicher-Overhead | Gering (B+-Baum) | Höher (abhängig von der Blockgröße) |
| Metadaten | Auf Cache-Gerät | Separates Gerät, kann gespiegelt werden |
Verwenden Sie bcache, wenn Sie ein neues System von Grund auf neu aufbauen und die bestmögliche Leistung bei zufälligen E/A-Vorgängen erzielen möchten. Es ist die bessere Wahl für schreibintensive Workloads wie Datenbanken und VM-Speicher sowie für RAID-6-Arrays, bei denen die Einbußen bei zufälligen Schreibvorgängen erheblich sind.
Verwenden Sie dm-cache, wenn Sie einem Server, der bereits im Betrieb ist, Caching hinzufügen müssen. Dank der LVM-Integration können Sie einen Cache ohne Ausfallzeiten oder Datenmigration hinzufügen. Es eignet sich besser für leseintensive Workloads und Umgebungen, in denen Sie die Flexibilität benötigen, die Speichergröße spontan anzupassen oder den Speicher neu zu konfigurieren.
Fazit
Beide Tools lösen dasselbe Problem, eignen sich jedoch für unterschiedliche Situationen. Bcache ist die leistungsstarke Wahl für Neuaufbauten. dm-cache ist die praktische Wahl für bestehende LVM-Systeme. Egal, für welche Option Sie sich entscheiden: Beginnen Sie mit dem Writethrough-Modus, bis Sie von der Zuverlässigkeit Ihrer SSD überzeugt sind, und wechseln Sie dann zu Writeback, wenn Sie die Schreibleistung benötigen.
Wenn Sie dedizierte Server mit SSD-Caching-Konfigurationen benötigen, sehen Sie sich die dedizierten Server-Optionen von FDC an.
XDP und eBPF für die Linux-Paketverarbeitung
Wie XDP und eBPF Millionen von Paketen pro Sekunde auf der Ebene der NIC-Treiber verarbeiten. Benchmarks, DDoS-Anwendungsfälle, Toolchain-Setup und Hardware-Anforderungen.
14 Min. Lesezeit - 27. Mai 2026
Warum es wichtig ist, einen leistungsstarken und ungemessenen VPS zu haben
3 Min. Lesezeit - 9. Mai 2025

Haben Sie Fragen oder benötigen Sie eine individuelle Lösung?
Flexible Optionen
Globale Reichweite
Sofortige Bereitstellung
Flexible Optionen
Globale Reichweite
Sofortige Bereitstellung