2021-10-26 22:45:24 +00:00
|
|
|
btrfs-check(8)
|
|
|
|
==============
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
|
|
|
|
**btrfs check** [options] <device>
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
|
|
|
|
The filesystem checker is used to verify structural integrity of a filesystem
|
|
|
|
and attempt to repair it if requested. It is recommended to unmount the
|
|
|
|
filesystem prior to running the check, but it is possible to start checking a
|
|
|
|
mounted filesystem (see *--force*).
|
|
|
|
|
2023-04-26 23:48:47 +00:00
|
|
|
By default, :command:`btrfs check` will not modify the device but you can reaffirm that
|
2021-10-26 22:45:24 +00:00
|
|
|
by the option *--readonly*.
|
|
|
|
|
2023-04-26 23:48:47 +00:00
|
|
|
:command:`btrfsck` is an alias of :command:`btrfs check` command and is now deprecated.
|
2021-10-26 22:45:24 +00:00
|
|
|
|
|
|
|
.. warning::
|
|
|
|
Do not use *--repair* unless you are advised to do so by a developer
|
|
|
|
or an experienced user, and then only after having accepted that no *fsck*
|
2022-12-22 17:44:20 +00:00
|
|
|
successfully repair all types of filesystem corruption. E.g. some other software
|
2021-10-26 22:45:24 +00:00
|
|
|
or hardware bugs can fatally damage a volume.
|
|
|
|
|
|
|
|
The structural integrity check verifies if internal filesystem objects or
|
|
|
|
data structures satisfy the constraints, point to the right objects or are
|
|
|
|
correctly connected together.
|
|
|
|
|
|
|
|
There are several cross checks that can detect wrong reference counts of shared
|
|
|
|
extents, backreferences, missing extents of inodes, directory and inode
|
|
|
|
connectivity etc.
|
|
|
|
|
|
|
|
The amount of memory required can be high, depending on the size of the
|
|
|
|
filesystem, similarly the run time. Check the modes that can also affect that.
|
|
|
|
|
|
|
|
|
|
|
|
SAFE OR ADVISORY OPTIONS
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
-b|--backup
|
|
|
|
use the first valid set of backup roots stored in the superblock
|
|
|
|
|
|
|
|
This can be combined with *--super* if some of the superblocks are damaged.
|
|
|
|
|
|
|
|
--check-data-csum
|
|
|
|
verify checksums of data blocks
|
|
|
|
|
|
|
|
This expects that the filesystem is otherwise OK, and is basically an offline
|
|
|
|
*scrub* that does not repair data from spare copies.
|
|
|
|
|
|
|
|
--chunk-root <bytenr>
|
|
|
|
use the given offset *bytenr* for the chunk tree root
|
|
|
|
|
|
|
|
-E|--subvol-extents <subvolid>
|
|
|
|
show extent state for the given subvolume
|
|
|
|
|
|
|
|
-p|--progress
|
|
|
|
indicate progress at various checking phases
|
|
|
|
|
|
|
|
-Q|--qgroup-report
|
|
|
|
verify qgroup accounting and compare against filesystem accounting
|
|
|
|
|
|
|
|
-r|--tree-root <bytenr>
|
|
|
|
use the given offset 'bytenr' for the tree root
|
|
|
|
|
|
|
|
--readonly
|
|
|
|
(default)
|
|
|
|
run in read-only mode, this option exists to calm potential panic when users
|
|
|
|
are going to run the checker
|
|
|
|
|
|
|
|
-s|--super <N>
|
|
|
|
use Nth superblock copy, valid values are 0, 1 or 2 if the
|
|
|
|
respective superblock offset is within the device size
|
|
|
|
|
|
|
|
This can be used to use a different starting point if some of the primary
|
|
|
|
superblock is damaged.
|
|
|
|
|
|
|
|
--clear-space-cache v1|v2
|
2023-01-16 13:49:02 +00:00
|
|
|
completely remove the free space cache of the given version
|
2021-10-26 22:45:24 +00:00
|
|
|
|
2023-01-16 13:49:02 +00:00
|
|
|
See also the *clear_cache* mount option.
|
2021-10-26 22:45:24 +00:00
|
|
|
|
|
|
|
--clear-ino-cache
|
|
|
|
remove leftover items pertaining to the deprecated inode map feature
|
|
|
|
|
|
|
|
|
|
|
|
DANGEROUS OPTIONS
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
--repair
|
|
|
|
enable the repair mode and attempt to fix problems where possible
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
There's a warning and 10 second delay when this option is run without
|
|
|
|
*--force* to give users a chance to think twice before running repair, the
|
2023-04-20 01:03:22 +00:00
|
|
|
warnings in documentation have shown to be insufficient.
|
2021-10-26 22:45:24 +00:00
|
|
|
|
|
|
|
--init-csum-tree
|
|
|
|
create a new checksum tree and recalculate checksums in all files
|
|
|
|
|
|
|
|
.. warning::
|
|
|
|
Do not blindly use this option to fix checksum mismatch problems.
|
|
|
|
|
|
|
|
--init-extent-tree
|
|
|
|
build the extent tree from scratch
|
|
|
|
|
|
|
|
.. warning::
|
|
|
|
Do not use unless you know what you're doing.
|
|
|
|
|
|
|
|
--mode <MODE>
|
|
|
|
select mode of operation regarding memory and IO
|
|
|
|
|
|
|
|
The *MODE* can be one of:
|
|
|
|
|
|
|
|
original
|
|
|
|
The metadata are read into memory and verified, thus the requirements are high
|
|
|
|
on large filesystems and can even lead to out-of-memory conditions. The
|
|
|
|
possible workaround is to export the block device over network to a machine
|
|
|
|
with enough memory.
|
|
|
|
lowmem
|
|
|
|
This mode is supposed to address the high memory consumption at the cost of
|
|
|
|
increased IO when it needs to re-read blocks. This may increase run time.
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
*lowmem* mode does not work with *--repair* yet, and is still considered
|
|
|
|
experimental.
|
|
|
|
|
|
|
|
--force
|
2023-04-20 01:03:22 +00:00
|
|
|
allow work on a mounted filesystem and skip mount checks. Note that
|
|
|
|
this should work fine on a quiescent or read-only mounted filesystem
|
|
|
|
but may crash if the device is changed externally, e.g. by the kernel
|
|
|
|
module.
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
It is possible to run with --repair but on a mounted filesystem
|
|
|
|
that will most likely lead to a corruption unless the filesystem
|
|
|
|
is in a quiescent state which may not be possible to guarantee.
|
2021-10-26 22:45:24 +00:00
|
|
|
|
|
|
|
This option also skips the delay and warning in the repair mode (see
|
|
|
|
*--repair*).
|
|
|
|
|
|
|
|
EXIT STATUS
|
|
|
|
-----------
|
|
|
|
|
|
|
|
**btrfs check** returns a zero exit status if it succeeds. Non zero is
|
|
|
|
returned in case of failure.
|
|
|
|
|
|
|
|
AVAILABILITY
|
|
|
|
------------
|
|
|
|
|
2022-10-06 15:52:25 +00:00
|
|
|
**btrfs** is part of btrfs-progs. Please refer to the documentation at
|
2023-03-16 21:38:21 +00:00
|
|
|
`https://btrfs.readthedocs.io <https://btrfs.readthedocs.io>`_.
|
2021-10-26 22:45:24 +00:00
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
--------
|
|
|
|
|
2022-08-08 07:28:56 +00:00
|
|
|
:doc:`mkfs.btrfs(8)<mkfs.btrfs>`,
|
|
|
|
:doc:`btrfs-scrub(8)<btrfs-scrub>`,
|
|
|
|
:doc:`btrfs-rescue(8)<btrfs-rescue>`
|