meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
linux:fs:btrfs:maintenance [2020/07/07 12:10] niziaklinux:fs:btrfs:maintenance [2025/01/03 07:52] (current) niziak
Line 1: Line 1:
 ====== BTRFS Maintenance scripts ====== ====== BTRFS Maintenance scripts ======
  
 +===== btrfsmaintenance =====
  
-<file bash /usr/local/bin/btrfQuota.sh>+<code bash> 
 +apt install btrfsmaintenance 
 +</code> 
 + 
 +<file sh /etc/default/btrfsmaintenance> 
 +BTRFS_TRIM_PERIOD="weekly" 
 +</file> 
 + 
 +<code bash> 
 +systemctl restart btrfsmaintenance-refresh 
 + 
 +#systemctl enable btrfs-scrub.timer btrfs-trim.timer 
 +#systemctl start btrfs-trim.service 
 +#systemctl start btrfs-scrub.service 
 +</code> 
 +===== Defragment ===== 
 +From [[https://helmundwalter.de/blog/btrfs-finding-and-fixing-highly-fragmented-files/|BTRFS fragmentation can hurt the performance of your System]] 
 + 
 +Find the most fragmented files on your System: 
 + 
 +<code bash> 
 +find / -xdev -type f| xargs filefrag 2>/dev/null | sed 's/^\(.*\): \([0-9]\+\) extent.*/\2 \1/' | awk -F ' ' '$1 > 500' | sort -n -r | head -30 
 +</code> 
 + 
 +You should review this list. If there is something with 10000+ extends, it is a candidate to be flagged as nodatacow. In my case, I have discovered that the fail2ban sqlite database was using 170k extends which is a lot! 
 + 
 +<code bash> 
 +find / -xdev -type f| xargs filefrag 2>/dev/null | sed 's/^\(.*\): \([0-9]\+\) extent.*/\2 \1/' | awk -F ' ' '$1 > 500' | cut -f ' ' -f2 2>/dev/null | xargs -r btrfs -v fi defrag -f -czstd 
 +</code> 
 + 
 + 
 +===== Headline ===== 
 + 
 +<file bash /usr/local/bin/btrfsQuota.sh>
 #!/bin/bash #!/bin/bash
 [[ ! -d $1 ]] && { echo Please pass mountpoint as first argument >&2 ; [[ ! -d $1 ]] && { echo Please pass mountpoint as first argument >&2 ;
Line 26: Line 60:
 To solve ''After deleting a subvolume, you must manually delete the associated qgroup.'' mentioned here: [[https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues]] To solve ''After deleting a subvolume, you must manually delete the associated qgroup.'' mentioned here: [[https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues]]
  
-<file bash /usr/local/bin/btrfQGroupClean.sh>+<file bash /usr/local/bin/btrfsQGroupClean.sh>
 #!/bin/bash #!/bin/bash
  
Line 47: Line 81:
  
 <file cron crontab> <file cron crontab>
-@daily /usr/local/bin/btrfQGroupClean.sh+@daily /usr/local/bin/btrfsQGroupClean.sh
 </file> </file>