Btrfs is an open-source, general-purpose file system for Linux. The name derives from the use of B-trees to store internal file system structures. Different names are used for the file system, including “Butter F S” and “B-tree F S.” Development of Btrfs began at Oracle in 2007, and now a number of companies (including Red Hat, Fujitsu, Intel, SUSE, and many others) are contributing to the development effort. Btrfs is included in the mainline Linux kernel.

 

btrfs device Utilities

 

Use the btrfs device command to manage devices on Btrfs file systems. A list of the available commands is as follows:

# btrfs device
usage: btrfs device [command] [args]

    btrfs device add [options] [device] [device...] [path]
        Add a device to a filesystem
    btrfs device delete [device]|[devid] [device|devid...] [path]
    btrfs device remove [device]|[devid] [device|devid...] [path]
        Remove a device from a filesystem
    btrfs device scan [(-d|--all-devices)|[device] [device...]]
        Scan devices for a btrfs filesystem
    btrfs device ready [device]
        Check device to see if it has all of its devices in cache for mounting
    btrfs device stats [options] [path]|[device]
        Show device IO error statistics
    btrfs device usage [options] [path] [path..]
        Show detailed information about internal allocations in devices.

manage and query devices in the filesystem

 

The btrfs device scan command scans physical devices looking for members of a Btrfs volume. This command allows a multiple-disk Btrfs file system to be mounted without specifying all the disks on the mount command.

 

You do not need to run “btrfs device scan” from the command line, because udev automatically runs btrfs device scan on boot. Use the btrfs device add command to add a device to a file system. In this example, the current file system structure is as follows:

Use the btrfs device command to manage devices on Btrfs file systems. A list of the available commands is as follows:

# btrfs filesystem show
Label: none  uuid: ba60ac96-1628-4656-b68b-c7327ff49179
	Total devices 1 FS bytes used 325.29MiB
	devid    1 size 10.00GiB used 867.66MiB path /dev/sda

 

The btrfs filesystem df command shows:

# btrfs filesystem df /btrfs
Data, single: total=547.66MiB, used=324.75MiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=288.00MiB, used=528.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B

 

The output of the df command shows:

# df -h /btrfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda         10G  342M  9.4G   4% /btrfs

 

Add a 10 GB disk, /dev/sdb, to the file system mounted on /btrfs by using the btrfs device add command:

# btrfs device add /dev/sdb /btrfs

 

The output of the btrfs filesystem show command shows the newly added device:

# btrfs filesystem show
Label: none  uuid: ba60ac96-1628-4656-b68b-c7327ff49179
	Total devices 2 FS bytes used 325.29MiB
	devid    1 size 10.00GiB used 867.66MiB path /dev/sda
	devid    2 size 10.00GiB used 0.00B path /dev/sdb

 

The output of the btrfs filesystem df command shows no difference after adding the new device:

# btrfs filesystem df /btrfs
Data, single: total=547.66MiB, used=324.75MiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=288.00MiB, used=528.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B

 

There is no difference in the output because the newly added device has not yet been allocated for either data or metadata. The additional size is reflected in the output of df:

# df -h /btrfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda         20G  342M   20G   2% /btrfs

 

After adding a device, it is recommended that you run the following balance command on the file system:

# btrfs filesystem balance /btrfs
WARNING:

	Full balance without filters requested. This operation is very
	intense and takes potentially very long. It is recommended to
	use the balance filters to narrow down the balanced data.
	Use 'btrfs balance start --full-balance' option to skip this
	warning. The operation will start in 10 seconds.
	Use Ctrl-C to stop it.
10 9 8 7 6 5 4 3 2 1
Starting balance without any filters.
Done, had to relocate 17 out of 17 chunks

 

Running this command redistributes space by balancing the chunks of the file system across all the devices. This command also reclaims any wasted space. Use the btrfs device delete command to remove a device from a file system. Example:

# btrfs device delete /dev/sdb /btrfs

 

Was this answer helpful? 0 Users Found This Useful (0 Votes)