Storage-Management mit Stratis

Schicht für Schicht

Auch wenn Linux über einige leistungsfähige Dateisysteme verfügt, ist das letzte Wort in dieser Hinsicht noch nicht gesprochen. Red Hat will das Storage Management mit einem Projekt namens Stratis revolutionieren, das auf bewährte Technologie setzt, sich nach außen hin aber modern gibt.
In der Dezember-Ausgabe beleuchtet IT-Administrator die Datenspeicherung in kleinen und mittleren Firmen. Darin zeigen wir unter anderem, welche neue ... (mehr)

Ein geflügeltes Wort im Land der Copacabana lautet: Brasilien ist das Land der Zukunft – und wird es immer bleiben. Ganz ähnlich verhält es sich anscheinend mit dem Linux-Dateisystem Btrfs, das seit mehr als zehn Jahren als das kommende Dateisystem gehandelt wird. Keine Zukunft hat es allerdings bei Red Hat, das mittlerweile den Support dafür auf allen Betriebssystemen eingestellt hat. Stattdessen setzt Red Hat seit Version 7 voll auf das XFS-Dateisystem.

Fehlende Features wie Deduplikation hat sich Red Hat mit der Firma Permabit im Sommer 2017 eingekauft. Wie die meisten Zusatzfunktionen für Storage klinkt sich der von Permabit stammende Virtual Data Optimizer (VDO) in den Device Mapper ein und speichert mehrfach vorhandene Daten nur einmal physisch. Weitere Features moderner Dateisysteme wie ZFS und Btrfs sollen künftig mit einem Projekt namens Stratis realisiert werden, das ebenfalls den Device Mapper als Schnittstelle verwendet.

Wie die beiden erwähnten Dateisysteme soll Stratis ein Dateisystem werden, das im Gegensatz zu Filesystemen wie Ext4 oder XFS ein breiteres Anwendungsspektrum abdeckt, zum Beispiel auch das Volume-Management, das bisher in Linux von LVM übernommen wird. Deshalb wird es von den Erfindern "Volume Managing Filesystem" (VMF) genannt. Die grundlegende Idee hinter Stratis ist, bereits vorhandene Technologien zu verwenden, um die gewünschte Funktionalität bereitzustellen, statt ein entsprechend modernes Dateisystem von Grund auf neu zu entwickeln (Bild 1).

Bild 1: Stratis setzt auf vorhandene Technologien der Linux-Ökosphäre.

ZFS dient als Vorbild

ZFS, das aufgrund der Inkompatibilität von Lizenzen (siehe Kasten "Umstrittenes ZFS") für Red Hat als Option nicht in Frage kommt, dient als Vorbild für die einfache Bedienbarkeit. Wer die viele Schritte umfassende Konfiguration von LVM-Vol-umes kennt, wird neidisch auf ZFS blicken, das ein einfach zu verwendendes, intuitives Commandline-Interface bietet. Andere Dinge, etwa die Konfiguration von Redundanzoptionen, haben sich die Stratis-Entwickler bei Btrfs abgeschaut, das diesen Aspekt einfacher abbildet als ZFS.

Auch Stratis wird sicher noch einige Jahre entwickelt werden, bis es als vollständige und zuverlässige Option zur Verfügung steht, aber zumindest nominell hat es bereits die Version 1.0 erreicht, die im jüngst erschienenen Fedora 29 enthalten ist. Dies bedeutet insbesondere, dass das auf den Disks verwendete Metadatenformat nunmehr als stabil gilt.

Alle gewünschten Features sind allerdings damit noch nicht implementiert. So sieht die Roadmap für Stratis 2.0 den Einbau der RAID-Level 1, 5, 6 und 10 und einige andere Fähigkeiten vor. In Version 2.0 sollen die von ZFS bekannten Send- und Receive-Funktionen sowie Verschlüsselung und Komprimierung folgen. Weitere Features sind für Stratis 4.0 vorgesehen – alles in allem auf jeden Fall eine ambitionierte Roadmap.

Umstrittenes ZFS

ZFS wurde bei der Firma Sun von einem Entwicklerteam um Jeff Bonwick entwickelt und als das "letzte Wort in Sachen Dateisysteme" bezeichnet. Ein Grund dafür ist die Verwendung von 128-Bit-Pointern, die eine Speicherkapazität von 2128 Bytes ( 256 Trillionen Yobibytes) mit sich bringt. Darüber hinaus vereint ZFS klassische Dateisystemfunktionen mit Volume Management, RAID und anderen Features. Im Zuge der Freigabe von OpenSolaris im Jahr 2005 wurde auch ZFS unter der CDDL (Common Development and Distribution License) veröffentlicht.Anschließend wurde ZFS auf verschiedene freie Unix-Betriebssysteme portiert, etwa FreeBSD und schließlich auch Linux. Heute ist das OpenZFS-Projekt das gemeinsame Dach für alle frei verfügbaren ZFS-Implementierungen.Nach Meinung der Entwickler ist ZFS on Linux seit Version 0.6.1 reif für den produktiven Einsatz. Weil die Lizenzen des Linux-Kernels und des von Sun freigegebenen ZFS nicht kompatibel sind, kann der ZFS-Code aber nicht direkt in den Kernel-Quellcodebaum integriert werden.Seit Version 16.04 bietet Ubuntu aber ein ZFS-Modul in seinem Software-Repository an. Die Inkompatibilität zwischen der GPL-Lizenz des Linux-Kernels und der CDDL-Lizenz des ZFS-Codes glauben die Ubuntu-Entwickler nach der Konsultation ihrer Anwälte ignorieren zu können, da nur das ZFS-Binärmodul ausgeliefert wird.Nach Meinung der Software Freedom Conservancy verstößt die Ubuntu-Praxis gegen die GPL-Lizenz. Es spiele dabei keine Rolle, ob der ZFS-Code statisch in den Kernel gelinkt oder, wie bei Ubuntu, ein dynamisches Modul ausgeliefert wird. In jedem Fall entstehe dadurch ein sogenanntes abgeleitetes Werk, für das die Lizenzbedingungen der GNU-Lizenz greifen.Neben Ubuntu bietet auch Debian im Unstable-Zweig das ZFS-Dateisystem an. Im Gegensatz zu Ubuntu liefert Debian keine Binärmodule aus, sondern bietet den Quellcode von ZFS über das Contrib-Repository an. Dies soll ein Weg sein, um die Lizenzproblematik zu umgehen.

Programmiert in Rust

Zum Redaktionsschluss war Fedora 29 noch nicht veröffentlicht und es gab auch noch keine fertigen Stratis-Pakete, weshalb wir den Quellcode auf dem Release-Kandidaten von Fedora übersetzt und installiert haben. Da der Stratis-Daemon in der Programmiersprache Rust geschrieben ist, muss der entsprechende Compiler installiert sein, der als Binärpaket zur Verfügung steht. Das Stratis-Commandline-Tool ist in Python programmiert. So brauchen wir außerdem auch einige Python-Pakete, die sich mit dem Paketmanager installieren lassen:

# dnf install rust cargo make git dbus-devel libudev-devel tox dbus-glib-devel python3-dbus pylint pytest python3-into-dbus-python python3-justbytes

Nun können Sie den Quellcode der beiden Stratis-Komponenten herunterladen, übersetzen und installieren:

$ git clone https://github.com/stratis-storage/stratis-cli
$ git clone https://github.com/stratis-storage/stratisd
$ cd stratisd
$ cargo build
$ cargo install
$ cp .cargo/bin/stratisd /usr/sbin/
$ cd ../stratis-cli
$ python3 setup.py install

Um die D-Bus-Schnittstelle zu verwenden, benötigen die Stratis-Komponenten noch eine Konfigurationsdatei, die dem Quellcode von stratisd beiliegt. Sie kopieren sie in die D-Bus-Konfiguration und starten den dbus-Daemon neu:

$ sudo cp stratisd.conf /etc/dbus-1/system.d
$ sudo systemctl restart dbus

Nun starten Sie den Stratis-Daemon, der seine Arbeit anschließend im Hintergrund erledigt. Mit dem Schalter "-d" bleibt er im Vordergrund und gibt Debug-Meldungen aus. Jetzt brauchen Sie noch freie Devices, um einen Stratis-Pool anzulegen. Das erledigen Sie folgendermaßen (Bild 2):

# stratis pool create defpool /dev/vdb
Bild 2: Beim Anlegen eines neuen Storage-Pools erscheint der Device Mapper in Aktion.

Falls Sie dies mit einem (virtuellen) Device mehrmals machen, kann es übrigens sein, dass der Stratis-Daemon sich beschwert, dass das Device schon Teil eines Pools ist, wenn er darauf die entsprechenden Metadaten findet. Wenn Sie sie vor dem Anlegen des Pools mit dem folgenden Befehl löschen, sollte es damit keine Probleme mehr geben:

# dd if=/dev/zero of=/dev/vdb bs=512 count=16

Mit »stratis pool list« zeigen Sie die verfügbaren Pools an. Auf dem Pool erzeugen Sie mit dem Unterbefehl »stratis fs« ein neues Dateisystem, das Sie anschließend mounten können:

# stratis fs create defpool fs1
# mount /dev/stratis/defpool/fs1 fs1/

Wenn Sie nun mit »stratis fs snapshot« einen Snapshot anlegen, können Sie ihn anschließend in der Liste der auf dem Pool vorhandenen Dateisysteme sehen:

# stratis fs snapshot defpool fs1 snap1
# stratis fs
Pool Name        Name       Used          Created                         Device
defpool             fs1           546 MiB      Oct 01 2018 13:05        /dev/stratis/defpool/fs1
defpool             snap1      546 MiB      Oct 01 2018 13:07        /dev/stratis/defpool/snap1

Wenn Sie jetzt Änderungen in dem gemounteten Dateisystem "fs1" vornehmen und anschließend den Snapshot mounten, sehen Sie den Unterschied: Die Änderungen sind nur im aktuellen Dateisystem vorhanden und fehlen in dem vorher angelegten Snapshot.

Irreführend ist die Ausgabe des Tools "df", das normalerweise den freien Speicherplatz anzeigt, weil es nicht mit dem Thin Provisioning zurechtkommt, das Stratis verwendet. Auch dürfen Sie ein von Stratis verwaltetes XFS nicht mit anderen XFS-Tools bearbeiten, da es sonst zu Konflikten kommt.

Ä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