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.

Features

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:

  • replication (RAID 1)
  • compression (lz4, gzip, zstd - letztere nocht nicht Stabil)
  • checksumming
  • Multidevice Support
  • Caching mittels SSD/NVMe
  • reflink

Was schon in in bcachefs drin ist, aber noch nicht so stabil ist wie oben:

  • erasure coding (ähnlich RAID5/6)
  • Verschlüsselung

Aktuell fehlt noch mehr oder weniger komplett:

  • Snapshot Support
  • Send/Receive
  • Failure Domains
  • Auto mount externer bcachefs Festplatten

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

Abfrage ob bcachefs noch als experimentell markiert ist oder nicht

An einer Stelle des Internet schrieb der Entwickler Kent Overstreet über den Entwicklungsstand von bcachefs "pretty solid". Jedoch an anderer Stelle, gibt er den Zustand bisher wie folgt an:

 * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/bcachefs/Kconfig?h=v6.7
 * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/bcachefs/Kconfig?h=v6.8
 * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/bcachefs/Kconfig?h=v6.9
 * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/bcachefs/Kconfig?h=v6.10

Geschwindigkeitsvergleich, Performance, Benchmark

 * 2023-11-03: https://www.phoronix.com/review/bcachefs-linux-67
 * 2023-11-30: https://www.phoronix.com/review/bcachefs-benchmarks-linux67
 * 2024-04-10, https://forums.fedoraforum.org/showthread.php?332367-bcachefs-benchmark
 * 2024-08-09, https://www.phoronix.com/review/linux-611-filesystems

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