Login
Newsletter
Di, 30. September 2014, 14:00

Bcache: Kleine SSDs als Cache nutzen

Was tun mit kleinen SSDs, die zu wenig Platz für System- oder Datenpartition bieten? Bcache ist ein Kernel-Modul, das eine SSD im Verbund mit einer Festplatte als Cache nutzt.

Unter den lohnenden Aufrüstungsmöglichkeiten für PCs steht der Einbau einer SSD ganz vorne. Selbst wenn der Rest des Systems nicht mehr taufrisch ist, bringt die SSD einen Geschwindigkeitsschub, da die mechanische Festplatte als Flaschenhals bei I/O-Operationen entfällt. Auch Speicherplatz ist seit Anfang 2014 erschwinglich geworden: So kostet eine SSD mit einer Speicherkapazität von 120 GB etwa 70 Euro. Für ältere, noch kleinere SSDs wird es dagegen schwer, einen Verwendungszweck außer als Systempartition zu finden, denn für ernstzunehmende Datenpartitionen reicht der Platz nicht.

Neue Aufgaben für alte SSDs

Es gibt aber eine gute Verwendungsmöglichkeit für ältere SSDs: Der Einsatz des schnellen, kleinen Laufwerks als Cache-Speicher im Gespann mit einer größeren, langsamen Festplatte. Das Resultat ist ein Verbund-Datenträger, bei dem die SSD als temporärer vorgelagerter Speicher fungiert.

Bcache ähnelt im Aufbau einem RAID-Verbund

David Wolski

Bcache ähnelt im Aufbau einem RAID-Verbund

Unter Linux haben sich unabhängig vom SSD-Hersteller zwei Open-Source-Projekte mit ähnlicher Zielsetzung entwickelt: Flashcache und Bcache. Flashcache ist eine Entwicklung von Facebook, kann generell Flash-Speicher wie USB-Sticks, CF-Karten und SSDs als Cache-Medium nutzen. Flashcache liegt im Quellcode für eigene Experimente vor.

Das andere Projekt, das nach drei Jahren Arbeit in den offiziellen Linux-Kernel ab Version 3.10 aufgenommen wurde, ist Bcache. Es arbeitet mit einem Gespann aus SSDs und Festplatte, die es zu einem RAID-ähnlichen Verbund zusammenschließt.

Auf der SSD unterhält Bcache einen Zwischenspeicher in Form einer B-Tree-Index- und Datenstruktur. Das Cache-Verhalten ist für SSDs optimiert: Bcache verhindert ein Überstrapazieren der Speicherzellen, indem alle Schreibvorgänge in sequenzielle Operationen umgewandelt werden. Zudem reicht Bcache große zusammenhängende Schreibvorgänge, beispielsweise große Dateien, direkt an die Festplatte durch. Bcache unterstützt zwei Modi: Im Standardmodus »Write-Through« arbeitet Bcache als Pufferspeicher, ein Speicherblock wird gleichzeitig auf SSD und Festplatte geschrieben, und Bcache arbeitet nur als Lese-Cache.

Der schnellere »Write-Back«-Modus kann optional aktiviert werden, und dabei verhält sich Bcache als vorgelagerter Cache, in dem zuerst alle Daten landen. Erst wenn ein Datenblock aus dem Cache verdrängt wird, erfolgt der Schreibzugriff auf die langsame Festplatte. Dieser Modus verspricht mehr Leistung, kann aber bei Stromausfällen zu Inkonsistenzen im Cache führen.

Bcache: Voraussetzung und Installation

Die RAID-Charakteristik von Bcache hat ihre Tücken, aber auch Vorteile: Bei der Einrichtung bilden SSD und Festplatte ein neues Laufwerk. Der Inhalt von beiden geht also bei der Einrichtung komplett verloren. Der neue Bcache-Verbund ist Blockgerät, und es spielt keine Rolle, welches Dateisystem darauf zum Einsatz kommt, da der Cache auf I/O-Ebene arbeitet.

Eine weitere Voraussetzung ist eine moderne Linux-Distribution mit Kernel ab Version 3.10. Geeignet sind Ubuntu (ab 13.10), Fedora (ab Version 19) und Arch Linux. Der stabile Zweig von Debian ist dagegen noch außen vor. Ferner brauchen Sie die Tools zur Einrichtung von Bcache, die »bcachetools«. In Fedora 20 gibt es diese als fertiges Paket, das man mit sudo yum install bcache-tools installiert. Für Ubuntu 13.10 und 14.04 steht immerhin ein PPA bereit, das Sie mit

sudo add-apt-repository ppa:g2p/storage
sudo apt-get update
sudo apt-get install bcache-tools

aufnehmen und die Tools installieren.

Zur Einrichtung eines neuen Bcache-Laufwerks aus einer SSD und einer Festplatte dient der Befehl makebcache. Die Partitionen auf beiden Datenträgern müssen dazu zunächst alle mit umount /dev/sd[Partition] ausgehängt werden, falls sie gemountet sein sollten. Wichtig: Der Befehl makebcache löscht alle Daten auf den beteiligten Datenträgern. In diesem Beispiel dient die SSD mit der Bezeichnung /dev/sda als Cache-Speicher, und /dev/sdd ist eine größere Festplatte als Datenspeicher:

sudo make-bcache -C /dev/sda
sudo make-bcache -B /dev/sdd

Aus diesen beiden Befehlen resultiert das neue Laufwerk /dev/bcache0, das sich wie ein normales, blockorientiertes Gerät verhält und mit dem gewünschten Dateisystem formatiert wird:

sudo mkfs.ext4 /dev/bcache0

In der Standardeinstellung arbeitet das neue Laufwerk mit Lese-Cache. Den Schreib-Cache aktivieren Sie auf /dev/bcache mit diesem Befehl:

echo writeback | sudo tee -a/sys/block/bcache0/bcache/cache_mode

Die Einstellung bleibt zwischen Reboots erhalten. Das Bcache-Laufwerk kann wie ein RAID-Laufwerk mit

sudo mount /dev/bcache0 /[Verzeichnis]

in ein Verzeichnis eingehängt werden.

Der Benchmark FIO testet zufällig verteilte Lese- und Schreib-Operationen

David Wolski

Der Benchmark FIO testet zufällig verteilte Lese- und Schreib-Operationen

Benchmarks und Fazit

Bei großen und sequenziellen Schreiboperationen macht sich Bcache nicht bemerkbar, da diese I/O-Operationen gleich an die Festplatte weitergegeben werden. Erst beim zufälligen Lese/Schreib-Zugriff auf viele Dateien verbessert Bcache den Datendurchsatz. Geeignet für Benchmarks sind die Tools Bonnie++ und FIO, da diese eine zufällig verteilte I/O-Last erzeugen.

Bcache ist dann nützlich, wenn eine ungenutzte SSD verfügbar ist, die auf neue Aufgaben wartet. Unter bestimmten Umständen, bei zufällig verteilten Schreiboperationen auf viele kleine Dateien, kitzelt Bcache nämlich mehr Leistung aus einer mechanischen Festplatte heraus. Jedoch fällt der Unterschied nicht so groß aus, dass Bcache die Anschaffung einer SSD speziell für diesen Zweck rechtfertigen würde. Besser ist immer noch, die SSD gleich so groß zu wählen, um darauf eine Datenpartition unterzubringen. Das ist bislang auch der hauptsächliche Einsatzzweck von Bcache.

Die Installer der Linux-Distributionen unterstützen die Einrichtung von Bcache beim Setup noch nicht, deshalb wäre hier viel Vorarbeit nötig. Der Bootloader Grub 2 erkennt keine Bcache-Laufwerke, so dass die Bootpartition auf einem normalen Blockgerät (SSD oder Festplatte) liegen müsste. Diese Umstände machen ein Bcache-Systemlaufwerk wenig attraktiv. Als Turbo für Datenpartitionen mit vielen kleinen Dateien ist Bcache aber eine formidable Ergänzung.

Dieser Artikel stammt von unserem Kooperationspartner PC-WELT.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten