Speicher muss nicht nur laufend größer werden, sondern auch schneller. In Zeiten von Virtualisierung und immer leistungsfähigeren Rechnern, die zeitnah auf ... (mehr)

Bcache – Google cached mit

Große Datenmengen fallen auch beim Suchmaschinenanbieter an. Bcache – der Begriff steht für Block Cache – ist konzeptuell mit FlashCache verwandt. Da es seit Version 3.10 Teil des offiziellen Linux-Kernels ist, sollte das System auf aktuellen Distributionen von Haus aus zur Verfügung stehen.

Das Produkt ist ausschließlich auf SSDs optimiert. Dies wirkt sich insofern auf das Cache-Verhalten aus, als dass es sequenzielle I/O-Prozesse ignoriert und nur zufällige Vorgänge beschleunigt. Bcache umgeht so die im vorigen Abschnitt besprochenen Probleme bei Suchoperationen – diese profitieren allerdings auch nicht vom Cache.

Obwohl Bcache seit einiger Zeit – theoretisch – auch auf existierenden Geräten aktivierbar ist, sollten Sie die Initialisierung lieber mit leeren Devices durchführen. Das Risiko eines während der Konversion auftretenden Datenverlusts ist real. Als bessere Alternative bietet sich die Erstellung von zwei leeren Partitionen an, die nach der Einrichtung des Bcache-Systems und dem Einschreiben des hauseigenen Superblocks zur Formatierung bereitstehen:

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

"-B" verweist hierbei auf das langsame Speichergerät, während "-C" auf die SSD zeigen sollte. Im Rahmen der erstmaligen Erstellung erzeugt Bcache automatisch ein Gerät namens "dev/bcacheNummer" - ist dies nicht der Fall, so lässt sich das System von Hand daran erinnern. Diese Schritte sind zudem nach jedem Systemstart notwendig:

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

Der Lohn der Mühe ist ein neues Device, das sodann ein beliebiges Dateisystem erhalten kann:

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

Bcache arbeitet von Haus aus im Write-Through-Modus: Schreiboperationen wandern direkt auf das Backing-Device und profitieren somit nicht von einer eventuell möglichen Beschleunigung.

Write-Through lässt sich mit folgendem Kommando aktivieren:

echo writeback > /sys/block/bcacheNummer/bcache/cache_mode

In der offiziellen Dokumentation weisen die Entwickler explizit darauf hin, dass das Nicht-Aktivieren des Writeback-Modus nicht aufgrund von Instabilitäten erfolgt. Es handelt sich stattdessen um eine reine Sicherheitsmaßnahme: Bei aktiviertem Writeback führt ein Schaden der SSD zu irreparablem Datenverlust.

Die Prüfung des Cachemodus lässt sich durch das Kommando

# cat /sys/block/bcacheNummer/bcache/state

bewerkstelligen. Hier sind die möglichen Zustände "no cache", "clean", "dirty" und "inconsistent".

Bcache generiert während der Ausführung Statistiken, die in der Datei »/sys/block/bcache<num>/bcache/stats_total/*« liegen. Details zu den dort enthaltenen Informationen finden sich in der unter [4] einsehbaren Dokumentation.

btier – Exot im Anmarsch

Schon aus Gründen der Vollständigkeit darf btier in dieser Liste nicht fehlen. Das nur wenig verwendete Produkt zäumt das Problem des Flash-Cache von der Rückseite an. btier-Verbünde agieren wie "RAID0 mit intelligentem Management": Während des Leerlaufs wandern häufig benutzte Blöcke von der langsamen auf die schnelle Platte.

Die einfache Architektur zeigt insofern ihre Zähne, als der Cache seine Stärken nur dann ausspielen kann, wenn regelmäßiger Leerlauf zur Rearrangierung der Daten zur Verfügung steht. Zudem ist die Gesamtzuverlässigkeit mit der eines RAID0 vergleichbar. Der Ausfall von SSD oder HDD führt zu irreversiblem Datenverlust.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019