Kent Overstreet hat die Version 1.38.0 des Bcachefs-Dateisystems veröffentlicht. Die Version umfasst zwei Pakete: bcachefs-kernel-dkms mit einem Kernel-Modul, das mit dem DKMS (Dynamic Kernel Module Support) -System kompiliert wird, und bcachefs-tools mit dem im Benutzerspeicher laufenden Tool bcachefs, das Befehle zum Erstellen (mkfs), Montieren, Wiederherstellen und Überprüfen des Dateisystems implementiert. Die Pakete wurden für Debian, Ubuntu kompiliert und kommen bald für Arch Linux, Fedora, openSUSE und NixOS. Das DKMS-Modul unterstützt Linux-Kernel ab Version 6.16.
Das Projekt Bcachefs entwickelt ein Dateisystem, das darauf abzielt, die erweiterte Funktionalität von Btrfs und ZFS mit der Leistung, Zuverlässigkeit und Skalierbarkeit von XFS zu kombinieren. Bcachefs unterstützt Funktionen wie die Einbindung mehrerer Geräte in ein Volume, mehrschichtige Speicheranordnungen (eine untere Schicht mit häufig verwendeten Daten auf schnellen SSDs und eine obere Schicht mit weniger häufig genutzten Daten von Festplatten), Replikation (RAID 1/10), Caching, transparente Datenkompression (LZ4-, gzip- und ZSTD-Modi), Zustandsschnappschüsse, Integritätsprüfung über Prüfziffern, Fehlerkorrekturcodes und die Speicherung von Informationen in verschlüsselter Form (unter Verwendung von ChaCha20 und Poly1305).
In der neuen Version:
- Die Btree-Struktur need_discard, die zur Verfolgung der freigegebenen Blocksets verwendet wird, wurde auf die Indizierung nach der sequentiellen Nummer aus dem Journal anstelle von Gerät/Blockset (device/bucket) umgestellt. Diese Änderung hat die Funktionsweise der need_discard-Struktur beschleunigt und das Entstehen von Deadlocks beim Wiederherstellen aus dem Journal während der Montage des Dateisystems mit unzureichendem freien Speicherplatz für Metadaten vermieden.
- Die Journal-Schreibeoperationen wurden in eine separate FIFO-Warteschlange ausgelagert, und die maximale Anzahl gleichzeitig durchgeführter Journal-Schreibeoperationen wurde von 16 auf 256 erhöht, was die Leistung großer Speicher mit intensiven Schreiblasten verbessert hat.
- Das Mounten von Dateisystemen mit einer großen Anzahl von Snapshots wurde erheblich beschleunigt.
Zusätzlich erwähnenswert ist die Veröffentlichung des Projekts NASty 0.0.3, das eine Distribution zur Erstellung von Netzwerkspeichern (NAS) auf Basis von Standardhardware entwickelt. Die Distribution basiert auf der Paketbasis von NixOS, verwendet das Bcachefs-Dateisystem und unterstützt den Datei zugang über NFS und SMB sowie den Export von Blockgeräten über iSCSI und NVMe-oF. Die Verwaltung erfolgt über ein Web-Interface. Die Größe des Installations-ISO-Images beträgt 1.9 GB. Die Entwicklungen des Projekts werden unter der GPLv3-Lizenz verbreitet. Das Web-Interface ist in TypeScript unter Verwendung des SvelteKit-Frameworks geschrieben. Der Speicher- und Systemmanagementengine ist in Rust geschrieben.
Updates werden automatisch heruntergeladen und installiert. Das System wird atomar aktualisiert, mit der Möglichkeit, bei Problemen mit der neuen Version auf den vorherigen Zustand zurückzukehren. Im Web-Interface stehen Funktionen zur Verwaltung von Dateisystemen, Snapshots, Partitionen, Festplatten, virtuellen Maschinen und Dateizugriff zur Verfügung. Es gibt einen integrierten Dateimanager und einen Terminalemulator im Web-Interface, die im Browser arbeiten. Es können Regeln zum Ausführen von Aktionen und zur Benachrichtigung des Administrators bei übermäßigem Speicherverbrauch, Festplattendefekten und Überhitzung erstellt werden.
Der Start isolierter Umgebungen und Anwendungen wird unterstützt, wobei Virtualisierung auf Basis von QEMU/KVM und Container-Isolierung mithilfe des k3s-Runtimes verwendet wird (über das Web-UI können direkt Helm-Charts zur Ausführung von Anwendungen in Containern und zur Konfiguration des Zugangs über Nginx Ingress installiert werden). Die Integration mit der Kubernetes-Plattform wird unterstützt, für die ein CSI-Treiber zur dynamischen Zuteilung von Speicherplatz bereitgestellt wird. Die Distribution sendet standardmäßig Telemetriedaten mit anonymisierten Informationen über die Anzahl der Speichermedien und die Größe des Speichers (Telemetrie kann im Abschnitt „Einstellungen → Telemetrie“ deaktiviert werden).
Als Gründe für die Wahl von Bcachefs anstelle von ZFS werden die aktive Entwicklung, die Bereitstellung unter der GPL-Lizenz, das einfache Modell für die Arbeit mit dem Dateisystem, Partitionen und Snapshots (ohne komplexe Konzepte wie Datasets, zvols oder geschachtelte Pools) sowie das Vorhandensein fortschrittlicher Funktionen wie das automatische Verschieben selten verwendeter Daten auf langsame Speichermedien, Fehlerkorrekturcodes und die Wiederherstellung von Schäden ohne Unterbrechung der Arbeit mit dem Dateisystem angeführt.
Zu den Änderungen in der Version NASty 0.0.3 gehören:
- Übergang zur Verwendung des nix-flake-Mechanismus zur Verpackung und Verwaltung von Abhängigkeiten;
- поддержка VPN Tailscale zur Durchleitung von NVMe-oF über VPN;
- Integration des k3s-Runtimes; Hinzufügen von NUT (Network UPS Tools) zur Überwachung von unterbrechungsfreien Stromversorgungen;
- Web-Panel für die feine Einrichtung von NFS, SMB und iSCSI (einschließlich Optionen zur Auswahl des I/O-Schedulers, zum Journaling und zur Sicherung von Metadaten);
- zusätzliche Einstellungen für Bcachefs (Verwaltung von Fehlerkorrekturcodes, Auswahl des Prüfzalgorithms, Online-Rebalancing usw.);
- Unterstützung von Cachix-Cache zur Beschleunigung der Bereitstellung von Updates;
- Möglichkeit zur Generierung TLS-Zertifikaten über Let’s Encrypt;
- Einbeziehung der Tools iotop-c, btop, fwupd, rsync und croc.

Quelle: opennet.ru
