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.

Related services

KVM VPS hosting

NVMe SSD and full root access, with Free Basic Managed Support.

Unmanaged dedicated servers

full root access and free IPMI KVM, with Free Basic Managed Support.

Linux server management

hardening, patching, monitoring and automation for Ubuntu, Debian, RHEL and AlmaLinux.

Was this answer helpful?

Still stuck? Open a ticket