summaryrefslogtreecommitdiff
path: root/Documentation/mkfs.btrfs.asciidoc
blob: 5789762aca8018f2ceacb83124772fae01d68cfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
mkfs.btrfs(8)
=============

NAME
----
mkfs.btrfs - create a btrfs filesystem

SYNOPSIS
--------
*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]$$
$$[-q|--quiet]$$
$$[-s|--sectorsize <sectorsize>]$$
$$[-r|--rootdir <rootdir>]$$
$$[-K|--nodiscard]$$
$$[-O|--features <feature1>[,<feature2>...]]$$
$$[-U|--uuid <UUID>]$$
$$[-h]$$
$$[-V|--version]$$
$$<device> [<device>...]$$

DESCRIPTION
-----------
*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.

OPTIONS
-------
-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'.

-f|--force::
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.

-l|--leafsize <size>::
Alias for --nodesize. Deprecated.

-n|--nodesize <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.
+
NOTE: <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.

-M|--mixed::
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.

-q|--quiet::
Print only error or warning messages. Options --features or --help are unaffected.

-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.
+
NOTE: '-r' option is done completely in userland, and don't need root
privilege to mount the filesystem.

-K|--nodiscard::
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 disable a feature, prefix it with '^'.
+
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.

-V|--version::
Print the *mkfs.btrfs* version and exit.

-h::
Print help.

UNIT
----
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...

NOTES
-----
Since mixed block group creation is optional, we allow small
filesystem instances with differing values for sectorsize and nodesize
to be created and could end up in the following situation,

  [root@localhost ~]# mkfs.btrfs -f -n 65536 /dev/loop0
  btrfs-progs v3.19-rc2-405-g976307c
  See http://btrfs.wiki.kernel.org for more information.

  Performing full device TRIM (512.00MiB) ...
  Label:              (null)
  UUID:               49fab72e-0c8b-466b-a3ca-d1bfe56475f0
  Node size:          65536
  Sector size:        4096
  Filesystem size:    512.00MiB
  Block group profiles:
    Data:             single            8.00MiB
    Metadata:         DUP              40.00MiB
    System:           DUP              12.00MiB
  SSD detected:       no
  Incompat features:  extref, skinny-metadata
  Number of devices:  1
  Devices:
    ID        SIZE  PATH
     1   512.00MiB  /dev/loop0
  [root@localhost ~]# mount /dev/loop0 /mnt/
  mount: mount /dev/loop0 on /mnt failed: No space left on device

The ENOSPC occurs during the creation of the UUID tree. This is
because of things like large metadata block size, DUP mode used for
metadata and global reservation consuming space.

AVAILABILITY
------------
*mkfs.btrfs* is part of btrfs-progs.
Please refer to the btrfs wiki http://btrfs.wiki.kernel.org for
further details.

SEE ALSO
--------
`btrfs`(8)