Bcachefs
Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade. |
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:
- https://www.reddit.com/r/bcachefs/comments/1es1a1s/bcachefs_max_lenght_file_name_max_partition_size/
- 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
- https://bcachefs.org
- https://bcachefs.org/bcachefs-principles-of-operation.pdf * https://web.archive.org/web/20230205130327/https://bcachefs.org/bcachefs-principles-of-operation.pdf
- https://bcachefs.readthedocs.io/en/latest/
- https://www.reddit.com/r/bcachefs/comments/1et6s18/does_alredy_a_official_becachefs_wiki_exist/
- https://bcachefs.org/Architecture/
Manpages
- https://manpages.debian.org/bookworm/bcachefs-tools/bcachefs.8.en.html
- https://man.archlinux.org/man/extra/bcachefs-tools/bcachefs.8.en
- https://manpages.ubuntu.com/manpages/jammy/en/man8/bcachefs.8.html