Kent Overstreet hat die Veröffentlichung des Bcachefs-Dateisystems 1.38.0 veröffentlicht. Die Version umfasst zwei Pakete: bcachefs-kernel-dkms mit einem Kernel-Modul, das mit dem DKMS-System (Dynamic Kernel Module Support) erstellt wird, und bcachefs-tools mit dem im Benutzerspeicherraum ausgeführten bcachefs-Utility, das Befehle zum Erstellen (mkfs), Einbinden, Wiederherstellen und Überprüfen des Dateisystems implementiert. Die Pakete sind für Debian, Ubuntu zusammengestellt und werden für Arch Linux, Fedora, openSUSE und NixOS erwartet. Das DKMS-Modul unterstützt den Betrieb mit Linux-Kernen ab Version 6.16.
Das Projekt Bcachefs entwickelt ein Dateisystem, das darauf abzielt, die erweiterte Funktionalität von Btrfs und ZFS mit einem Leistungs-, Zuverlässigkeits- und Skalierbarkeitsniveau zu kombinieren, das charakteristisch für XFS ist. Bcachefs unterstützt Funktionen wie das Einbinden mehrerer Geräte in ein Volume, mehrschichtige Speicherlayouts (untere Schicht mit häufig verwendeten Daten auf schnellen SSDs und obere Schicht mit weniger häufig verwendeten Daten von Festplatten), Replikation (RAID 1/10), Caching, transparentes Datenkomprimieren (Modi LZ4, gzip und ZSTD), Zustands-Schnappschüsse, Integritätsprüfung via Prüfziffern, Fehlerkorrekturcodes und die Speicherung von Informationen in verschlüsselter Form (es werden ChaCha20 und Poly1305 verwendet).
In der neuen Version:
- Die Btree-Struktur need_discard, die zur Nachverfolgung freigegebener Blockgruppen verwendet wird, wurde auf die Indizierung nach fortlaufender Nummer aus dem Journal umgestellt, statt auf das Paar Gerät / Blockgruppe (device / bucket). Diese Änderung hat die Arbeit mit der need_discard-Struktur beschleunigt und das Auftreten von Deadlocks beim Wiederherstellen aus dem Journal während des Einbindens des Dateisystems mit unzureichendem Platz für Metadaten ausgeschlossen.
- Die Journal-Schreiboperationen wurden in eine separate FIFO-Warteschlange ausgelagert, und die maximale Anzahl gleichzeitig durchgeführter Journal-Schreiboperationen wurde von 16 auf 256 erhöht, was die Leistung großer Speicher mit intensivem Schreibaufkommen verbesserte.
- Das Einbinden von Dateisystemen mit einer hohen Anzahl von Snapshots wurde erheblich beschleunigt.
Zusätzlich kann die Veröffentlichung des Projekts NASty 0.0.3 erwähnt werden, das eine Distribution für die 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 Dateizugriff ü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-Abbilds beträgt 1,9 GB. Die Entwicklungen des Projekts sind unter der GPLv3-Lizenz veröffentlicht. Das Web-Interface ist in TypeScript unter Verwendung des SvelteKit-Frameworks geschrieben. Die Engine zur Verwaltung des Speichers und des Systems 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, Abteilungen, Festplatten, virtuellen Maschinen und gemeinsamem Zugriff zur Verfügung. Es gibt einen integrierten Dateimanager und einen Terminal-Emulator im Web-Interface, die im Browser funktionieren. Es ist möglich, Regeln für die Durchführung von Aktionen und die Benachrichtigung des Administrators im Falle von übermäßigem Speicherplatzverbrauch, Ausfällen der Speichermedien und Überhitzung zu erstellen.
Die Unterstützung für das Starten isolierter Umgebungen und Anwendungen wird durch Virtualisierung auf Basis von QEMU/KVM und containerbasierte Isolation mit Hilfe des k3s-Runtimes gewährleistet (von der WebUI aus können Helm-Charts für das Starten von Anwendungen in Containern und die Konfiguration des Zugriffs über Nginx-Ingress direkt installiert werden). Die Integration mit der Kubernetes-Plattform wird unterstützt, für die ein CSI-Treiber für die dynamische Zuweisung von Speicherplatz bereitgestellt wird. Die Standard-Distribution sendet 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 Dateisystemen, Abteilungen und Snapshots (ohne komplizierte Konzepte wie Datasets, zvol und verschachtelte Pools) sowie das Vorhandensein fortschrittlicher Funktionen wie die automatische Verschiebung von selten verwendeten Daten auf langsamere Speicher, Fehlerkorrekturcodes und die Wiederherstellung von Beschädigungen ohne Unterbrechung des Zugriffs auf das Dateisystem angeführt.
Zu den Änderungen in der Version NASty 0.0.3 gehören:
- der Übergang zur Verwendung des nix flake-Mechanismus für das Packaging und die Verwaltung von Abhängigkeiten;
- unterstützt VPN Tailscale zur Bereitstellung von NVMe-oF über VPN;
- die Integration des k3s-Runtimes; die Hinzufügung von NUT (Network UPS Tools) zur Überwachung von unterbrechungsfreien Stromversorgungen;
- ein Web-Panel zur feinen Konfiguration von NFS, SMB und iSCSI (einschließlich Optionen zur Auswahl des I/O-Schedulers, Protokollierung und Sicherung von Metadaten);
- zusätzliche Einstellungen für Bcachefs (Verwaltung von Fehlerkorrekturcodes, Auswahl des Prüfziffernalgorithmus, Online-Rebalancing usw.);
- Unterstützung des Cachix-Caches zur Beschleunigung der Bereitstellung von Updates;
- Möglichkeit der Generierung TLS-Zertifikate über Let’s Encrypt;
- Integration in die Dienstprogramme iotop-c, btop, fwupd, rsync und croc.

Quelle: opennet.ru
