Frage Distributed Storage Filesystem - Welches / Gibt es ein gebrauchsfertiges Produkt?


Mit Hadoop und CouchDB überall in Blogs und verwandten News, was ist ein verteilter fehlertoleranter Speicher (Engine), der tatsächlich funktioniert.

  • CouchDB hat eigentlich keine eingebauten Distributionsfunktionen, meines Wissens fehlt einfach der Kleber, um Einträge oder gar ganze Datenbanken automatisch zu verteilen.
  • Hadoop scheint sehr weit verbreitet zu sein - zumindest wird es gut gedruckt, hat aber immer noch einen einzigen Fehlerpunkt: Der NameNode. Außerdem ist es nur über FUSE montierbar, ich verstehe, dass HDFS eigentlich nicht das Hauptziel von Hadoop ist
  • GlusterFS hat ein Shared Nothing-Konzept, aber in letzter Zeit habe ich mehrere Beiträge gelesen, die mich zu der Meinung führen, dass es nicht ganz so stabil ist
  • Lüster hat auch einen einzigen Fehlerpunkt, da ein dedizierter Metadaten-Server verwendet wird
  • Ceph scheint der Spieler der Wahl zu sein, aber die Homepage sagt, dass es immer noch in den Alpha-Phasen ist.

Die Frage ist also, welches verteilte Dateisystem das folgende Feature-Set hat (keine bestimmte Reihenfolge):

  • POSIX-kompatibel
  • einfaches Hinzufügen / Entfernen von Knoten
  • Shared-Nothing-Konzept
  • läuft auf billiger Hardware (AMD Geode oder VIA Eden Class Prozessoren)
  • Authentifizierung / Autorisierung eingebaut
  • ein Netzwerk-Dateisystem (Ich möchte es gleichzeitig auf verschiedenen Hosts mounten können)

Schön zu haben:

  • lokal zugängliche Dateien: Ich kann einen Node herunter nehmen mount die Partition mit einem Standard-lokalen Dateisystem (ext3 / xfs / was auch immer ...) und immer noch auf die Dateien zugreifen

Ich bin nicht Ich suche nach gehosteten Anwendungen, eher etwas, was es mir erlaubt 10GB von jeder unserer Hardware-Boxen zu nehmen und diesen Speicher in unserem Netzwerk verfügbar zu haben, der leicht auf einer Vielzahl von Hosts montierbar ist.


30
2018-06-04 06:08


Ursprung


Also, was hast du am Ende? Es wäre interessant, von Ihrem aktuellen Setup zu erfahren. - MattBianco
Lustre scheint aktive / passive MDS hinzugefügt zu haben, seit du dies geschrieben hast, also könnte ein anderes Aussehen nötig sein. - pjz


Antworten:


Ich denke, dass Sie die POSIX-Anforderung aufgeben müssen, sehr wenige Systeme implementieren das - in der Tat sogar NFS nicht wirklich (denke Schlösser usw.) und das hat keine Redundanz.

Jedes System, das synchrone Replikation verwendet, wird glazial langsam sein; Jedes System mit asynchroner Replikation (oder "eventueller Konsistenz") verletzt die POSIX-Regeln und verhält sich nicht wie ein "herkömmliches" Dateisystem.


9
2018-06-04 06:44



Kennen Sie irgendwelche Dateisysteme, die sowohl Konsistenz als auch strikte Konsistenz unterstützen? Vielleicht könnte man beides anpassen und 2 Mounts erstellen? - CMCDragonkai


Ich kann nicht mit dem Rest sprechen, aber Sie scheinen zwischen einer "verteilten Speicher-Engine" und einem "verteilten Dateisystem" verwirrt zu sein. Sie sind nicht dasselbe, sie sollten nicht für dasselbe gehalten werden, und sie werden niemals dasselbe sein. Ein Dateisystem ist eine Möglichkeit, zu verfolgen, wo sich Dinge auf einer Festplatte befinden. Eine Speicher-Engine wie Hadoop ist eine Möglichkeit, einen Teil der Daten zu verfolgen, die durch einen Schlüssel identifiziert werden. Konzeptionell nicht viel Unterschied. Das Problem ist, dass ein Dateisystem eine Abhängigkeit von einer Speicher-Engine ist ... schließlich braucht es eine Möglichkeit, auf ein Block-Gerät zu schreiben, nicht wahr?

All das beiseite, ich können Sprechen Sie mit der Verwendung von ocfs2 als verteiltes Dateisystem in einer Produktionsumgebung. Wenn Sie die grellen Details nicht möchten, hören Sie auf, nach dieser Zeile zu lesen: Es ist irgendwie cool, aber es kann mehr Ausfallzeit bedeuten, als Sie denken, dass es tut.

Wir haben ocfs2 in den letzten Jahren in einer Produktionsumgebung ausgeführt. Es ist in Ordnung, aber es ist nicht gut für viele Anwendungen. Sie sollten sich Ihre Anforderungen genau ansehen und herausfinden, was sie sind - Sie könnten feststellen, dass Sie viel mehr Spielraum für Fehler haben, als Sie dachten.

Als Beispiel hat ocfs2 ein Journal für jede Maschine im Cluster, die die Partition mounten wird. Nehmen wir an, Sie haben vier Webmaschinen, und wenn Sie diese Partition mit mkfs.ocfs2 erstellen, geben Sie an, dass insgesamt sechs Maschinen vorhanden sind, damit Sie etwas Raum zum Wachsen haben. Jedes dieser Journale belegt Speicherplatz, wodurch die Menge an Daten reduziert wird, die Sie auf den Datenträgern speichern können. Nehmen wir an, Sie müssen auf sieben Maschinen skalieren. In dieser Situation müssen Sie die ganz clustern (d. h. alle ocfs2-Partitionen aushängen) und das Dienstprogramm tunefs.ocfs2 verwenden, um ein zusätzliches Journal zu erstellen, vorausgesetzt, es ist Speicherplatz verfügbar. Dann und nur dann können Sie dem Cluster die siebte Maschine hinzufügen (die erfordert, dass Sie eine Textdatei an den Rest des Clusters verteilen, sofern Sie kein Dienstprogramm verwenden), alles wieder hochbringen und anschließend die Partition auf allen sieben Geräten bereitstellen Maschinen.

Verstehst du, was ich meine? Es sollte eine hohe Verfügbarkeit sein, was "immer online" bedeuten soll, aber genau dort hast du eine Menge Ausfallzeiten ... und Gott bewahre, dass du wegen des Speicherplatzes voll bist. Sie wollen nicht sehen, was passiert, wenn Sie ocfs2 crowd.

Denken Sie daran, dass die Evms, die früher die bevorzugte Methode zur Verwaltung von ocfs2-Clustern war, den Weg des Dodovogels zugunsten von clvmd und lvm2 gegangen ist. (Und eine gute Befreiung von evms.) Außerdem wird der Herzschlag schnell zu einem Zombie-Projekt zugunsten des Openaeis / Schrittmacher-Stacks. (Nebenbei: Wenn Sie die erste Cluster-Konfiguration für ocfs2 vornehmen, können Sie 'pcmk' als Cluster-Engine anstelle von Heartbeat angeben. Nein, dies ist nicht dokumentiert.)

Für das, was es wert ist, sind wir zurück zu nfs, die von Schrittmacher verwaltet werden, da die wenigen Sekunden Ausfallzeit oder ein paar abgelegte Tcp-Pakete als Schrittmacher eine nfs-Freigabe auf eine andere Maschine migriert im Vergleich zu der Ausfallzeit, die wir für Basic sahen Shared Storage-Operationen wie Hinzufügen von Maschinen bei Verwendung von Ocfs2.


16
2018-06-04 08:20



Ich wollte nur sagen, dass dies genau meine Erfahrung mit OCFS2 / Pacemaker vs. NFS ist. Nachdem ich OCFS2 eine Zeit lang als Cluster-Datenspeicher ausprobiert hatte, fand ich es extrem mangelhaft. Mittlerweile läuft unser HA NFS System wie ein Zauber. - Kamil Kisiel
OCFS2 ist definitiv nicht das, was ich sehe. Unter verteilt verstehe ich nicht etwas mit einer zentralen Speicherinstanz, sondern etwas, bei dem ich einfach Knoten hinzufügen oder entfernen kann, die Speicher bereitstellen, während ich immer noch mit dem Rest des "Clusters" zusammen bin. - serverhorror
Da ich immer noch über diese Antwort auf dem Laufenden bin, sollte ich hinzufügen, dass wir jetzt GlusterFS in der Produktion als Ersatz für nfs verwenden. Wir speichern jedoch keine VM-Disk-Images, Datenbank-Storage-Dateien (sqlite oder myisam oder was auch immer) oder andere Dateien, die sich häufig auf glusterfs ändern, da dies den Replikations-Lash verursacht. Jene, die lokal auf VM-Hosts in LVM gespeichert sind und DRBD verwenden, um sie an Failover-Sites zu verteilen, oder integrierte Replikation verwenden. - Karl Katzke


Nur um meine € 0,02 hier reinzuwerfen: kann nicht ÖffnenAFS Tun Sie, was Sie wollen?


3
2018-06-04 04:17





Sieh dir Chirp an http://www.cse.nd.edu/~ccl/software/chirp/ und Papagei http://www.cse.nd.edu/~ccl/software/parrot/ 


3
2018-06-04 05:03



Ich werde versuchen, die Wrapper-Ansatz scheint machbar, aber ist nicht ganz optimal. Nun, ich werde sehen, wie es sich entwickelt - serverhorror


Wie wäre es mit Xtreemfs? Version 1.4 (November 2012) gilt als Produktionsqualität.

Es ist POSIX-kompatibel und weist eine hervorragende automatische Fehlertoleranz auf.


3
2018-06-04 06:01





Lustre ermöglicht mehrere Metadatenspeicher in aktiver / passiver Konfiguration für Redundanz, so dass kein einzelner Fehlerpunkt auftritt.

OCFS2 könnte auch einen Blick wert sein.

Beachten Sie, dass das Ausschneiden der Anforderung für mehrere gleichzeitige Netzwerkzugriffe es ermöglicht, zu etwas wie iSCSI oder sogar cifs oder nfs zu wechseln. Der Nachteil ist, dass Sie Teile Ihres UberArray für jeden Server, der Platz benötigt, in Bites "ausschneiden" müssen.


2
2018-06-03 22:37





Ich verstehe vielleicht Ihre Anforderungen falsch, aber haben Sie sich angesehen http://en.wikipedia.org/wiki/List_of_file_systems#Distributed_file_systems


2



Dies ist der Ort, an dem ich angefangen habe. Ich hoffe, dass ich ein paar Tipps von Leuten bekomme, die bereits eine verteilte Storage-Infrastruktur implementiert haben - serverhorror


Sofern es sich nicht um akademische / Entwicklungszwecke handelt, sollten diese Dinge ausgehend von den allgemeinen Anforderungen für das Projekt angegangen werden. Die meisten verteilten Dateisysteme sind nicht reif genug für einen ernsthaften Einsatz - zum Beispiel, was tun Sie, wenn das Ganze ausfällt. Wenn es für akademische / Entwicklungszwecke ist, dann ist das eigentlich eine gute Sache, wie Sie eine Menge lernen und eine Menge Fehler beheben können.

Die Frage, ob Sie POSIX-Semantik wirklich brauchen, ist ein guter Anfang. Nicht-POSIX-Dateisystem-Semantik kann so viel flexibler sein, was zu wesentlich zuverlässigeren Systemen führt.

Wenn dies eine Legacy-Anwendung ist, frage ich mich wirklich, warum ein modernes verteiltes Dateisystem als die beste Lösung angesehen werden kann.

Versteh mich nicht falsch - das sind verblüffend lustige Spielzeuge. Ich möchte einfach nicht für eine komplexe, voneinander abhängige Lösung verantwortlich sein, die normalerweise nicht verwendet wird und die nur schwer repariert werden kann, wenn sie ausfällt.


2





Brauchen Sie POSIX-Semantik wirklich, absolut positiv? Das Leben wird viel einfacher, wenn Sie einen benutzerdefinierten Datenspeicher verwenden können. Wir haben einen intern geschriebenen Datenspeicher, der effektiv ein sehr großer verteilter Schlüsselwertspeicher ist. Sie speichern eine Datei darin und Sie erhalten ein Token zurück. Wenn Sie die Datei zurück haben wollen, geben Sie ihr das Token, das Sie zuvor erhalten haben. Es ist verteilt, wird geteilt - nichts, Daten werden dreimal repliziert, Knoten können beliebig hinzugefügt und entfernt werden, sowohl Speicherserver als auch Kontrollserver.


1



Leider brauche ich wirklich POSIX Semantik. Wir haben viele "Legacy-Apps", die Dinge im lokalen Dateisystem speichern. Das alles neu zu schreiben liegt definitiv außerhalb des Budgets - serverhorror
Ich vermute, dass Sie einige Ihrer anderen Anforderungen aufgeben müssen. Ich würde GlusterFS, Lustre, OCFS2, GFS betrachten, aber ich bezweifle, dass Sie eines finden, das Shared-Nothing hat. - David Pashley
en.wikipedia.org/wiki/... Listet verteilte Dateisysteme auf, aber nur sehr wenige davon sind POSIX. - David Pashley
Vor einer Ewigkeit verwendete ich eine Variante von AFS (was jetzt OpenAFS ist). Es funktionierte, aber es war komplex und hatte seine eigenen Macken. - Jauder Ho