BTRFS

BTRFS How To

unter SUSE. Default ab openSUSE 13.2 und SLES12

####################################
Partition formatieren

"mkfs.btrfs -f -L "SAP" /dev/sdb1" = BTRFS Partition erstellen. vorher mit fdisk oder gpart anlegen.
"mount /dev/sdb1 /usr/sap"

####################################
Snahpsot erstellen

1. Snapshot erstellen
"btrfs subvolume snapshot /usr/sap/ /usr/sap/subv_sap/" oder ""btrfs subvolume snapshot /usr/sap/ /snapshots/snap_1"
"btrfs subvolume list -s /usr/sap/"

Delete Snapshot/subvolume
"btrfs subvolume delete /usr/sap/subv_sap/"

Größer des Snapshot feststellen
btrfs quota enable /usr/sap/
btrfs qgroup show /usr/sap/   #Größe in Bytes

####################################
snapshot zurückfahren

#on the fly am lebnen Herzen snapshot zurückfahren
"mv subvolume_test/sub_test/ subvolume_test/sub_test_BAD"
"mv schnapsschuss/sub_test/ subvolume_test/sub_test"
Damit wird gleichzeit das Snapshot gelöscht.
Danach "btrfs subvolume delete subvolume_test/sub_test_BAD/"

####################################
subvolumes

"btrfs subvolume create /usr/sap/subv_sap"
"btrfs subvolume list /usr/sap/"
"btrfs subvolume list /"

####################################
Software Raid erstellen

####################################
#BTRFS Partition clonen
Mittels "dd" ein BTRFS Partition klonen.
Geht nur bedingt da es massive Probleme mit dem Superblock gibt.

####################################
Quota Check

####################################
Samba Volume Shadow Copy funktionaltität mit BTRFS

####################################
btrfs device add /dev/loop0

####################################
File Balancing
"filefrag -v * | sort -nr -k 2 | head -10" = Zeigt die 10 meist Defragmentiertesten Files an
"nice -n 15 btrfs filesystem balance /usr/sap" = Filesystem Chunks ausbalancieren, bzw. Platz frei schaufeln. Am besten einmal am Tag per Cron Job
"btrfs balance status /usr/sap/" = Status der Balncierung abfragen, geht nur während des laufens.

Vorsicht bei balancing. Leap 42.1 unter XEN stürtzt ab.
Bei suse "rm -frv /etc/cron.weekly/btrfs-balance.sh" . zum wiederherstellen "ln -s /usr/share/btrfsmaintenance/btrfs-balance.sh /etc/cron.weekly/btrfs-balance.sh"
Falls balancing schon läuft, abbrechen: "btrfs balance cancel /"

#################################
Defragmentieren
"lynx https://wiki.ubuntuusers.de/Befehle_Btrfs-Dateisystem"
Info: Dateisysteme (COW) haben viele Vorteile, aber auch Nachteile - z.B. Defragmentierung. Btrfs legt die Daten beim ersten Schreiben einer Datei sequentiell ab, aber COW erfordert, das geänderte Daten nicht einfach überschrieben werden, sondern in freie Speicherbereiche abgelegt werden. Damit sind dann die Dateien nicht mehr zusammenhängend - also fragmentiert
"btrfs filesystem defragment /usr/sap" Am besten einmal am Tag per Cron Job

####################################
#Resize Filesystem
"btrfs filesystem resize +40g /db2"					auch online möglich
"btrfs filesystem resize max /db2"					maximalen Speicherplatz erweitern
####################################
#Kommands
"btrfs filesystem show" = 
"btrfs device scan /dev/sdb1"
"btrfs filesystem df /usr/sap/" = Platz Information
"btrfsck --repair /dev/xvda1" = BTRFS FS Check auf Block Device
"btrfs filesystem usage /usr/sap/" = Filesystem Speicherplatz
"btrfs fi df /dev/sda1"

"mount -t btrfs -o subvol=schnapsschuss/sub_test /dev/db2_vg/db2_lv /tmp/subvol_temp/"
"mount -t btrfs -o subvolid=601 /dev/db2_vg/db2_lv /tmp/subvol_temp/"
"filefrag -v * | sort -nr -k 2 | head -10" = Zeigt die 10 meist Defragmentiertesten Files an

############################################################################################################
Alle Änderungen seit dem Erstellen des Snapshot anzeigen bzw. größe zusammenrechen

#Subvolume Erstelldatum herausfinden
"btrfs subvolume list -s /usr/sap/"
#Temp Datei Erstelldatum auf das Erstelldatum des Snapshot setzten
"touch -t 1509150749 /tmp/test.file"
#Alle Dateien suchen die nach dem Erstelldatum der Datei erzeugt wurden
"find . -cnewer /tmp/test.file"
"find . -cnewer /tmp/test.file -exec du -csh '{}' + | grep  total"
############################################################################################################
Infos:
Mit "df -i" werden keine Inodes angezeigt.

###########################################################################################################################################################################
Snapper Snapshot Management
Snapper http://snapper.io/
How To "lynx https://doc.opensuse.org/documentation/html/openSUSE_122/opensuse-reference/cha.snapper.html"

Snapshots Management mit "snapper"
Konfig erstellen
"snapper create-config /usr/sap/" oder "snapper -c htdocs create-config /usr/local/apache2/htdocs"
"snapper list-configs"
"snapper list" ->
	Config | Subvolume
	-------+----------
	root   | /usr/sap 

Snapshot erstellen
"snapper -c root create --description `date '+%Y-%m-%d-%H_%M_%S'` "
"snapper list"

Snapshot zurfahren von Version 2 auf Snapshot 1
"snapper -v undochange 2..1"

"snapper diff 1..2" = Unterschied zwischen Snapshot 1 und 2. File Ebene
"snapper status 1..2" = Zeigt die Art der Änderungen an. ähnlich rsync.
"snapper list -t pre-post"

"snapper get-config" = Config Infos
"snapper -c root set-config "TIMELINE_CREATE=no" " = Timeline deaktivieren. "=yes" aktivieren .
 
Snapshot löschen
"snapper -v delete 60" = Snapshot Nr 60 löschen
"snapper delete 1-100000" = Alle Snapshots löschen ;-)

"yast2 snapper &"
"/usr/sbin/snapperd" läuft als Deamon

Snapper Konfig hart löschen
"rm -frv /etc/snapper/configs/root"

##########
Snapper Troubleshooting
Problem:
        "Creating config failed (config already exists).
Lösung:
        "rm -frv /etc/sysconfig/snapper"
        "touch /etc/sysconfig/snapper"
Problem:
	btrfs parent transid verify failed -> "parent transid verify failed on 31302336512 wanted 62455 found 62456"
	ctree.c:123 assertation failed
	Bad Superblock
Lösung:
	
########################################################################################################################################################################################################################
#BTRFS Shell Script Snapshot size
###########################################################################################################################################################################
#!/bin/bash

[[ ! -d $1 ]] && { echo Please pass mountpoint as first argument >&2 ;
exit 1 ; }

while read x i x g x x l x p
do
    volName[i]=$p
done < <(btrfs subvolume list $1)

while read g r e
do
    [[ -z $name ]] && echo -e "subvol\tqgroup\ttotal\tunshared"
    group=${g##*/}
    [[ ! -z ${volName[group]} ]] && name=${volName[group]} || name='(unknown)'
    echo $name $g `numfmt --to=iec $r` `numfmt --to=iec $e`
done < <(btrfs qgroup show $1 | tail -n+3) | column -t

########################################################################################################################################################################################################################
###########################################################################################################################################################################

Post Revisions:

Tags:  ,