BCACHEFS(8) System Manager's Manual (smm) BCACHEFS(8)

bcachefsmanage bcachefs filesystems/devices

bcachefs command [options] [arguments]

The bcachefs utility supports the following subcommands, which are documented in detail below:

Superblock commands

Format one or a list of devices with bcachefs data structures.
Dump superblock information to stdout.
Set a filesystem option

Mount commands

Mount a filesystem.

Repair commands

Check an existing filesystem for errors.

Commands for managing a running filesystem

Show disk usage
Show runtime performance information

Commands for managing devices within a running filesystem

Add a new device to an existing filesystem
Remove a device from an existing filesystem
Re-add an existing member to a filesystem
Take a device offline, without removing it
Migrate data off of a specific device
Set a device state
Resize filesystem on a device
Resize journal on a device

Commands for managing subvolumes and snapshots

Create a new subvolume
Delete an existing subvolume
Create a snapshot
List subvolumes
List snapshots and their disk usage

Commands for managing filesystem data

Query or wait for background data reconciliation
Verify data checksums

Commands for encryption

Unlock an encrypted filesystem prior to running/mounting
Change passphrase on an existing (unmounted) filesystem
Remove passphrase on an existing (unmounted) filesystem

Commands for migration

Migrate an existing filesystem to bcachefs, in place
Add default superblock, after bcachefs migrate

Commands for operating on files in a bcachefs filesystem

Set various per file attributes

Commands for debugging

Dump filesystem metadata to a qcow2 image
List filesystem metadata in textual form
List contents of journal

FUSE commands

 

Miscellaneous commands

Display the version of the invoked bcachefs tool
Generate shell completions

Superblock commands

bcachefs format [options] devices ...
Format one or a list of devices with bcachefs data structures. You need to do this before you create a volume.

Device specific options must come before corresponding devices, e.g.

bcachefs format --label=ssd /dev/sda --label=hdd /dev/sdb
=size
block size, in bytes (e.g. 4k)
=size
Btree node size, default 256k
=(continue | | )
Action to take on filesystem error
=number
Number of data replicas. With erasure coding enabled, this is currently capped at 3 (RAID6).
=number
Number of metadata replicas
=size
Maximum size of checksummed/compressed extents
=(none | | | )
Set metadata checksum type (default: crc32c).
=(none | | | )
Set data checksum type (default: crc32c).
=(none | | | )
Set compression type (default: none).
=(none | | | )
=(crc32c | | )
Hash function for directory entries and xattrs
=target
Device or label for metadata writes
=target
Device or label for foreground writes
=target
Device or label to move data to in the background
=target
Device or label to promote data to on read
Enable erasure coding (RAID5/6; data replicas are capped at 3)
Constrain inode numbers to 32 bits
Shared new inode numbers by CPU id
Use the btree key cache for the inodes btree
=percentage
Percentage of disk space to reserve for copygc
=percentage
Amount of disk space to reserve for copygc

This takes precedence over gc_reserve_percent if set

=percentage
Percentage of disk space to reserve for superuser
Store full 128bits of cryptographic MACS, instead of 80
Enable POSIX acls
Enable user quotas
Enable group quotas
Enable project quotas
Log transaction function names in journal
Nocow mode: Writes will be done in place when possible.

Snapshots and reflink will still cause writes to be COW.

This flag implicitly disables data checksumming, compression and encryption.

=number
Sets both data and metadata replicas.
Enable whole filesystem encryption (chacha20/poly1305); passphrase will be prompted for.
Store master encryption key unencrypted in superblock
, --fs_label=label
Create the filesystem with the specified label This is the filesystem label, distinct from per-device labels used for target selection. On a mounted filesystem it can be changed by tools that issue the standard Linux FS_IOC_SETFSLABEL ioctl.
, --uuid=uuid
Create the filesystem with the specified uuid
=size

Device specific options:

Enable discard/TRIM support
=size
Create the filesystem using size bytes on the subsequent device.
=size
Specifies the bucket size; must be greater than the btree node size
=n
Data written to this device will be considered to have already been replicated n times
, --label
Disk label
, --force
Force the filesystem to be created, even if the device already contains a filesystem.
, --quiet
Only print errors
, --verbose
Verbose filesystem initialization
bcachefs show-super [options] device
Dump superblock information to stdout.
, --fields=fields
List of sections to print
, --layout
Print superblock layout
bcachefs set-fs-option [options] device
=(continue | | )
Action to take on filesystem error
=number
Number of metadata replicas
=number
Number of data replicas. With erasure coding enabled, this is currently capped at 3 (RAID6).
=(none | | | )
Set metadata checksum type (default: crc32c).
=(none | | | )
Set data checksum type (default: crc32c).
=(none | | | )
Set compression type (default: none).
=(none | | | )
=(crc32c | | )
Hash function for directory entries and xattrs
=target
Device or label for metadata writes
=target
Device or label for foreground writes
=target
Device or label to move data to in the background
=target
Device or label to promote data to on read
Enable erasure coding (RAID5/6; data replicas are capped at 3)
Constrain inode numbers to 32 bits
Shared new inode numbers by CPU id
Use the btree key cache for the inodes btree
=percentage
Percentage of disk space to reserve for copygc
=percentage
Amount of disk space to reserve for copygc

This takes precedence over gc_reserve_percent if set

=percentage
Percentage of disk space to reserve for superuser
Store full 128bits of cryptographic MACS, instead of 80
Enable POSIX acls
Enable user quotas
Enable group quotas
Enable project quotas
Allow mounting in degraded mode
Allow mounting in when data will be missing
Enable discard/TRIM support
Extra debugging information during mount/recovery
=ms
Delay in milliseconds before automatic journal commits
Disable journal flush on sync/fsync

If enabled, writes can be lost, but only since the last journal write (default 1 second)

=ms
Delay in milliseconds before automatic journal reclaim
=bytes
Maximum Amount of IO to keep in flight by the move path
=number
Maximum number of IOs to keep in flight by the move path
Run fsck on mount
=error
Fix errors during fsck without asking
Ratelimit error messages during fsck
Super read only mode - no writes at all will be issued, even if we have to replay the journal
Don't replay the journal
Log transaction function names in journal
Don't open device in exclusive mode
Use O_DIRECT (userspace only)
=offset
Sector offset of superblock
Reconstruct alloc btree
=(compatible | | )
Set superblock to latest version, allowing any new features to be used

compatible is the default: compatible metadata upgrades may be applied automatically, and the filesystem may still downgrade those compatible version fields when mounted by an older kernel. Use incompatible only for an intentional one-way metadata upgrade that may prevent mounting with older kernels, and use none to avoid optional version upgrades.

Nocow mode: Writes will be done in place when possible.

Snapshots and reflink will still cause writes to be COW.

This flag implicitly disables data checksumming, compression and encryption.

Enable nocow mode: enables runtime locking in data move path needed if nocow will ever be in use
Skip submit_bio() for data reads and writes, for performance testing purposes

Mount commands

bcachefs mount [options] device mountpoint
The mount -t bcachefs path invokes the installed mount.bcachefs helper; this is the same mount path exposed as bcachefs mount.

Mount a filesystem. The device can be a device, a colon-separated list of devices, UUID=<UUID>, OLD_BLKID_UUID=<UUID>, or LABEL=<label>. Use OLD_BLKID_UUID=<UUID> in fstab entries when systemd consumes UUID=<UUID> before the bcachefs mount helper can scan all members. The mountpoint is the path where the filesystem should be mounted. If not set, then the filesystem won't actually be mounted but all steps preceding mounting the filesystem (e.g. asking for passphrase) will still be performed.

options
Mount options provided as a comma-separated list. See user guide for complete list.
Allow mounting with missing devices. Use degraded=yes to allow normal operation with devices missing, and degraded=very only when writes are allowed to continue even if the requested replica count cannot be maintained.

Use degraded read-write mounts for recovery and maintenance when some members are temporarily unavailable. Do not mount different subsets of the same filesystem read-write, or mount one subset read-write and later mount a different subset read-write before the full filesystem has been assembled and reconciled. That creates split-brain history: each subset can accept writes that the other subset never saw, and when the members are later brought back together there may be no single correct value for conflicting files.

When in doubt, mount degraded filesystems read-only until the missing members are available, or assemble the complete filesystem before allowing writes.

Extra debugging info during mount/recovery
Run fsck during mount
Fix errors without asking during fsck
Mount in read only mode
 
, --key-location=(fail | | )
Where the password would be loaded from. (default: ask).
don't ask for password, fail if filesystem is encrypted.
wait for password to become available before mounting.
prompt the user for password.
, --colorize=(true | )
Force color on/off. Default: auto-detect TTY
, --no-mtab
Do not update /etc/mtab. This is accepted for compatibility with mount(8); bcachefs uses the mount syscall directly and does not update /etc/mtab.
, --fake
Do everything except the actual mount syscall. Accepted for compatibility with mount(8).
, --sloppy
Ignore unrecognized mount options instead of failing. Accepted for compatibility with mount(8); bcachefs already ignores unrecognized options.
Be verbose. Can be specified more than once.

Repair commands

bcachefs fsck [options] devices ...
Check an existing filesystem for errors.
Automatic repair (no questions)
Don't repair, only check for errors
Assume "yes" to all questions
Force checking even if filesystem is marked clean
, --ratelimit_errors
Don't display more than 10 errors of a given type
, --reconstruct_alloc
Reconstruct the alloc btree
Be verbose

Commands for managing a running filesystem

bcachefs fs usage [options] [filesystem]
Show disk usage.
, --human-readable
Print human readable sizes.
bcachefs fs top [options] [filesystem]
Show live filesystem performance counters. When stdout is a terminal, this starts an interactive display. When stdout is not a terminal, it prints one sample and exits.
, --human-readable
Print human readable sizes.
Print one sample and exit; equivalent to specifying a count of 1.
, --count=count
Print count samples and exit. A count of 0 keeps the interactive display running.
, --delay=seconds
Delay between samples, in seconds.

Commands for managing devices within a running filesystem

bcachefs device add [options] device
Add a device to an existing filesystem.
=size
Size of filesystem on device
=size
Set bucket size
Enable discards
, --label=label
Disk label
, --force
Use device even if it appears to already be formatted
bcachefs device remove [options] device
Remove a device from a filesystem
, --force
Force removal, even if some data couldn't be migrated
, --force-metadata
Force removal, even if some metadata couldn't be migrated
bcachefs device online device
Re-add a device to a running filesystem
bcachefs device offline device
Take a device offline, without removing it
, --force
Force, if data redundancy will be degraded
bcachefs device evacuate device
Move data off of a given device
bcachefs device set-state [options] new-state device
new-state=(rw | ro | evacuating | spare)
New member state. Use rw to cancel an in-progress evacuation and return the device to normal use.
, --force
Force, if data redundancy will be degraded
Force, if data will be lost
, --offline
Set state of an offline device
bcachefs device resize device [size]
Resize filesystem on a device. Online shrinking is passed to the mounted filesystem kernel; if that kernel does not support shrinking, the resize ioctl fails. Offline shrinking is still unsupported by the bundled userspace filesystem implementation.
bcachefs device resize-journal device [size]
Resize journal on a device

Commands for managing subvolumes and snapshots

[options] path
Create a new subvolume
[options] path
Delete an existing subvolume

Subvolume roots may be renamed or moved as subvolume roots. Ordinary files and directories cannot be renamed across subvolume boundaries; copy or reflink data when reorganizing contents between subvolumes.

[options] source dest
Create a snapshot of source at dest. If specified, source must be a subvolume; if not specified the snapshot will be of the subvolume containing dest.
Make snapshot read-only
[options] target
List subvolumes in a mounted filesystem.
Output machine-readable JSON.
, --tree
Show a hierarchical view.
, --recursive
List subvolumes recursively.
, --snapshots
Include snapshot subvolumes.
Only show read-only subvolumes.
=(name | | )
Sort output.
[options] target
List snapshots and their disk usage in a mounted filesystem.
, --flat
Show a flat list instead of the default tree.
, --recursive
List snapshot trees for nested subvolumes too.
Output machine-readable JSON, including snapshot IDs and parent relationships.
Only show read-only snapshots in flat view.
=(name | | )
Sort flat output.

Commands for managing filesystem data

bcachefs scrub [-m | --metadata] filesystem
Verify checksums and correct errors, if possible. When scrub finds checksum errors, affected file paths are currently reported in the kernel log.
, --metadata
Check metadata only
bcachefs reconcile status [-t type[,...]]
[filesystem] Show pending background reconciliation work. Reconcile restores redundancy after a degraded mount or device replacement; mounted filesystems also queue reconcile work automatically when degraded extents are detected.
, --types type[,...]
Limit output to the selected reconciliation types.
bcachefs reconcile wait [-t type[,...]]
[filesystem] Wait for background reconciliation work to finish.
, --types type[,...]
Wait only for the selected reconciliation types.

Commands for encryption

bcachefs unlock device
Unlock an encrypted filesystem prior to running/mounting.
Check if a device is encrypted
=(session | | )
Keyring to add to (default: user)
bcachefs set-passphrase devices ...
Change passphrase on an existing encrypted (unmounted) filesystem. This rewraps the existing filesystem encryption key; it does not enable encryption on a filesystem formatted without --encrypted.
bcachefs remove-passphrase devices ...
Remove passphrase protection from an existing encrypted (unmounted) filesystem. This stores the existing filesystem encryption key without passphrase protection; it does not decrypt existing data or disable filesystem encryption.

Commands for migration

bcachefs migrate [options] device
Migrate an existing filesystem to bcachefs
fs
Root of filesystem to migrate
Enable whole filesystem encryption (chacha20/poly1305)
Store master encryption key unencrypted in superblock
Force, even if metadata file already exists
bcachefs migrate-superblock [options] device
Create default superblock after migrating
device
Device to create superblock for
offset
Offset of existing superblock

Commands for operating on files in a bcachefs filesystem

bcachefs set-file-option [options] [files|folders] ...
Set various per-file attributes on files and directories in a bcachefs filesystem. When applied to directories, attributes are propagated recursively to all files and subdirectories within. Changed options take effect immediately for new writes. For existing data, background reconcile applies changed IO options asynchronously, for example rewriting existing extents with a new compression algorithm or replica count.
=number
Number of data replicas. With erasure coding enabled, this is currently capped at 3 (RAID6).
=(none | | | )
Set data checksum type (default: crc32c).
=(none | | | )
Set compression type (default: none).
=(none | | | )
=target
Device or label for metadata writes
=target
Device or label for foreground writes
=target
Device or label to move data to in the background
=target
Device or label to promote data to on read
Enable erasure coding (RAID5/6; data replicas are capped at 3)
Nocow mode: Writes will be done in place when possible.
Remove all file options from the specified files/directories

To remove specific options, use --option=-

Options can be chained together to perform multiple operations in a single command, for example:

bcachefs set-file-option --remove-all --compression=lz4
.
bcachefs set-file-option --compression=- --background_compression=zstd:10 --data_replicas=- file.txt
bcachefs reflink-option-propagate [--set-may-update] files...
Propagate each file's current IO options, including compression, checksum, replicas, and targets, to its extents. This includes indirect, reflinked extents where the reflink pointer permits option updates.
Enable option propagation on old reflink pointers that predate the may-update-options permission flag. This requires administrative privileges and is only needed once per affected file.

Commands for debugging

These commands work on offline, unmounted filesystems.

bcachefs dump [options] device
Dump filesystem metadata
output
Required flag: Output qcow2 image(s)
, --force
Force; overwrite when needed
Don't dump entire journal, just dirty entries
bcachefs list [options] devices ...
List filesystem metadata to stdout
(extents | | | )
Btree to list from. (default: extents)
, --level
Btree depth to descend to. ( 0 == leaves; default: 0)
inode:offset
Start position to list from
inode:offset
End position
, --mode (keys | | | )
(default: keys)
Check (fsck) the filesystem first
, --colorize=(true | )
Force color on/off. Default: auto-detect TTY
Verbose mode
bcachefs list_journal [options] devices ...
Read entire journal, not just dirty entries
, --nr-entries=nr
Number of journal entries to print, starting from the most recent
, --seq=seq[..seq]
Journal entry sequence or range to print (e.g., 123, 100..200, 100.., ..200)
, --transaction-filter=bbpos
Filter transactions not updating bbpos
, --key-filter=btree
Filter keys not updating btree
, --verbose
Verbose mode

FUSE commands

bcachefs fusemount
Mount a filesystem via FUSE

Miscellaneous commands

bcachefs completions shell
Generate shell completions
bcachefs version
Display the version of the invoked bcachefs tool

The bcachefs utility exits 0 on success, and >0 if an error occurs.

November 17, 2023 Linux 6.12.107+deb13-amd64