Updated: 28 September 2026 · Applies to: btrfs-progs 6.x on Ubuntu 24.04 and 26.04, Debian 13, Fedora and AlmaLinux 10; not supported on RHEL, Rocky Linux or AlmaLinux 9

Btrfs can grow and shrink while it is mounted, and it can span several disks, so resizing is usually a single command. Which Linux you run matters: Btrfs is the default on Fedora Workstation and openSUSE, and supported on Ubuntu and Debian. Red Hat removed Btrfs from RHEL, so RHEL, Rocky Linux and AlmaLinux 9 kernels cannot mount it; AlmaLinux 10 added it back to its kernel. We tested the commands below with btrfs-progs 6.12.

Before you start

  • Install the tools if needed: apt install btrfs-progs, dnf install btrfs-progs (Fedora), or from EPEL on AlmaLinux 10.
  • Take a backup, and check the current size: btrfs filesystem usage /data.

Grow Btrfs after the disk or partition got bigger

  1. Grow the partition first if there is one, for example with growpart /dev/vda 2 or parted.
  2. Grow the file system to fill it:
    btrfs filesystem resize max /data
  3. Check: btrfs filesystem usage /data (the "Device size" line).

Grow by adding another disk

btrfs device add /dev/sdc /data
btrfs balance start -dusage=50 /data

The new disk joins the file system at once. The balance spreads existing data across both disks; -dusage=50 only moves half-empty chunks, which is quicker. For mirrored data (RAID1), convert with btrfs balance start -dconvert=raid1 -mconvert=raid1 /data.

Shrink Btrfs

btrfs filesystem resize -20G /data

Shrinking also works while mounted, as long as the data fits. After shrinking the file system, you can shrink the partition to the new size, never below it.

Multi-disk file systems

With several disks, resize one device by its ID: find the ID with btrfs filesystem show /data, then run btrfs filesystem resize 2:max /data. To take a disk out, run btrfs device remove /dev/sdc /data; the data is moved to the other disks first.

Common problems

  • "No space left" although df shows free space: Btrfs allocates space in chunks. Run btrfs balance start -dusage=10 /data to free unused chunks.
  • "unknown filesystem type 'btrfs'" on RHEL, Rocky Linux or AlmaLinux 9: the kernel has no Btrfs support. Use XFS (see how to grow an XFS file system) or ext4 there.

Official documentation: btrfs filesystem and btrfs device.

Byla tato odpověď nápomocná?

Stále potřebujete pomoc? Otevřete tiket