Bcachefs: Difference between revisions

From NixOS Wiki
imported>Onny
Add note on snapshots
imported>Onny
Add section installation media support
Line 30: Line 30:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# bcachefs subvolume snapshot /mnt /mnt/snap1
# bcachefs subvolume snapshot /mnt /mnt/snap1
</syntaxhighlight>
== Tips and tricks ==
=== Generate bcachefs enabled installation media ===
Use following Nix expression to generate a ISO installation image with a bcachefs enabled kernel
{{file|iso.nix|nix|<nowiki>
# This module defines a small NixOS installation CD.  It does not
# contain any graphical stuff.
{ config, pkgs, ... }:
{
  imports = [
    <nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
  ];
  boot.supportedFilesystems = [ "bcachefs" ];
  isoImage.squashfsCompression = "gzip -Xcompression-level 1";
}
</nowiki>}}
<syntaxhighlight lang="console">
nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=iso.nix
</syntaxhighlight>
</syntaxhighlight>

Revision as of 10:02, 14 May 2023

Bcachefs is a next-generation CoW filesystem that aims to provide features from Btrfs and ZFS with a cleaner codebase, more stability, greater speed and a GPL-compatible license. It is built upon Bcache and is mainly developed by Kent Overstreet.

Installation

To enable filesystem support and availability of user-space utils, add following line to the system configuration

/etc/nixos/configuration.nix
boot.supportedFilesystems = [ "bcachefs" ];

Usage

Format and mount a signle device

# bcachefs format /dev/sda
# mount -t bcachefs /dev/sda /mnt

Format drive with encryption enabled, unlock and mount it afterwards

# bcachefs format --encrypt /dev/sda
# bcachefs unlock /dev/sda
# mount -t bcachefs /dev/sda /mnt

Create a subvolume of a mounted bcachefs filesystem. The snapshot of the filesystem state is accessible in the directory /mnt/snap1.

# bcachefs subvolume snapshot /mnt /mnt/snap1

Tips and tricks

Generate bcachefs enabled installation media

Use following Nix expression to generate a ISO installation image with a bcachefs enabled kernel

iso.nix
# This module defines a small NixOS installation CD.  It does not
# contain any graphical stuff.
{ config, pkgs, ... }:
{
  imports = [
    &lt;nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix&gt;
  ];
  boot.supportedFilesystems = [ "bcachefs" ];
  isoImage.squashfsCompression = "gzip -Xcompression-level 1";
}
nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=iso.nix