Bcachefs

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Baustelle.png Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade.


Warnung.png Warnung: Es handelt sich aktuell noch um kein vollständig stabiles Dateisystem, daher bitte immer ein Backup parat haben oder nur Dateien darauf speichern wo es nicht schlimm ist wenn sie verloren gehen


Bcachefs ist ein Dateisystem was sich aktuell in Entwicklung befindet. Bcachefs möchte die Sicherheit von ZFS, die Geschwindigkeit von ext4, den Funktionsumfang von BTRFS/ZFS, die leichte Bedienung von ext4/BTRFS und die lizenztechnisch unproblematische Nutzung von ext4 und Btrfs miteinander in bcachefs kombinieren.

Eigenschaften

Which characters are not allowed when naming directories and files, p.e "/" or "\ / : * ? " < > |" ?

max lenght file name: 255 caracter (255 Bytes) ? max partition size: 16 EiB ? max file size: 16 EiB ? max count of files: supports journaling for metadata ? supports journaling for data ?

Potentieller Ort für obige Antwort:

Die genauen Eigenschaften sollten eigentlich mit dem Entwicklungsstatus "Hard freeze" bekannt werden.

* Maximale Dateigröße: bitte warten
* Maximale Anzahl von Dateien: bitte warten
* Maximale Dateinamenlänge: bitte warten
* Maximale Datenträgergröße: bitte warten
* Datenverschlüsselung: ja
* Copy-on-Write: ja
* Transparent transparente Komprimierung: ja
* Transparente Deduplizierung: ja
* Partitionen anlegen, löschen, vergrößern, verkleinern: ja, ja, ja, geplant
* Send and Recive: geplant

Informationsquellen zum Status der Entwicklung und der Weiterentwicklung

Bugs, Bugfixing und neue Features

 * https://github.com/koverstreet/bcachefs/issues
 * https://lore.kernel.org/linux-bcachefs/

Automatische Funktionstests

 * https://evilpiepirate.org/git/ktest.git/tree/tests/bcachefs/single_device.ktest#n1061
   * https://web.archive.org/web/20230214084304/https://evilpiepirate.org/git/ktest.git/tree/tests/bcachefs/single_device.ktest

Meilensteine des bcachefs Projektes

Aufnahme in den Linux Kernel:

  • Kernel 6.7

Status von bcachefs als "EXPERIMENTAL":

...

Soft freeze:

  • Kernel 6.16

Hard freeze:

  • Kernel 6.17

Entfernung von "EXPERIMENTAL" Labe geplant und oder Entfernung aus dem Kernel und Weiterführung als DKMS geplant für:

  • Kernel 6.18

Benchmark, Geschwindigkeitsvergleich mit anderen Dateisystemen¶

Benchmarks mit ext4, BTRFS, bcachefs, jedoch ohne ZFS

Benchmarks mit ext4, BTRFS, bcachefs und ZFS

Bestehende oder auch noch fehlende Unterstützung von bcachefs durch andere Programme

* https://web.archive.org/web/20240814143649/https://www.reddit.com/r/bcachefs/comments/1es2uox/bcachefs_support_by_other_programms/?rdt=50080

Einführung der Unterstützung durch GParted:

 * https://web.archive.org/web/20230923202639/https://gitlab.gnome.org/GNOME/gparted/-/issues/234

Installation einer bcachefs unterstützenden GParted Version:

Verwendung von bcachefs unterstützenden Kernel sicher stellen

Bcachefs ist seit dem Kernel 6.7 im Kernel integriert, so das es nicht mehr notwendig ist sich einen eigenen Kernel zu bauen. Bis mindestens der Kerbel 6.7 in Stable gelandet ist und man somit einen entsprechenden Kernel standardmäßig bei der Installation oder über ein Update erhält, kann man einen entsprechenden Kernel >=6.7 aus den Debian Backports installieren.

Abfragen der verwendeten Kernel Version

 uname -r
 6.1.0-6-amd64 # Beispiel einer Ausgabe

System updaten

 sudo apt-get update

Backports Kernel installieren

 apt install -t bookworm-backports linux-image-amd64 linux-headers-amd64
 Sytsem neu booten

Nachsehen welcher Kernel nun aktiv ist

 uname -r
 6.9.7+bpo-amd64 # Beispiel einer Ausgabe

Bcachef Tools

Gucken ob die Bcachef Tools installiert sind (Mit Ausgabebeispiel, wenn diese noch nicht installiert sind)

 bcachefs version
 Der Befehl 'bcachefs' wurde nicht gefunden, kann aber installiert werden mit:
 sudo apt install bcachefs-tools

Bcachef-tools installieren

 sudo apt install bcachefs-tools
 ...
 ...
 ...
 update-initramfs: Generating /boot/initrd.img-6.9.7+bpo-amd64

Gucken ob die Bcachef Tools installiert sind (Mit Ausgabebeispiel, wenn diese installiert sind)

 bcachefs version
 bcachefs tool version v0.1-nogit (Hier sollte wohl möglich eigentlich eine Versionsnummer von z.B. (24-1) angezeigt werden. Ist vlt. ein Bug.)

Bcachefs nutzen

Leider ist die Doku nicht so der Knüller, auch die Manpage gibt noch nicht so viel her, leider. Ich zeige nur die Befehle, außer es gibt dort mehr zu sagen, der Rest sollte selbsterklärend sein.

SSD als Cache

background Quelle für den Lesecache/ Ziel für den Schreibcache
foreground Schreibcache, dort werden Daten zuerst hingeschrieben und später auf das Background Target
promote Lesecache, als Caching-Algorythmus wird LRU genutzt

Im folgenden Beispiel wird sdc (Harddisk) von sdb (SSD) als Schreib-/Lesecache genutzt:

root@debian:~# bcachefs format /dev/sd[bc] \
    --foreground_target /dev/sdb \
    --promote-target /dev/sdb \
    --background_target /dev/sdc
root@debian:~# #das ganze mounten:
root@debian:~# mount -t bcachefs /dev/sdb:/dev/sdc /mnt

Ein etwas anderes Beispiel als RAID6 mit verschiedenen Schreib-/Lesecaches:

root@debian:~# bcachefs format \
    --group=ssd /dev/sdb /dev/sdc
    --group=nvme /dev/sdh /dev/sdi 
    --group=hdd /dev/sdd /dev/sde /dev/sdf /dev/sdg \
    --replicas=2 --erasure_code \
    --foreground_target=ssd \
    --background_target=hdd \
    --promote_target=nvme
root@debian:~# #das ganze wieder mounten:
root@debian:~# mount -t bcachefs /dev/sdb:/dev/sdc:/dev/sdh:/dev/sdi:/dev/sdd:/dev/sde:/dev/sdf:/dev/sdg /mnt

RAID1

root@debian:~# bcachefs format --replicas=2 /dev/sdb /dev/sdc
root@debian:~# mount -t bcachefs /dev/sda1:/dev/sdb1 /mnt

Erasure Coding

erasure Coding ist eine Art RAID5/6, genaueres dazu gib es hier

RAID5 like
root@debian:~# bcachefs format --replicas=2 --erasure_code /dev/sdb /dev/sdc /dev/sdd
RAID6 like
root@debian:~# bcachefs format --replicas=3 --erasure_code /dev/sdb /dev/sdc /dev/sdd /dev/sde
Einen Ordner anders behandeln

mittels bcachefs setattr kann man für bestimmte Ordner/Dateien die Eigenschaften ändern, im folgenden Beispiel möchten wir das unsere PostgreSQL eine NVMe als Lese-/Schreibcache nimmt und da sich SQL gut Komprimnieren lässt machen wir das auch gleich

root@debian:~# bcachefs setattr --foreground_target=/dev/nvme1 --background_target=/dev/nvme2 --compression=lz4 /var/lib/postgresql/

Bcachefs als root-Dateisystem

work in progress

Externe Doku

Bcachefs Seite, Doku

Manpages

Andere Wikis