In den Code-Basis „“, die unter dem Banner des Projekts als Referenzimplementierung von ZFS, Änderungen, die des Betriebssystems FreeBSD. Der in „ZFS on Linux“ hinzugefügte Code wurde in den Versionen FreeBSD 11 und 12 getestet. Somit müssen die Entwickler von FreeBSD nun kein eigenes synchronisiertes Branch für „ZFS on Linux“ pflegen, und alle mit FreeBSD verbundenen Änderungen werden hauptsächlich im Hauptprojekt durchgeführt. Darüber hinaus wird die Funktionsfähigkeit des Hauptzweigs „ZFS on Linux“ in FreeBSD während der Entwicklung im Rahmen eines kontinuierlichen Integrationssystems getestet.
Wir erinnern daran, dass die Entwickler von FreeBSD im Dezember 2018 die zum Übergang auf die ZFS-Implementierung des Projekts „“ (ZoL), um den sich in letzter Zeit alle Aktivitäten zur Weiterentwicklung von ZFS konzentriert haben. Als Grund für die Migration wurde die Stagnation der ZFS-Codebasis des Illumos-Projekts (Fork von OpenSolaris) genannt, die zuvor als Grundlage für den Transfer von ZFS-bezogenen Änderungen nach FreeBSD verwendet wurde. Bis vor kurzem war das Unternehmen Delphix, das das Betriebssystem entwickelt, der Hauptbeitrag zur Unterstützung der ZFS-Codebasis in Illumos. (Fork von Illumos). Vor zwei Jahren entschied sich das Unternehmen Delphix, auf „ZFS on Linux“ umzusteigen, was zur Stagnation von ZFS aus dem Illumos-Projekt führte und die gesamte Entwicklungsaktivität im Projekt „ZFS on Linux“ bündelte, das nun als die Hauptimplementierung angesehen wird. .
Die Entwickler von FreeBSD beschlossen, dem allgemeinen Beispiel zu folgen und nicht an Illumos festzuhalten, da diese Implementierung bereits stark hinter der Funktionalität zurückliegt und mehr Ressourcen für die Wartung des Codes und den Transfer von Änderungen benötigt. „ZFS on Linux“ wird nun als das Hauptprojekt für die gemeinsame Entwicklung von ZFS betrachtet. Zu den Funktionen, die in „ZFS on Linux“ für FreeBSD verfügbar sind, aber in der ZFS-Implementierung von Illumos fehlen, gehören: Multihost-Modus (, Multi Modifier Protection), ein erweitertes Quellsystem, die Verschlüsselung von Datensätzen, die separate Auswahl von Zuweisungsklassen (allocation classes), die Nutzung von Vektorprozessoranweisungen zur Beschleunigung der RAIDZ-Implementierung und der Berechnung von Prüfziffern, verbesserte Befehlszeilenwerkzeuge, die Behebung vieler Fehler im Zusammenhang mit Race Conditions und Sperren.
Quelle: opennet.ru
