User Tools

Site Tools


software:linux:btrfs

Scripts for btrfs maintenance tasks like periodic scrub

From: https://github.com/kdave/btrfsmaintenance

Great Documentation 

Scripts for btrfs maintenance tasks like periodic scrub, balance, trim or defrag on selected 
mountpoints or directories.

btrfs check

From: https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-check

btrfs check /dev/sb2
btrfs check --repair \dev\sb2

btrfs scrub

From: http://marc.merlins.org/perso/btrfs/post_2014-03-19_Btrfs-Tips_-Btrfs-Scrub-and-Btrfs-Filesystem-Repair.html

From: https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-scrub

btrfs scrub start -Bd $mountpoint

btrfs scrub is used to scrub a btrfs filesystem, which will read all data and metadata blocks from 
all devices and verify checksums. Automatically repair corrupted blocks if there’s a correct copy 
available.

start [-BdqrRf] [-c <ioprio_class> -n <ioprio_classdata>] <path>|<device>
Start a scrub on all devices of the filesystem identified by path or on a single device. If a scrub is already running, the new one fails.
Without options, scrub is started as a background process.
The default IO priority of scrub is the idle class. The priority can be configured similar to the ionice(1) syntax using -c and -n options.
Options
-B
do not background and print scrub statistics when finished
-d
print separate statistics for each device of the filesystem (-B only) at the end
-q
be quiet, omit error messages and statistics
-r
run in read-only mode, do not attempt to correct anything, can be run on a read-only filesystem
-R
print raw statistics per-device instead of a summary
-c <ioprio_class>
set IO priority class (see ionice(1) manpage)
-n <ioprio_classdata>
set IO priority classdata (see ionice(1) manpage)
-f
force starting new scrub even if a scrub is already running, this can useful when scrub status 
file is damaged and reports a running scrub although it is not, but should not normally be necessary
status [-d] <path>|<device>

resize partition

From: http://unix.stackexchange.com/questions/239765/how-to-fix-btrfs-superblock-error-after-resize-shrink-btrfs-couldnt-get-super

Fix

First, a live system was booted to reduce the risk of damage while the system is running on a 
filesystem that's bigger than the partition it's on.

Mount the filesystem:

mount /dev/sda2 /mnt/tmp
First shrink the second device to 50 GB - 1 GB = 49 GB to avoid rounding errors:

btrfs filesystem resize 2:49g /mnt/tmp
Resize it to fill the 50 GB partition:

btrfs filesystem resize 2:max /mnt/tmp
Check btrfs filesystem show, both devices should have the right size:

devid    1 size 50.00GiB used 43.03GiB path /dev/sda2
devid    2 size 50.00GiB used 43.03GiB path /dev/sdb2
Unmount, reboot, the error should be gone.

BTRFS restoring a corrupt filesystem from another “tree location”

From: http://ram.kossboss.com/btrfs-restoring-a-corrupt-filesystem-from-another-tree-location/

Here is how you restore a really corrupt btrfs filesystem using btrfs restore.

PRE STEPS (realizing the filesystem is really corrupt by trying simple mounts and 
restores):

* assume your volume name is /dev/md127 and that you have an available /root folder 
to dump temp data to and that you will be dumping your restore to /USB
* you can change any of those variable if thats not the case

Here we assume the filesystem is so corrupt that its not mounting regulary:

# mount /dev/md127 /data
mount: wrong fs type, bad option, bad superblock on /dev/md127,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

btrfs file system

From: https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices

    1 Multiple devices
        1.1 Current status
        1.2 Raid 5 and Raid6
        1.3 Filesystem creation
        1.4 Device scanning
        1.5 Adding new devices
            1.5.1 Conversion
        1.6 Removing devices
        1.7 Replacing failed devices
        1.8 Registration in /etc/fstab

From: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/btrfs-integrated_volume_management.html

Same info as above

btrfsck

From: https://btrfs.wiki.kernel.org/index.php/Btrfsck

 Before trying fsck

If you have a broken filesystem, you should probably look at the recovery or repair tools or you can read Marc MERLIN's page that explains the different ways to check and fix a btrfs filesystem.

In a nutshell, you should look at:

    btrfs scrub to detect issues on live filesystems
    look at btrfs detected errors in syslog (look at Marc's blog above on how to use sec.pl to do this)
    mount -o ro,recovery to mount a filesystem with issues
    btrfs-zero-log might help in specific cases. Go read Btrfs-zero-log
    btrfs restore will help you copy data off a broken btrfs filesystem. See its page: Restore
    btrfs check --repair, aka btrfsck is your last option if the ones above have not worked. 
software/linux/btrfs.txt · Last modified: 2016/11/17 03:26 by superwizard