mkfs.btrfs [-A|--alloc-start '<alloc-start>'] [-b|--byte-count '<byte-count>'] [-d|--data '<data-profile>'] [-f|--force] [-n|--nodesize '<nodesize>'] [-l|--leafsize '<leafsize>'] [-L|--label '<label>'] [-m|--metadata '<metadata profile>'] [-M|--mixed] [-s|--sectorsize '<sectorsize>'] [-r|--rootdir '<rootdir>'] [-K|--nodiscard] [-O|--features '<feature1>'[,'<feature2>'...]] [-U|--uuid '<UUID>'] [-h] [-V|--version] '<device>' ['<device>'...]


mkfs.btrfs is used to create a btrfs filesystem (usually in a disk partition, or an array of disk partitions).

<device> is the special file corresponding to the device (e.g /dev/sdXX ). If multiple devices are specified, btrfs is created spanning across the specified devices.


-A|--alloc-start <offset>

Specify the offset from the start of the device at which to start allocations in this btrfs filesystem. The default value is zero, or the start of the device. This option is intended only for debugging filesystem resize operations.

-b|--byte-count <size>

Specify the size of the resultant filesystem. If this option is not used, mkfs.btrfs uses all the available storage for the filesystem.

-d|--data <type>

Specify how the data must be spanned across the devices specified. Valid values are raid0, raid1, raid5, raid6, raid10 or single.


Force overwrite when an existing filesystem is detected on the device. By default, mkfs.btrfs will not write to the device if it suspects that there is a filesystem or partition table on the device already.

-n|--nodesize <size>

+ -l|--leafsize <size>:: Specify the nodesize, the tree block size in which btrfs stores data. The default value is 16KB (16384) or the page size, whichever is bigger. Must be a multiple of the sectorsize, but not larger than 65536. Leafsize always equals nodesize and the options are aliases.

-L|--label <name>

Specify a label for the filesystem.


<name> should be less than 256 characters.

-m|--metadata <profile>

Specify how metadata must be spanned across the devices specified. Valid values are raid0, raid1, raid5, raid6, raid10, single or dup.

Single device will have dup set by default except in the case of SSDs which will default to single. This is because SSDs can remap blocks internally so duplicate blocks could end up in the same erase block which negates the benefits of doing metadata duplication.


Mix data and metadata chunks together for more efficient space utilization. This feature incurs a performance penalty in larger filesystems. It is recommended for use with filesystems of 1 GiB or smaller.

-s|--sectorsize <size>

Specify the sectorsize, the minimum data block allocation unit.

The default value is the page size. If the sectorsize differs from the page size, the created filesystem may not be mountable by current kernel. Therefore it is not recommended to use this option unless you are going to mount it on a system with the appropriate page size.

-r|--rootdir <rootdir>

Specify a directory to copy into the newly created btrfs filesystem.


-r option is done completely in userland, and don\(cqt need root privilege to mount the filesystem.


Do not perform whole device TRIM operation by default.

-O|--features <feature1>[,<feature2>...]

A list of filesystem features turned on at mkfs time. Not all features are supported by old kernels.

To see all features run

mkfs.btrfs -O list-all

-U|--uuid <UUID>

Create the filesystem with the specified UUID, which must not already exist on the system.


Print the mkfs.btrfs version and exit.


Print help.


As default the unit is the byte, however it is possible to append a suffix to the arguments like k for KBytes, m for MBytes...


btrfs is part of btrfs-progs. Please refer to the btrfs wiki \m[blue]\m[] for further details.

RELATED TO mkfs.btrfs…