Bcache

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird.
Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar.

Bcache bietet die Möglichkeit Block-Devices innerhalb eines Linux Systems ab Kernel Version 3.10 mithilfe anderer Block-Devices zu Cachen (z.B. ein RAID6 aus Festplatten mit einem RAID1 aus SSDs). Der Name bcache leitet sich vom Term block device cache ab, den der Hauptentwicklet Kent Overstreet für den Caching-Mechanismus verwendet.

Bcache Git-Repo

Auf der Website von bcache (http://bcache.evilpiepirate.org/) wird auf folgenden git-Repos verwiesen:

Begriffe

Bcache definiert zwei Arten von Devices:

  1. Backing-Devices: Das Device, das gecachet werden soll - zumeist eine Festplatte (HDD)
  2. Caching-Devices: Das Device, das als Cache verwendet werden soll - z.B. ein Solid-State Drive (SSD)

Um bcache zu verwenden müssen beide Arten von Devices mithilfe der bcache-tools formatiert werden. Es ist nicht ohne weiteres möglich bcache auf bestehenden, bereits formatierten Devices zu verwenden (näheres siehe Abschnitt Bestehende Devices konvertieren). Dieser Vorgang ist nötig, da bcache einen speziellen Superblock für die Zuordnung der Devices verwendet.

Architektur

Bcache Kommando-Prozedur, Quelle: SSD caching using Linux and bcache (pommi.nethuis.nl)

Der Entwickler beschreibt bcache als besonders auf SSDs zugeschnittenes, resistentes Caching-Verfahren. Aufgrund der Optimierung auf SSDs wird beispielsweise "Sequential IO" nicht gecachet, das bedeutet dass nur zufällige (random) Zugriffe vom Cache profitieren. Zusätzlich gibt es noch Optimierungen in Bezug auf die Schreiboperationen auf die SSD (den Cache). Bcache arbeitet standardmäßig nur als Read-Cache, um den Write-Cache zu aktivieren siehe Write-Cache aktivieren.

bcache bildet aus einem Backing-Device und einem Caching-Device ein bcache*-Device welches unter /dev/bcache* zu finden ist. Das bcache* Device kann wie ein normales Block-Device unter Linux angesprochen werden (Formatieren, Partitionieren, etc.). Folgende Grafik beschreibt den Aufbau der bcache-Architektur:

Installation und Konfiguration

Bcache wurde mit Version 3.10 in den Linux-Kernel mit aufgenommen.[1][2]

Eine einfache Möglichkeit, um bcache zu testen, sind die Daily Builds von Ubuntu 13.10, da diese einen Kernel-Version > 3.10 mit sich bringen.

bcache-tools

Um bcache nutzen zu können müssen die Userspace Tools von der Seite des Entwicklers heruntergeladen und kompiliert werden.

sudo apt-get install git
sudo apt-get install build-essential
sudo apt-get install uuid-dev
git clone http://evilpiepirate.org/git/bcache-tools.git
cd bcache-tools
make 
sudo make install

Folgende Befehle sind darin enthalten:

  • make-bcache
  • bcache-super-show
  • probe-bcache

Devices formatieren

Bcache benötigt auf allen Devices (am gecachten und am Caching-Device) die es verwenden sollen einen speziellen Superblock. Daher müssen die Devices mit make-bcache formatiert werden, bevor die Caching-Konstellation zum Einsatz kommen kann. Es ist nicht ohne weiteres möglich bcache nachträglich für bestehende Partitionen zu verwenden. Hierzu ein Beispiel, in dem /dev/sdb das Cache-Device (SSD) und /dev/sdc/ das Backing-Device (HDD) ist:

sudo make-bcache -C /dev/sdb   
sudo make-bcache -B /dev/sdc

Es können auch mehrere Devices gleichzeitig formatiert werden. Dadurch entfällt der Attaching-Schritt, da der Vorgang in diesem Fall automatisch durchgeführt wird.

sudo make-bcache -B /dev/sda /dev/sdb -C /dev/sdc

Dadurch ist automatisiert über udev ein bcache* Device unter /dev/ erstellt worden. Sollte dies nicht der Fall sein, können die Devices manuell registriert werden.

echo /dev/sdb > /sys/fs/bcache/register
echo /dev/sdc > /sys/fs/bcache/register

Abschließend wird auf dem bcache0-Device ein File-System erstellt:

sudo mkfs.ext4 /dev/bcache0
mount /dev/bcache0 /mnt

RAID als Cache verwenden

Mit bcache ist es möglich auch eine RAID Konfiguration als Caching-Device zu verwenden. Das kann sinnvoll sein um beispielsweise Inkonsistenzen im Dateisystem durch den Ausfall der Caching-SSD zu vermeiden. Mit mdadm erstellt man dazu ein Software-Raid über mehrere SSDs, das daraus resultierende md-Device wird mit make-bcache formatiert.

Attaching Cache

Falls im Schritt Devices Formatieren die Devices nicht gemeinsam sondern einzeln formatiert wurden, muss das Caching-Device noch mit dem Backing-Device verbunden werden. Um die Devices verbinden zu können benötigt man die CSET-UUID, diese ist nicht gleich der Device-UUID. Die CSET-UUID befindet sich im Superblock des Caching-Devices. Zum Auslesen des Superblocks ist in den bcache-tools das Programm "bcache-super-show" enthalten.

sudo bcache-super-show /dev/sdb

liefert folgende Ausgabe

sb.magic		ok
sb.first_sector		8 [match]
sb.csum			81E19A617D4D87FA [match]
sb.version		3 [cache device]

dev.uuid		a8f7dfd5-d275-40f6-8579-17aeadfae720  #UUID des Devices 
dev.sectors_per_block	1
dev.sectors_per_bucket	1024
dev.cache.first_sector	1024
dev.cache.cache_sectors	4193280
dev.cache.total_sectors	4194304
dev.cache.discard	no
dev.cache.pos		0

cset.uuid		bff2ec51-3294-42b6-8f3c-60e74849bc66  #UUID des Cachesets

In der letzen Zeile findet sich die gesuchte UUID. Um nun das Backing-Device mit dem Cacheset zu verbinden, müssen folgende Befehle ausgeführt werden.

sudo -i
echo bff2ec51-3294-42b6-8f3c-60e74849bc66 > /sys/block/bcache0/bcache/attach

Write-Cache aktivieren

Standardmäßig arbeitet bcache nur als Read-Cache, um zusätzlich den Write-Cache zu aktivieren wird folgender Befehl verwendet.

sudo -i
echo writeback > /sys/block/bcache*/bcache/cache_mode

Weitere Hinweise

Bitte achten Sie auf ein korrektes Partition Alignment ihrer Partitionen. Die Manpage zu make-bcache liefert einen Hinweis über den Parameter -b <BUCKET SIZE>, damit kann die Größe der Buckets festgelegt werden.[3]

Einzelnachweise

  1. Heise Kernel-Log 3.10 (heise.de)
  2. Linux Kernel git commit bcache (git.kernel.org)
  3. make-bcache - create a cache device (manpages.ubuntu.com)

Das könnte Sie auch interessieren

Anacron
Dm-cache
Fedora 11 Linux Desktop Installation