Btrfs/Mount Options

From Forza's ramblings

Mount options[edit | edit source]

Picture of a radio telescope ontop of a hill with cloudy sky.
The 26m Radio Telescope at Mount Pleasant Radio Observatory, Tasmania, Australia

Btrfs has many mount options that controls how the filesystem behaves.

The full set of mount options are available in the Btrfs man page.

Mount option Description
noatime Disables atime updates. This is good to use by default because atime updates increases metadata writes. Atimes are especially costly performance-wise when you have many snapshots.
compress=<algo> Enables compression on the filesystem.
compress-force=<algo> Forces compression, even on data that doesn't compress well. Can increase compression ratio. Also increases fragmentation.
<algo> can be any of zlib:1-9, lzo and zstd:1-15.
space_cache=v2 Enables the new B-tree version of space cache. It is much more performant on large filesystems than The original v1. See Btrfs/Space Cache for details.
subvol=<subvol> Specifies what subvolume to mount.
subvolid=<id> Specifies what subvolume to mount using its ID. Can be used instead of subvol
degraded Is used to mount a filesystem that has a missing disk. Works with a redundant profile such as RAID 1.

The basic mount command is mount -o <options> <device> <path>

# mount -o noatime,compress=zstd,subvol=my-vault /dev/sdc1 /media/vault

fstab[edit | edit source]

This is fstab on one of my machines. The disk is an SSD so I use compress-force=zstd:2 to reduce amount of data written to the disk, increasing its life span.

UUID=446d32cb-a6da-45f0-9246-1483ad3420e0   /               btrfs   compress-force=zstd:2,noatime,subvol=volume/root            0 0
UUID=446d32cb-a6da-45f0-9246-1483ad3420e0   /home           btrfs   compress-force=zstd:2,noatime,subvol=volume/home            0 0
UUID=446d32cb-a6da-45f0-9246-1483ad3420e0   /var/tmp        btrfs   compress-force=zstd:2,noatime,noexec,subvol=volume/var_tmp  0 0
UUID=446d32cb-a6da-45f0-9246-1483ad3420e0   /mnt/rootvol/   btrfs   compress-force=zstd:2,noatime                               0 0
tmpfs                                       /tmp            tmpfs   rw,nosuid,noexec,nodev,size=4G,mode=1777                    0 0

/mnt/rootvol is where the filesystem top level subvolume mounted. From here it is possible to access all snapshots and subvolumes directly.

Many distributions prefix subvolume names with @ so it is easier to distinguish them from normal directories.

Take a moment to read up on flat vs nested subvolume layouts over at Btrfs/Getting_Started#Subvolumes