Nach einer einjährigen Ruhephase in der Entwicklung die Arbeit an der neuen Version des fehlertoleranten verteilten Dateisystems und der zweite Kandidat für die Releases. Vor kurzem gab es einen Eigentümerwechsel bei der Firma, die LizardFS entwickelt. Es wurde eine neue Leitung ernannt und die Entwickler haben gewechselt. In den letzten zwei Jahren hatte das Projekt keinen Kontakt zur Community und schenkte ihr nicht die nötige Aufmerksamkeit, doch das neue Team plant, die früheren Beziehungen zur Community wiederzubeleben und eine enge Zusammenarbeit zu etablieren. Der Code des Projekts ist in C und C++ geschrieben und unter der GPLv3-Lizenz.
LizardFS ist ein verteiltes Cluster-Dateisystem, das es ermöglicht, Daten über verschiedene Server zu verteilen und dennoch den Zugriff in Form eines einzelnen großen Volumes zu präsentieren, dessen Verwaltung analog zu traditionellen Festplattenschnittstellen erfolgt. Im eingehängten Volume mit LizardFS werden POSIX-Dateiattribute, ACLs, Sperren, Sockets, Pipes, Gerätedateien sowie symbolische und harte Links unterstützt. Das System hat keinen einzelnen Punkt des Ausfalls, alle Komponenten werden redundant gehalten. Es wird die Parallelität bei Datenoperationen unterstützt (mehrere Clients können gleichzeitig auf Dateien zugreifen).
Zur Gewährleistung der Fehlertoleranz werden Daten in Repliken aufgeteilt, die über verschiedene Knoten verteilt werden, wobei Redundanzen bestehen (mehrere Kopien auf unterschiedlichen Knoten platziert werden) – im Falle eines Ausfalls von Knoten oder Speichern läuft das System weiterhin ohne Informationsverlust und verteilt die Daten automatisch unter Berücksichtigung der verbleibenden Knoten neu. Für die Erweiterung des Speichers reicht es aus, neue Knoten anzuschließen, ohne den Betrieb für Wartungsarbeiten zu stoppen (das System repliziert selbst Teile der Daten auf neue Server und balanciert den Speicher unter Berücksichtigung der neuen Server). Ähnlich kann auch die Clustergröße reduziert werden – es kann einfach veraltete Hardware, die nicht mehr benötigt wird, abgezogen werden.
Daten und Metadaten werden getrennt gespeichert. Für den Betrieb wird empfohlen, zwei Metadatenserver im Master-Slave-Modus sowie mindestens zwei Datenspeicherserver (Chunkserver) einzurichten. Zusätzlich können zur Sicherung der Metadaten Log-Server eingesetzt werden, die Informationen über Änderungen der Metadaten speichern und die Wiederherstellung im Falle einer Beschädigung aller verfügbaren Metadatenserver ermöglichen. Jede Datei wird in Blöcke (Chunks) von bis zu 64 MB unterteilt. Die Blöcke werden entsprechend dem gewählten Replikationsmodus auf den Speicherservern verteilt: Standard (explizite Festlegung der Anzahl der Kopien für die Verteilung auf verschiedene Knoten, wobei für wichtige Daten die Anzahl der Kopien erhöht und für unwichtige verringert werden kann), XOR (RAID5) und EC (RAID6).
Der Speicher kann auf Petabyte-Größen skalieren. Zu den Anwendungsbereichen gehören die Archivierung, Speicherung von Abbilden virtueller Maschinen, Multimedia-Daten, Backups sowie die Nutzung als DRC (Disaster Recovery Center) und als Speicher in Clustern für Hochleistungsrechner. LizardFS gewährleistet eine sehr hohe Lesegeschwindigkeit für Dateien jeder Größe und zeigt beim Schreiben eine gute Leistung beim Schreiben ganzer großer und mittlerer Dateien, wenn keine ständige Modifikation, intensive Arbeiten mit offenen Dateien und sporadische Vorgänge mit vielen kleinen Dateien stattfinden.
Zu den Funktionen des FS gehört auch die Unterstützung von Snapshots, die den Zustand von Dateien zu einem bestimmten Zeitpunkt widerspiegeln, sowie die integrierte Implementierung eines "Papierkorbs" (Dateien werden nicht sofort gelöscht und sind eine Zeit lang für die Wiederherstellung verfügbar). Der Zugriff auf den Bereich kann nach IP-Adresse oder Passwort eingeschränkt werden (analog zu NFS). Es gibt Quoten- und Qualitätssicherungsmechanismen, die es ermöglichen, die Größe und Bandbreite für bestimmte Benutzergruppen zu begrenzen. Es ist möglich, geografisch verteilte Speicher zu erstellen, deren Segmente in verschiedenen Rechenzentren untergebracht sind.
Das Projekt LizardFS wurde 2013 als Fork gegründet. , und unterscheidet sich hauptsächlich durch das Vorhandensein eines Replikationsmodus auf der Grundlage von Reed-Solomon-Fehlerkorrekturcodes (analog zu raidzN), erweiterte Unterstützung für ACL, einen Client für die Windows-Plattform, zusätzliche Optimierungen (zum Beispiel werden bei der Kombination von Client und Speicherserver die Blöcke nach Möglichkeit vom aktuellen Knoten bereitgestellt und die Metadaten im Speicher zwischengespeichert), ein flexibleres Einstellsystem, Unterstützung für vorzeitiges Lesen von Daten, Quoten für Verzeichnisse und interne Überarbeitungen.
Die Veröffentlichung von LizardFS 3.13.0 ist für Ende Dezember geplant. Die Hauptneuheit von LizardFS 3.13 ist die Verwendung eines Konsensalgorithmus zur Gewährleistung der Ausfallsicherheit (Umschaltung von Master-Servern im Falle eines Ausfalls). (es wird eine proprietäre Implementierung von uRaft verwendet, die zuvor in kommerziellen Produkten eingesetzt wurde). Die Verwendung von uRaft vereinfacht die Konfiguration und reduziert die Latenz beim Wiederherstellen nach einem Ausfall, erfordert jedoch mindestens drei funktionierende Knoten, von denen einer für das Quorum verwendet wird.
Zu den weiteren Änderungen gehören: ein neuer Client auf Basis des FUSE3-Subsystems, die Lösung von Fehlerkorrekturproblemen, das Plugin nfs-ganesha wurde in C neu geschrieben. In dem Update 3.13.0-rc2 wurden mehrere kritische Fehler behoben, die die vorherigen Testversionen des Zweigs 3.13 unbrauchbar machten (Korrekturen für den Zweig 3.12 wurden noch nicht veröffentlicht, und ein Update von 3.12 auf 3.13 führt weiterhin zu einem vollständigen Datenverlust).
Im Jahr 2020 wird die Arbeit auf die Entwicklung
, eines neuen, vollständig neu geschriebenen Kerns von LizardFS konzentriert, der laut den Entwicklern eine dreifache Leistungssteigerung im Vergleich zum Zweig 3.12 bieten wird. In Agama wird der Übergang zu einer ereignisgesteuerten Architektur (event driven) sowie asynchroner Ein- / Ausgabe auf der Basis von , überwiegend im Benutzerspeicher stattfinden (um die Abhängigkeit von den Caching-Mechanismen des Kernels zu verringern). Zusätzlich werden ein neues Debugging-Subsystem und ein Analysewerkzeug für die Netzwerkaktivität mit Unterstützung für die automatische Leistungsoptimierung angeboten.
Im LizardFS-Client wird umfassende Unterstützung für die Versionsverwaltung von Schreiboperationen hinzugefügt, was die Zuverlässigkeit der Wiederherstellung nach einem Ausfall verbessert, Probleme löst, die beim gleichzeitigen Zugriff verschiedener Clients auf dieselben Daten auftreten, und eine erhebliche Steigerung der Leistung ermöglicht. Der Client wird auf ein eigenes NetzwerkSubsystem umgestellt, das im Benutzerspeicher arbeitet. Der erste funktionale Prototyp von LizardFS auf Basis von Agama soll im zweiten Quartal 2020 fertiggestellt werden. Gleichzeitig wird versprochen, Mittel zur Integration von LizardFS mit der Kubernetes-Plattform bereitzustellen.
Quelle: opennet.ru
