summaryrefslogtreecommitdiffstats
path: root/upstream/fedora-rawhide/man8/mkfs.btrfs.8
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/fedora-rawhide/man8/mkfs.btrfs.8
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/fedora-rawhide/man8/mkfs.btrfs.8')
-rw-r--r--upstream/fedora-rawhide/man8/mkfs.btrfs.81014
1 files changed, 1014 insertions, 0 deletions
diff --git a/upstream/fedora-rawhide/man8/mkfs.btrfs.8 b/upstream/fedora-rawhide/man8/mkfs.btrfs.8
new file mode 100644
index 00000000..d3a88275
--- /dev/null
+++ b/upstream/fedora-rawhide/man8/mkfs.btrfs.8
@@ -0,0 +1,1014 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "MKFS.BTRFS" "8" "Feb 14, 2024" "6.7.1" "BTRFS"
+.SH NAME
+mkfs.btrfs \- create a btrfs filesystem
+.SH SYNOPSIS
+.sp
+\fBmkfs.btrfs\fP [options] <device> [<device>...]
+.SH DESCRIPTION
+.sp
+\fBmkfs.btrfs\fP is used to create the btrfs filesystem on a single or multiple
+devices. The \fIdevice\fP is typically a block device but can be a file\-backed image
+as well. Multiple devices are grouped by UUID of the filesystem.
+.sp
+Before mounting such filesystem, the kernel module must know all the devices
+either via preceding execution of \fBbtrfs device scan\fP or using the \fIdevice\fP
+mount option. See section \fI\%MULTIPLE DEVICES\fP
+for more details.
+.sp
+The default block group profiles for data and metadata depend on number of
+devices and possibly other factors. It\(aqs recommended to use specific profiles
+but the defaults should be OK and allowing future conversions to other profiles.
+Please see options \fI\-d\fP and \fI\-m\fP for further details and \fI\%btrfs\-balance(8)\fP for
+the profile conversion post mkfs.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \-b|\-\-byte\-count <size>
+Specify the size of each device as seen by the filesystem. If not set,
+the entire device size is used. The total filesystem size will be sum
+of all device sizes, for a single device filesystem the option
+effectively specifies the size of the filesystem.
+.UNINDENT
+.INDENT 0.0
+.TP
+.BI \-\-csum \ <type>\fR,\fB \ \-\-checksum \ <type>
+Specify the checksum algorithm. Default is \fIcrc32c\fP\&. Valid values are \fIcrc32c\fP,
+\fIxxhash\fP, \fIsha256\fP or \fIblake2\fP\&. To mount such filesystem kernel must support the
+checksums as well. See section \fI\%CHECKSUM ALGORITHMS\fP
+in \fI\%btrfs(5)\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-d|\-\-data <profile>
+Specify the profile for the data block groups. Valid values are \fIraid0\fP,
+\fIraid1\fP, \fIraid1c3\fP, \fIraid1c4\fP, \fIraid5\fP, \fIraid6\fP, \fIraid10\fP or \fIsingle\fP or \fIdup\fP
+(case does not matter).
+.sp
+See section \fI\%DUP PROFILES ON A SINGLE DEVICE\fP
+for more details.
+.sp
+On multiple devices, the default was \fIraid0\fP until version 5.7, while it is
+\fIsingle\fP since version 5.8. You can still select \fIraid0\fP manually, but it was not
+suitable as default.
+.TP
+.B \-m|\-\-metadata <profile>
+Specify the profile for the metadata block groups.
+Valid values are \fIraid0\fP, \fIraid1\fP, \fIraid1c3\fP, \fIraid1c4\fP, \fIraid5\fP, \fIraid6\fP,
+\fIraid10\fP, \fIsingle\fP or \fIdup\fP (case does not matter).
+.sp
+Default on a single device filesystem is \fIDUP\fP and is recommended for metadata
+in general. The duplication might not be necessary in some use cases and it\(aqs
+up to the user to changed that at mkfs time or later. This depends on hardware
+that could potentially deduplicate the blocks again but this cannot be detected
+at mkfs time.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Up to version 5.14 there was a detection of a SSD device (more precisely
+if it\(aqs a rotational device, determined by the contents of file
+\fB/sys/block/DEV/queue/rotational\fP) that used to select \fIsingle\fP\&. This has
+changed in version 5.15 to be always \fIdup\fP\&.
+.sp
+Note that the rotational status can be arbitrarily set by the underlying block
+device driver and may not reflect the true status (network block device, memory\-backed
+SCSI devices, real block device behind some additional device mapper layer,
+etc). It\(aqs recommended to always set the options \fI\-\-data/\-\-metadata\fP to avoid
+confusion and unexpected results.
+.sp
+See section \fI\%DUP PROFILES ON A SINGLE DEVICE\fP
+for more details.
+.UNINDENT
+.UNINDENT
+.sp
+On multiple devices the default is \fIraid1\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-M|\-\-mixed
+Normally the data and metadata block groups are isolated. The \fImixed\fP mode
+will remove the isolation and store both types in the same block group type.
+This helps to utilize the free space regardless of the purpose and is suitable
+for small devices. The separate allocation of block groups leads to a situation
+where the space is reserved for the other block group type, is not available for
+allocation and can lead to ENOSPC state.
+.sp
+The recommended size for the mixed mode is for filesystems less than 1GiB. The
+soft recommendation is to use it for filesystems smaller than 5GiB. The mixed
+mode may lead to degraded performance on larger filesystems, but is otherwise
+usable, even on multiple devices.
+.sp
+The \fInodesize\fP and \fIsectorsize\fP must be equal, and the block group types must
+match.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Versions up to 4.2.x forced the mixed mode for devices smaller than 1GiB.
+This has been removed in 4.3+ as it caused some usability issues.
+.sp
+Mixed profile cannot be used together with other profiles. It can only
+be set at creation time. Conversion to or from mixed profile is not
+implemented.
+.UNINDENT
+.UNINDENT
+.TP
+.B \-n|\-\-nodesize <size>
+Specify the nodesize, the tree block size in which btrfs stores metadata. The
+default value is 16KiB (16384) or the page size, whichever is bigger. Must be a
+multiple of the sectorsize and a power of 2, but not larger than 64KiB (65536).
+Leafsize always equals nodesize and the options are aliases.
+.sp
+Smaller node size increases fragmentation but leads to taller b\-trees which in
+turn leads to lower locking contention. Higher node sizes give better packing
+and less fragmentation at the cost of more expensive memory operations while
+updating the metadata blocks.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Versions up to 3.11 set the nodesize to 4KiB.
+.UNINDENT
+.UNINDENT
+.TP
+.B \-s|\-\-sectorsize <size>
+Specify the sectorsize, the minimum data block allocation unit.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Versions prior to 6.7 set the sectorsize matching the host CPU
+page size, starting in 6.7 this is 4KiB for cross\-architecture
+compatibility. Please read more about the \fI\%subpage block size support\fP
+and \fI\%its status\fP\&.
+.UNINDENT
+.UNINDENT
+.sp
+By default, the value is 4KiB, but it can be manually set to match the
+system page size (e.g. using command \fBgetconf PAGE_SIZE\fP).
+However, if the sector size is different from the page
+size, the resulting filesystem may not be mountable by the current
+kernel, apart from the default 4KiB. Hence, using this option is not
+advised unless you intend to mount it on a system with the suitable
+page size.
+.TP
+.B \-L|\-\-label <string>
+Specify a label for the filesystem. The \fIstring\fP should be less than 256
+bytes and must not contain newline characters.
+.TP
+.B \-K|\-\-nodiscard
+Do not perform whole device TRIM operation on devices that are capable of that.
+This does not affect discard/trim operation when the filesystem is mounted.
+Please see the mount option \fIdiscard\fP for that in \fI\%btrfs(5)\fP\&.
+.TP
+.B \-r|\-\-rootdir <rootdir>
+Populate the toplevel subvolume with files from \fIrootdir\fP\&. This does not
+require root permissions to write the new files or to mount the filesystem.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This option may enlarge the image or file to ensure it\(aqs big enough to
+contain the files from \fIrootdir\fP\&. Since version 4.14.1 the filesystem size is
+not minimized. Please see option \fI\-\-shrink\fP if you need that functionality.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-shrink
+Shrink the filesystem to its minimal size, only works with \fI\-\-rootdir\fP option.
+.sp
+If the destination block device is a regular file, this option will also
+truncate the file to the minimal size. Otherwise it will reduce the filesystem
+available space. Extra space will not be usable unless the filesystem is
+mounted and resized using \fBbtrfs filesystem resize\fP\&.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Prior to version 4.14.1, the shrinking was done automatically.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-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 \fI^\fP\&.
+.sp
+See section \fI\%FILESYSTEM FEATURES\fP
+for more details. To see all available features that
+\fBmkfs.btrfs\fP supports run:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+$ mkfs.btrfs \-O list\-all
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \-f|\-\-force
+Forcibly overwrite the block devices when an existing filesystem is detected.
+By default, \fBmkfs.btrfs\fP will utilize \fIlibblkid\fP to check for any known
+filesystem on the devices. Alternatively you can use the \fBwipefs\fP utility
+to clear the devices.
+.TP
+.B \-q|\-\-quiet
+Print only error or warning messages. Options \fI\-\-features\fP or \fI\-\-help\fP are unaffected.
+Resets any previous effects of \fI\-\-verbose\fP\&.
+.TP
+.B \-U|\-\-uuid <UUID>
+Create the filesystem with the given \fIUUID\fP\&. For a single\-device filesystem,
+you can duplicate the UUID. However, for a multi\-device filesystem, the UUID
+must not already exist on any currently present filesystem.
+.UNINDENT
+.INDENT 0.0
+.TP
+.BI \-\-device\-uuid \ <UUID>
+Create the filesystem with the given device\-uuid \fIUUID\fP (also known as
+UUID_SUB in \fBblkid\fP). For a single device filesystem, you can
+duplicate the device\-uuid. However, used for a multi\-device filesystem
+this option will not work at the moment.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-v|\-\-verbose
+Increase verbosity level, default is 1.
+.TP
+.B \-V|\-\-version
+Print the \fBmkfs.btrfs\fP version and exit.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-help
+Print help.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-l|\-\-leafsize <size>
+Removed in 6.0, used to be alias for \fI\-\-nodesize\fP\&.
+.TP
+.B \-R|\-\-runtime\-features <feature1>[,<feature2>...]
+Removed in 6.3, was used to specify features not affecting on\-disk format.
+Now all such features are merged into \fI\-O|\-\-features\fP option. The option
+\-R will stay for backward compatibility.
+.UNINDENT
+.SH SIZE UNITS
+.sp
+The default unit is \fIbyte\fP\&. All size parameters accept suffixes in the 1024
+base. The recognized suffixes are: \fIk\fP, \fIm\fP, \fIg\fP, \fIt\fP, \fIp\fP, \fIe\fP, both uppercase
+and lowercase.
+.SH MULTIPLE DEVICES
+.sp
+Before mounting a multiple device filesystem, the kernel module must know the
+association of the block devices that are attached to the filesystem UUID.
+.sp
+There is typically no action needed from the user. On a system that utilizes a
+udev\-like daemon, any new block device is automatically registered. The rules
+call \fBbtrfs device scan\fP\&.
+.sp
+The same command can be used to trigger the device scanning if the btrfs kernel
+module is reloaded (naturally all previous information about the device
+registration is lost).
+.sp
+Another possibility is to use the mount options \fIdevice\fP to specify the list of
+devices to scan at the time of mount.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+# mount \-o device=/dev/sdb,device=/dev/sdc /dev/sda /mnt
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+This means only scanning, if the devices do not exist in the system,
+mount will fail anyway. This can happen on systems without initramfs/initrd and
+root partition created with RAID1/10/5/6 profiles. The mount action can happen
+before all block devices are discovered. The waiting is usually done on the
+initramfs/initrd systems.
+.UNINDENT
+.UNINDENT
+.sp
+\fBWARNING:\fP
+.INDENT 0.0
+.INDENT 3.5
+RAID5/6 has known problems and should not be used in production.
+.UNINDENT
+.UNINDENT
+.SH FILESYSTEM FEATURES
+.sp
+Features that can be enabled during creation time. See also \fI\%btrfs(5)\fP section
+\fI\%FILESYSTEM FEATURES\fP\&.
+.INDENT 0.0
+.TP
+.B mixed\-bg
+(kernel support since 2.6.37)
+.sp
+mixed data and metadata block groups, also set by option \fI\-\-mixed\fP
+.UNINDENT
+.INDENT 0.0
+.TP
+.B extref
+(default since btrfs\-progs 3.12, kernel support since 3.7)
+.sp
+increased hardlink limit per file in a directory to 65536, older kernels
+supported a varying number of hardlinks depending on the sum of all file name
+sizes that can be stored into one metadata block
+.TP
+.B raid56
+(kernel support since 3.9)
+.sp
+extended format for RAID5/6, also enabled if RAID5 or RAID6 block groups
+are selected
+.UNINDENT
+.INDENT 0.0
+.TP
+.B skinny\-metadata
+(default since btrfs\-progs 3.18, kernel support since 3.10)
+.sp
+reduced\-size metadata for extent references, saves a few percent of metadata
+.UNINDENT
+.INDENT 0.0
+.TP
+.B no\-holes
+(default since btrfs\-progs 5.15, kernel support since 3.14)
+.sp
+improved representation of file extents where holes are not explicitly
+stored as an extent, saves a few percent of metadata if sparse files are used
+.TP
+.B zoned
+(kernel support since 5.12)
+.sp
+zoned mode, data allocation and write friendly to zoned/SMR/ZBC/ZNS devices,
+see \fI\%ZONED MODE\fP in
+\fI\%btrfs(5)\fP, the mode is automatically selected when a
+zoned device is detected
+.TP
+.B quota
+(kernel support since 3.4)
+.sp
+Enable quota support (qgroups). The qgroup accounting will be consistent,
+can be used together with \fI\-\-rootdir\fP\&. See also \fI\%btrfs\-quota(8)\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B free\-space\-tree
+(default since btrfs\-progs 5.15, kernel support since 4.5)
+.sp
+Enable the free space tree (mount option \fIspace_cache=v2\fP) for persisting the
+free space cache in a b\-tree. This is built on top of the COW mechanism
+and has better performance than v1.
+.sp
+Offline conversion from filesystems that don\(aqt have this feature
+enabled at \fImkfs\fP time is possible, see \fI\%btrfstune(8)\fP\&.
+.sp
+Online conversion can be done by mounting with \fBspace_cache=v2\fP, this
+is sufficient to be done one time.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B block\-group\-tree
+(kernel support since 6.1)
+.sp
+Enable a dedicated b\-tree for block group items, this greatly reduces
+mount time for large filesystems due to better data locality that
+avoids seeking. On rotational devices the \fIlarge\fP size is considered
+starting from the 2\-4TiB. Can be used on other types of devices (SSD,
+NVMe, ...) as well.
+.sp
+Offline conversion from filesystems that don\(aqt have this feature
+enabled at \fImkfs\fP time is possible, see \fI\%btrfstune(8)\fP\&. Online
+conversion is not possible.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B raid\-stripe\-tree
+(kernel support since 6.7)
+.sp
+New tree for logical file extent mapping where the physical mapping
+may not match on multiple devices. this is now used in zoned mode to
+implement RAID0/RAID1* profiles, but can be used in non\-zoned mode as
+well. The support for RAID56 is in development and will eventually
+fix the problems with the current implementation. This is a backward
+incompatible feature and has to be enabled at mkfs time.
+.TP
+.B squota
+(kernel support since 6.7)
+.sp
+Enable simple quota accounting (squotas). This is an alternative to
+qgroups with a smaller performance impact but no notion of shared vs.
+exclusive usage.
+.UNINDENT
+.SH BLOCK GROUPS, CHUNKS, RAID
+.sp
+The highlevel organizational units of a filesystem are block groups of three types:
+data, metadata and system.
+.INDENT 0.0
+.TP
+.B DATA
+store data blocks and nothing else
+.TP
+.B METADATA
+store internal metadata in b\-trees, can store file data if they fit into the
+inline limit
+.TP
+.B SYSTEM
+store structures that describe the mapping between the physical devices and the
+linear logical space representing the filesystem
+.UNINDENT
+.sp
+Other terms commonly used:
+.INDENT 0.0
+.TP
+.B block group, chunk
+a logical range of space of a given profile, stores data, metadata or both;
+sometimes the terms are used interchangeably
+.sp
+A typical size of metadata block group is 256MiB (filesystem smaller than
+50GiB) and 1GiB (larger than 50GiB), for data it\(aqs 1GiB. The system block group
+size is a few megabytes.
+.TP
+.B RAID
+a block group profile type that utilizes RAID\-like features on multiple
+devices: striping, mirroring, parity
+.TP
+.B profile
+when used in connection with block groups refers to the allocation strategy
+and constraints, see the section \fI\%PROFILES\fP for more details
+.UNINDENT
+.SH PROFILES
+.sp
+There are the following block group types available:
+.TS
+center;
+|l|l|l|l|l|l|.
+_
+T{
+Profiles
+T} T{
+Redundancy
+.sp
+Copies
+T} T{
+Redundancy
+.sp
+Parity
+T} T{
+Redundancy
+.sp
+Striping
+T} T{
+Space utilization
+T} T{
+Min/max devices
+T}
+_
+T{
+single
+T} T{
+1
+T} T{
+T} T{
+T} T{
+100%
+T} T{
+1/any
+T}
+_
+T{
+DUP
+T} T{
+2 / 1 device
+T} T{
+T} T{
+T} T{
+50%
+T} T{
+1/any (see note 1)
+T}
+_
+T{
+RAID0
+T} T{
+1
+T} T{
+T} T{
+1 to N
+T} T{
+100%
+T} T{
+1/any (see note 5)
+T}
+_
+T{
+RAID1
+T} T{
+2
+T} T{
+T} T{
+T} T{
+50%
+T} T{
+2/any
+T}
+_
+T{
+RAID1C3
+T} T{
+3
+T} T{
+T} T{
+T} T{
+33%
+T} T{
+3/any
+T}
+_
+T{
+RAID1C4
+T} T{
+4
+T} T{
+T} T{
+T} T{
+25%
+T} T{
+4/any
+T}
+_
+T{
+RAID10
+T} T{
+2
+T} T{
+T} T{
+1 to N
+T} T{
+50%
+T} T{
+2/any (see note 5)
+T}
+_
+T{
+RAID5
+T} T{
+1
+T} T{
+1
+T} T{
+2 to N\-1
+T} T{
+(N\-1)/N
+T} T{
+2/any (see note 2)
+T}
+_
+T{
+RAID6
+T} T{
+1
+T} T{
+2
+T} T{
+3 to N\-2
+T} T{
+(N\-2)/N
+T} T{
+3/any (see note 3)
+T}
+_
+.TE
+.sp
+\fBWARNING:\fP
+.INDENT 0.0
+.INDENT 3.5
+It\(aqs not recommended to create filesystems with RAID0/1/10/5/6
+profiles on partitions from the same device. Neither redundancy nor
+performance will be improved.
+.UNINDENT
+.UNINDENT
+.sp
+\fINote 1:\fP DUP may exist on more than 1 device if it starts on a single device and
+another one is added. Since version 4.5.1, \fBmkfs.btrfs\fP will let you create DUP
+on multiple devices without restrictions.
+.sp
+\fINote 2:\fP It\(aqs not recommended to use 2 devices with RAID5. In that case,
+parity stripe will contain the same data as the data stripe, making RAID5
+degraded to RAID1 with more overhead.
+.sp
+\fINote 3:\fP It\(aqs also not recommended to use 3 devices with RAID6, unless you
+want to get effectively 3 copies in a RAID1\-like manner (but not exactly that).
+.sp
+\fINote 4:\fP Since kernel 5.5 it\(aqs possible to use RAID1C3 as replacement for
+RAID6, higher space cost but reliable.
+.sp
+\fINote 5:\fP Since kernel 5.15 it\(aqs possible to use (mount, convert profiles)
+RAID0 on one device and RAID10 on two devices.
+.SS PROFILE LAYOUT
+.sp
+For the following examples, assume devices numbered by 1, 2, 3 and 4, data or
+metadata blocks A, B, C, D, with possible stripes e.g. A1, A2 that would be
+logically A, etc. For parity profiles PA and QA are parity and syndrome,
+associated with the given stripe. The simple layouts single or DUP are left
+out. Actual physical block placement on devices depends on current state of
+the free/allocated space and may appear random. All devices are assumed to be
+present at the time of the blocks would have been written.
+.SS RAID1
+.TS
+center;
+|l|l|l|l|.
+_
+T{
+device 1
+T} T{
+device 2
+T} T{
+device 3
+T} T{
+device 4
+T}
+_
+T{
+A
+T} T{
+D
+T} T{
+T} T{
+T}
+_
+T{
+B
+T} T{
+T} T{
+T} T{
+C
+T}
+_
+T{
+C
+T} T{
+T} T{
+T} T{
+T}
+_
+T{
+D
+T} T{
+A
+T} T{
+B
+T} T{
+T}
+_
+.TE
+.SS RAID1C3
+.TS
+center;
+|l|l|l|l|.
+_
+T{
+device 1
+T} T{
+device 2
+T} T{
+device 3
+T} T{
+device 4
+T}
+_
+T{
+A
+T} T{
+A
+T} T{
+D
+T} T{
+T}
+_
+T{
+B
+T} T{
+T} T{
+B
+T} T{
+T}
+_
+T{
+C
+T} T{
+T} T{
+A
+T} T{
+C
+T}
+_
+T{
+D
+T} T{
+D
+T} T{
+C
+T} T{
+B
+T}
+_
+.TE
+.SS RAID0
+.TS
+center;
+|l|l|l|l|.
+_
+T{
+device 1
+T} T{
+device 2
+T} T{
+device 3
+T} T{
+device 4
+T}
+_
+T{
+A2
+T} T{
+C3
+T} T{
+A3
+T} T{
+C2
+T}
+_
+T{
+B1
+T} T{
+A1
+T} T{
+D2
+T} T{
+B3
+T}
+_
+T{
+C1
+T} T{
+D3
+T} T{
+B4
+T} T{
+D1
+T}
+_
+T{
+D4
+T} T{
+B2
+T} T{
+C4
+T} T{
+A4
+T}
+_
+.TE
+.SS RAID5
+.TS
+center;
+|l|l|l|l|.
+_
+T{
+device 1
+T} T{
+device 2
+T} T{
+device 3
+T} T{
+device 4
+T}
+_
+T{
+A2
+T} T{
+C3
+T} T{
+A3
+T} T{
+C2
+T}
+_
+T{
+B1
+T} T{
+A1
+T} T{
+D2
+T} T{
+B3
+T}
+_
+T{
+C1
+T} T{
+D3
+T} T{
+PB
+T} T{
+D1
+T}
+_
+T{
+PD
+T} T{
+B2
+T} T{
+PC
+T} T{
+PA
+T}
+_
+.TE
+.SS RAID6
+.TS
+center;
+|l|l|l|l|.
+_
+T{
+device 1
+T} T{
+device 2
+T} T{
+device 3
+T} T{
+device 4
+T}
+_
+T{
+A2
+T} T{
+QC
+T} T{
+QA
+T} T{
+C2
+T}
+_
+T{
+B1
+T} T{
+A1
+T} T{
+D2
+T} T{
+QB
+T}
+_
+T{
+C1
+T} T{
+QD
+T} T{
+PB
+T} T{
+D1
+T}
+_
+T{
+PD
+T} T{
+B2
+T} T{
+PC
+T} T{
+PA
+T}
+_
+.TE
+.SH DUP PROFILES ON A SINGLE DEVICE
+.sp
+The mkfs utility will let the user create a filesystem with profiles that write
+the logical blocks to 2 physical locations. Whether there are really 2
+physical copies highly depends on the underlying device type.
+.sp
+For example, a SSD drive can remap the blocks internally to a single copy\-\-thus
+deduplicating them. This negates the purpose of increased redundancy and just
+wastes filesystem space without providing the expected level of redundancy.
+.sp
+The duplicated data/metadata may still be useful to statistically improve the
+chances on a device that might perform some internal optimizations. The actual
+details are not usually disclosed by vendors. For example we could expect that
+not all blocks get deduplicated. This will provide a non\-zero probability of
+recovery compared to a zero chance if the single profile is used. The user
+should make the tradeoff decision. The deduplication in SSDs is thought to be
+widely available so the reason behind the mkfs default is to not give a false
+sense of redundancy.
+.sp
+As another example, the widely used USB flash or SD cards use a translation
+layer between the logical and physical view of the device. The data lifetime
+may be affected by frequent plugging. The memory cells could get damaged,
+hopefully not destroying both copies of particular data in case of DUP.
+.sp
+The wear levelling techniques can also lead to reduced redundancy, even if the
+device does not do any deduplication. The controllers may put data written in
+a short timespan into the same physical storage unit (cell, block etc). In case
+this unit dies, both copies are lost. BTRFS does not add any artificial delay
+between metadata writes.
+.sp
+The traditional rotational hard drives usually fail at the sector level.
+.sp
+In any case, a device that starts to misbehave and repairs from the DUP copy
+should be replaced! \fBDUP is not backup\fP\&.
+.SH KNOWN ISSUES
+.sp
+\fBSMALL FILESYSTEMS AND LARGE NODESIZE\fP
+.sp
+The combination of small filesystem size and large nodesize is not recommended
+in general and can lead to various ENOSPC\-related issues during mount time or runtime.
+.sp
+Since mixed block group creation is optional, we allow small
+filesystem instances with differing values for \fIsectorsize\fP and \fInodesize\fP
+to be created and could end up in the following situation:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+# mkfs.btrfs \-f \-n 65536 /dev/loop0
+btrfs\-progs v3.19\-rc2\-405\-g976307c
+See https://btrfs.readthedocs.io 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
+
+# mount /dev/loop0 /mnt/
+mount: mount /dev/loop0 on /mnt failed: No space left on device
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The ENOSPC occurs during the creation of the UUID tree. This is caused
+by large metadata blocks and space reservation strategy that allocates more
+than can fit into the filesystem.
+.SH AVAILABILITY
+.sp
+\fBbtrfs\fP is part of btrfs\-progs. Please refer to the documentation at
+\fI\%https://btrfs.readthedocs.io\fP\&.
+.SH SEE ALSO
+.sp
+\fI\%btrfs(5)\fP,
+\fI\%btrfs(8)\fP,
+\fI\%btrfs\-balance(8)\fP,
+\fBwipefs(8)\fP
+.\" Generated by docutils manpage writer.
+.