Wie in Teil 1 dieser Serie besprochen, ist Stratis ein Volume-Management-Dateisystem (VMF) mit einer ähnlichen Funktionalität wie ZFS und Btrfs. Bei der Entwicklung von Stratis haben wir die Entscheidungen untersucht, die Entwickler bestehender Lösungen getroffen haben.
Warum nicht eine bestehende Lösung übernehmen?
Die Gründe sind unterschiedlich. Betrachten wir zunächst ZFS. Ursprünglich von Sun Microsystems für Solaris (jetzt im Besitz von Oracle) entwickelt, wurde ZFS auf Linux portiert. Sein CDDL-lizenzierter Code kann jedoch nicht in den GPL-lizenzierten Linux-Quellbaum eingebunden werden. Ob CDDL und GPLv2 wirklich inkompatibel sind, ist umstritten, aber die Ungewissheit reicht aus, um Unternehmens-Linux-Anbieter davon abzuhalten, es zu übernehmen und zu unterstützen.
Btrfs ist ebenfalls gut etabliert und hat keine Lizenzprobleme. Es war jahrelang der "Auserwählte" für viele Benutzer, aber es ist in Bezug auf Stabilität und Funktionen einfach noch nicht dort angekommen, wo es sein muss.
Angetrieben von dem Wunsch, den Status quo zu verbessern, und der Frustration über bestehende Optionen, wurde Stratis konzipiert.
Wie Stratis anders ist
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Eine Sache, die ZFS und Btrfs deutlich gezeigt haben, ist, dass das Schreiben einer VMF als In-Kernel-Dateisystem eine enorme Menge an Arbeit und Zeit erfordert, um die Fehler zu beheben und zu stabilisieren. Wenn es um wertvolle Daten geht, ist es wichtig, das Richtige zu tun. Bei Null anzufangen und den gleichen Ansatz mit Stratis zu verfolgen, würde wahrscheinlich auch ein Jahrzehnt dauern, was nicht akzeptabel war.
Stattdessen entschied sich Stratis dafür, einige der anderen vorhandenen Fähigkeiten des Linux-Kernels zu verwenden:Das Device-Mapper-Subsystem, das vor allem von LVM verwendet wird, um RAID, Thin-Provisioning und andere Funktionen zusätzlich zu Blockgeräten bereitzustellen; und das erprobte und leistungsstarke XFS-Dateisystem. Stratis baut seinen Pool unter Verwendung von Schichten bestehender Technologie auf, mit dem Ziel, sie so zu verwalten, dass sie dem Benutzer als nahtloses Ganzes erscheinen.
Was Stratis von ZFS gelernt hat
Für viele Benutzer hat ZFS die Erwartungen an ein Dateisystem der nächsten Generation gesetzt. Das Lesen von Online-Kommentaren von Leuten, die über ZFS sprachen, half bei der Festlegung der anfänglichen Entwicklungsziele von Stratis. Das Design von ZFS hob implizit auch Dinge hervor, die es zu vermeiden gilt. Beispielsweise erfordert ZFS einen „Import“-Schritt, wenn ein Pool hinzugefügt wird, der auf einem anderen System erstellt wurde. Dafür gibt es einige Gründe, und jeder Grund war wahrscheinlich ein Problem, das Stratis lösen musste, indem es entweder denselben oder einen anderen Ansatz wählte.
Eine Sache, die uns an ZFS nicht gefallen hat, war, dass es einige Einschränkungen beim Hinzufügen neuer Festplatten oder beim Ersetzen vorhandener Laufwerke durch größere gibt, insbesondere wenn der Pool für Redundanz konfiguriert ist. Natürlich gibt es dafür einen Grund, aber wir dachten, es wäre ein Bereich, den wir verbessern könnten.
Schließlich ist die Verwendung der Tools von ZFS auf der Befehlszeile eine gute Erfahrung, wenn man sie einmal erlernt hat. Wir wollten das gleiche Gefühl mit dem Befehlszeilentool von Stratis haben, und wir mochten auch die Tendenz des Tools, Positionsparameter zu verwenden und die für jeden Befehl erforderliche Eingabemenge zu begrenzen.
Was Stratis von Btrfs gelernt hat
Eine Sache, die uns an Btrfs gefallen hat, war das einzelne Befehlszeilentool mit positionellen Unterbefehlen. Btrfs behandelt auch Redundanz (Btrfs-Profile) als eine Eigenschaft des Pools, was einfacher zu verstehen scheint als der Ansatz von ZFS und das Hinzufügen und sogar Entfernen von Laufwerken ermöglicht.
Schließlich half ein Blick auf die Funktionen, die sowohl ZFS als auch Btrfs bieten, wie z. B. Snapshot-Implementierungen und Sende-/Empfangsunterstützung, bei der Entscheidung, welche Funktionen Stratis beinhalten sollte.
Was Stratis von LVM gelernt hat
Seit den frühen Designphasen von Stratis haben wir LVM ausgiebig studiert. LVM ist derzeit der bedeutendste Benutzer des Linux-Subsystems Device Mapper (DM) – tatsächlich wird DM vom LVM-Kernteam gepflegt. Wir haben beides auf die Möglichkeit der tatsächlichen Nutzung untersucht LVM als Schicht von Stratis und ein Beispiel für die Verwendung von DM, die Stratis direkt mit LVM als Peer ausführen könnte. Wir haben uns das On-Disk-Metadatenformat von LVM (zusammen mit ZFS und XFS) angesehen, um uns bei der Definition des On-Disk-Metadatenformats von Stratis inspirieren zu lassen.
Unter den aufgeführten Projekten hat LVM intern die meisten Gemeinsamkeiten mit Stratis, da beide DM verwenden. Aus Sicht der Nutzung ist LVM jedoch viel transparenter in Bezug auf sein Innenleben. Dies gibt erfahrenen Benutzern ein hohes Maß an Kontrolle und Optionen zur präzisen Konfiguration des Volume-Gruppen-(Pool-)Layouts auf eine Weise, die Stratis nicht bietet.
Vielfältige Lösungen
Das Tolle an der Arbeit an freier Software und Open Source ist, dass es keine unersetzlichen Komponenten gibt. Jeder Teil – sogar der Kernel – kann angezeigt, geändert und sogar ersetzt werden, wenn die aktuelle Software die Anforderungen der Benutzer nicht erfüllt. Ein neues Projekt muss kein bestehendes beenden, wenn genügend Unterstützung vorhanden ist, damit beide parallel weitergeführt werden können.
Stratis ist ein Versuch, einigen besser gerecht zu werden die Bedürfnisse der Benutzer nach lokaler Speicherverwaltung – diejenigen, die nach einer problemlosen, benutzerfreundlichen und leistungsstarken Lösung suchen. Dies bedeutet, Designentscheidungen zu treffen, die möglicherweise nicht für alle Benutzer geeignet sind. Alternativen machen schwierige Entscheidungen möglich, da Benutzer andere Optionen haben. Letztendlich profitieren alle Benutzer von der Möglichkeit, das für sie am besten geeignete Tool zu verwenden.