Manjaro Difference between revisions of "Btrfs Maintenance"

Difference between revisions of "Btrfs Maintenance"

From Manjaro
(Erste Vorschläge)
(ReadRateDegradation)
Line 32: Line 32:


==== error ====
==== error ====
If btrfs encounters an unrecoverable error, such as a checksum mismatch, the filesystem is mounted read-only. (When using RAID2, such errors are auto-repaired)
If btrfs encounters an unrecoverable error, such as a checksum mismatch, the filesystem will be mounted '''read-only'''. (When using RAID2, such errors are auto-repaired)


==== clean ====
==== clean ====
Line 38: Line 38:


== Manual Maintenace ==
== Manual Maintenace ==
From time to time it may be advisable to check the health of the volume. This is done with:
From time to time it may be advisable to check the health of the volume.
{{BoxInfo|Notice| Be aware,  that with btrfs all maintenance is performed on a normally running system. The volume can be fully used. Even a shutdown during such an action is not problematic. Btrfs will continue to execute the action after the next boot until it completes.}}


=== usage ===
=== usage ===
Line 44: Line 45:


==== check unallocated space ====
==== check unallocated space ====


{{RootCmd|command=btrfs filesystem usage -h /}}
{{RootCmd|command=btrfs filesystem usage -h /}}
Line 63: Line 63:
If you have some space "free" on your volume, but the unallocated space is below 10% (or close to 10%), you can help btrfs to rebalance some chunks.
If you have some space "free" on your volume, but the unallocated space is below 10% (or close to 10%), you can help btrfs to rebalance some chunks.


{{RootCmd|command=btrfs balance start -musage=50 -dusage=50}}
{{RootCmd|command=btrfs balance start -musage=50 -dusage=50 /}}
Btrfs looks for chunks that contain more than 50% free space. It will take 2 of them and then move everything into a new chunk. After that, one chunk is released. This continues until each chunk is at least 50% full.
Btrfs looks for chunks that contain more than 50% free space. It will take 2 of them and then move everything into a new chunk. After that, one chunk is released. This continues until each chunk is at least 50% full.


Line 69: Line 69:


If you have less than 20% unallocated space, please do the following:
If you have less than 20% unallocated space, please do the following:
{{RootCmd|command=btrfs balance start -musage=75 -dusage=75}}  
{{RootCmd|command=btrfs balance start -musage=75 -dusage=75 /}}  
Btrfs looks for chunks that are less than 75% full.
Btrfs looks for chunks that are less than 75% full.
It will take 4 of them and then move everything into 3 new chunks. After that, one chunk can be released. This continues until each chunk is at least 75% full.
It will take 4 of them and then move everything into 3 new chunks. After that, one chunk can be released. This continues until each chunk is at least 75% full.


If you still have less than 20% unallocated space, please do the following:
If you still have less than 20% unallocated space, please do the following:
{{RootCmd|command=btrfs balance start -musage=90 -dusage=90}}  
{{RootCmd|command=btrfs balance start -musage=90 -dusage=90 /}}  




Line 84: Line 84:
Tip:watch -d btrfs scrub status /
Tip:watch -d btrfs scrub status /


== special cases ==
There seem to be some cases where additional maintenance is needed.
==== ssd ====
===== Read Rate Degradation =====
This is not a problem of all ssd's in general, but only of some rare cases. Replacing the firmware solves the problem.
A possibility to test the read-speed with btrfs is to read all data (scrub). If your ssd has this RRD-problem, a balance will help because it does rewrite all data to a new place. This can be done while the system is in use !
{{RootCmd|command=btrfs balance start --full-balance /}}
This will take a long time. You can shutdown your pc whenever you want. Dont't be surprised. the balance will restart after boot until it is finished !
==== rotational disks ====
On rotational disks fragmentation may become a problem in some rare use cases. Then you can defragment your btrfs.
===== de-fragmentation (not recommended) =====
This is NOT the same as defragmentation in older windows filesystems. Btrfs does NOT need defragmentation as normal maintenance. Do this only, if you can measure a huge loss of read-performance because a specific file/database is fragmented!
* Only defragment these specific files.
You have been warned !
<!-- If you use code, it should be like below example(a space before that) -->
<!-- If you use code, it should be like below example(a space before that) -->


Line 89: Line 106:


<!-- Don't forget to look more templates: https://wiki.manjaro.org/index.php/Help:Template -->
<!-- Don't forget to look more templates: https://wiki.manjaro.org/index.php/Help:Template -->


=See Also=
=See Also=

Revision as of 18:05, 28 January 2023


Btrfs Maintenance

Btrfs needs no maintenance

This even may be true, when:

  • You always keep 10% of your volume unallocated
 I do not say "free", because free does mean nothing with btrfs. The value you have to watch most is "unallocated" !

Every filesystem needs some maintenance

Some filesystems do an automatic chkfs at every XX. mount Others need the user to do a chkfs manually. On most you have to watch not to fill them to 100%. Some reserve 5% for root. Some filesystems need to be defragmented. Others do not.

Every filesystem has its own needs and tools !

Automatic maintenance

Btrfs does some maintenance automatically.

Is the Volume in a clean state

At mount btrfs tests wehter the volume is in a clean state.

power down

Most file systems are not prepared for a sudden loss of power. If the computer suddenly loses power, transactions may not be written or only partially written to the volume. File systems that use journaling can often recover after a power failure.

Btrfs attempts to clean the volume by removing the last (uncompleted) action. This can result in losing the last changes you made before turning off. But you get a clean file system that doesn't need to be repaired.

error

If btrfs encounters an unrecoverable error, such as a checksum mismatch, the filesystem will be mounted read-only. (When using RAID2, such errors are auto-repaired)

clean

btrfs will mount the subvolume read-write.

Manual Maintenace

From time to time it may be advisable to check the health of the volume.

Notice
Be aware, that with btrfs all maintenance is performed on a normally running system. The volume can be fully used. Even a shutdown during such an action is not problematic. Btrfs will continue to execute the action after the next boot until it completes.

usage

Look if everything is OK with the unallocated space on your volume.

check unallocated space

root # btrfs filesystem usage -h / COPY TO CLIPBOARD


Pay special attention to the unallocated space !

The commonly used term "free" is meaningless to btrfs users. Even if you have 50% of your volume "free", you may run out of storage space. **You must pay attention to the term unallocated**.

Try to keep at least 10% of your volume unallocated. If this is below 10%:

  • expand your volume to double size (see: Btrfs)
  • delete some unused data
  • delete some old snapshots
  • balance (Btrfs)

clean up unused snapshots

From time to time it is necessary to check if you have snapshots that you do not need any more, but that hold valuable space on your volume.

balance your free space

If you have some space "free" on your volume, but the unallocated space is below 10% (or close to 10%), you can help btrfs to rebalance some chunks.

root # btrfs balance start -musage=50 -dusage=50 / COPY TO CLIPBOARD


Btrfs looks for chunks that contain more than 50% free space. It will take 2 of them and then move everything into a new chunk. After that, one chunk is released. This continues until each chunk is at least 50% full.

This will give you some unallocated(free) chunks that help btrfs **not** to get out of space.

If you have less than 20% unallocated space, please do the following:

root # btrfs balance start -musage=75 -dusage=75 / COPY TO CLIPBOARD


Btrfs looks for chunks that are less than 75% full. It will take 4 of them and then move everything into 3 new chunks. After that, one chunk can be released. This continues until each chunk is at least 75% full.

If you still have less than 20% unallocated space, please do the following:

root # btrfs balance start -musage=90 -dusage=90 / COPY TO CLIPBOARD



scrub

Check if everything is ok with the checksums and the readability of your data. **Only do this when in doubt**. This may take a long time as btrfs has to read ALL the data. Btrfs only scans the portion of your volume that actually contains data.

root # btrfs scrub start -Bd / COPY TO CLIPBOARD


Tip:watch -d btrfs scrub status /

special cases

There seem to be some cases where additional maintenance is needed.

ssd

Read Rate Degradation

This is not a problem of all ssd's in general, but only of some rare cases. Replacing the firmware solves the problem. A possibility to test the read-speed with btrfs is to read all data (scrub). If your ssd has this RRD-problem, a balance will help because it does rewrite all data to a new place. This can be done while the system is in use !

root # btrfs balance start --full-balance / COPY TO CLIPBOARD


This will take a long time. You can shutdown your pc whenever you want. Dont't be surprised. the balance will restart after boot until it is finished !

rotational disks

On rotational disks fragmentation may become a problem in some rare use cases. Then you can defragment your btrfs.

de-fragmentation (not recommended)

This is NOT the same as defragmentation in older windows filesystems. Btrfs does NOT need defragmentation as normal maintenance. Do this only, if you can measure a huge loss of read-performance because a specific file/database is fragmented!

  • Only defragment these specific files.

You have been warned !

Example codes should be here.


See Also

Btrfs Learn basics about btrfs

Cookies help us deliver our services. By using our services, you agree to our use of cookies.