A new comer to filesytems bcachefs.
Features
Bcachefs is a copy-on-write (COW) file system for Linux-based operating systems.[3] Features include caching,[4] full file-system encryption using the ChaCha20 and Poly1305 algorithms,[5] native compression[4] via LZ4, gzip[6] and Zstandard,[7] snapshots,[4] CRC-32C and 64-bit checksumming.[3] It can span block devices, including in RAID configurations.[5]
Earlier versions of Bcachefs provided all the functionality of Bcache, a block-layer cache system for Linux, with which Bcachefs shares about 80% of its code.[8] As of December 2021, the block-layer cache functionality has been removed.[7]
On a data structure level, bcachefs uses B-trees like many other modern file systems, but with an unusually large node size defaulting to 256 KiB. These nodes are internally log-structured, forming a hybrid data structure, reducing the need for rewriting nodes on update.[9] Snapshots are not implemented by cloning a COW tree, but by adding a version number to filesystem objects.[10] The COW feature and the bucket allocator enables a RAID implementation which is claimed to not suffer from the write hole nor IO fragmentation.[7]
Stability.
Bcachefs describes itself as "working and stable, with a small community of users".[11] When discussing Linux 6.9-rc3 on April 7, 2024, Linus Torvalds touched on the stability of bcachefs, saying "if you thought bcachefs was stable already, I have a bridge to sell you".[12]
I like the last line by the Man himself....LOL
There is one show stopper ATM it will not load on grub/efi, it needs rEFInd or systemd-boot. That might confuse some, and call it bad names...lol.
Code:
inxi -p|grep fs
ID-1: / size: 215.24 GiB used: 41.69 GiB (19.4%) fs: bcachefs dev: /dev/sdc3
ID-2: /boot size: 1.9 GiB used: 369.3 MiB (19.0%) fs: ext4 dev: /dev/sdc2
ID-3: /boot/efi size: 511 MiB used: 1.3 MiB (0.3%) fs: vfat dev: /dev/sdc1
Snapshots are fairly straight forward. The best part is they get stored in "/"
Code:
ls /snap1
bin dev home lib64 mnt proc run srv tmp var
boot etc lib lost+found opt root sbin sys usr
And they also can be removed with just the "rm or rm -rf" command.
Filesystem checks work like normal except syntax is different:
Code:
sudo bcachefs fsck /dev/sdb3
[sudo] password for me:
bcachefs (sdb3): check_alloc_info... done
bcachefs (sdb3): check_lrus... done
bcachefs (sdb3): check_btree_backpointers... done
bcachefs (sdb3): check_backpointers_to_extents... done
bcachefs (sdb3): check_extents_to_backpointers... done
bcachefs (sdb3): check_alloc_to_lru_refs... done
bcachefs (sdb3): check_snapshot_trees... done
bcachefs (sdb3): check_snapshots... done
bcachefs (sdb3): check_subvols... done
bcachefs (sdb3): check_subvol_children... done
bcachefs (sdb3): delete_dead_snapshots... done
bcachefs (sdb3): check_root... done
bcachefs (sdb3): check_subvolume_structure... done
bcachefs (sdb3): check_directory_structure... done
And Status of Data:
Code:
bcachefs fs usage
Filesystem: fad6e580-bf0e-4338-b693-8b17958ae7e4
Size: 233097060864
Used: 32438931456
Online reserved: 2398720
Data type Required/total Durability Devices
reserved: 1/0 [] 36840448
btree: 1/1 1 [sdb3] 430964736
user: 1/1 1 [sdb3] 29985519104
(no label) (device 0): sdb3 rw
data buckets fragmented
free: 220581855232 841453
sb: 3149824 13 258048
journal: 1979187200 7550
btree: 430964736 1644
user: 29985519104 115854 384911872
cached: 0 0
parity: 0 0
stripe: 0 0
need_gc_gens: 0 0
need_discard: 524288 2
capacity: 253366370304 966516
So I've been using this now for a few months and seems stable enough currently, but I'm not going to push it to a production machine just yet.
Bookmarks