Links
Erstellen
- Achtung: Immer Partitionsschema anlegen (fdisk...). Ohne geht auch, aber mit Einschränkungen (grub...)
mkfs.btrfs -L debian10 /dev/sdb1
btrfs filesystem label /dev/sdb1 debian10
# oder RAID1 für Daten (-d) und Metadaten (-m):
mkfs.btfs -m raid1 -d raid1 /dev/sdb1 /dev/sdc1 -f
# Anzeigen:
btrfs filesystem usage /media/work
# Späteres Hinzufügen:
btrfs device add -f /dev/sdd1 /media/work
# Balance notwendig!
# Nachträglich zu RAID wandeln:
btrfs balance start -dconvert=raid1 -mconvert=raid1 /media/work
Kommandos
btrfs subvol create /media/work/root
btrfs subvol list /media/work
# z.B. 257
btrfs subvol set-default 257 /media/work
# kein default mehr: 5 ist das Rootsystem
btrfs subvol set-default 5 /media/work
btrfs subvol get-default
# Readonly für Snapshot entfernen:
btrfs property set -ts /media/fs.system/snapshot ro false
btrfs property set /usr compression lzo
btrfs property get /usr compression
btrfs scrub start /
btrfs scrub status /
# Für nodatacow:
chattr -RV +C /var/lib/mysql/images
lsattr -R /var/lib/mysql/images
# Kompression anzeigen:
compsize /media/work
Info
btrfs device scan [/dev/sda6]
btrfs device usage /media/work
# Fehlerstatistik:
btrfs device stats /media/work
btrfs filesystem df
#Data, single: total=20.00GiB, used=11.97GiB
#System, single: total=32.00MiB, used=16.00KiB
#Metadata, single: total=1.50GiB, used=568.47MiB
#GlobalReserve, single: total=38.27MiB, used=0.00B
btrfs filesystem du -s /media/work/backup
# Total Exclusive Set shared Filename
# 18.80GiB 7.82GiB 4.15GiB /media/fs.system
btrfs filesystem show /media/work
# Total devices 1 FS bytes used 12.53GiB
# devid 1 size 32.00GiB used 21.53GiB path /dev/sda6
btrfs subvol list /media/
# nur Snapshots:
btrfs subvol list -s /media/work
btrfs check --readonly -Q -E -p --force /dev/sda6
# Fehlerstatistik:
btrfs device stats /media/work
# Extend-Status für Subvol 258 anzeigen:
btrfs check --readonly -E 258 --force /dev/sda6
Quota
btrfs quota enable /media/work
btrfs subvolume list /media/work | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /media/work
btrfs quota rescan /media/work
- qgroups sind Nummern <level>/<id>
- Level 0 ist voreingestellt, wenn Subvolume erzeugt wird
- <id> ist für Level 0 die Subvolume-ID, z.B. 0/5 ist die qgroup des Toplevel-Volumes
- <id> für Level > 0 ist frei wählbar
btrfs qgroup limit 21G 0/270 /media/work
# Gruppe einrichten und nutzen (für 2 Subvolumes)
btrfs qgroup create 1/100 /media/work
btrfs qgroup assign 0/965 1/100 /media/work # subvolume a hat id 965
btrfs qgroup assign 0/966 1/100 /media/work # subvolume b hat id 966
btrfs qgroup show -reF /media/work
# qgroup total owned
0/5 4698025984 8192
0/257 52432896 4096
0/263 4405821440 12288
0/264 4698025984 8192
Einhängen
mount /dev/sdb /media/work
UUID=xxx /media/work btrfs defaults,subvol=@,compress,autodefrag 0 1
Subvolumes
Verschachteltes Design
- Gesamtes FS wird gemountet
- Alle Subvolumes sind dann automatisch vorhanden. Nicht extra mounten!
- Aber nur Mounten gestattet Optionen wie Komprimieren oder nodatacow
Gemischtes Design
- Beispiel: ein Subvolume ist als / gemounted, das gesamte FS wird in /media/fs gemountet
- Bei Snapshots sind verschachtelte Subvolumes nicht enthalten (keine rekursiven Snapshots)
Flaches Design
LABEL=the-btrfs-fs-device / btrfs subvol=/root,defaults,noatime 0 0
LABEL=the-btrfs-fs-device /home btrfs subvol=/home,defaults,noatime 0 0
btrfs subvolume create /media/work/root
btrfs subvolume create /media/work/home
btrfs subvolume list /media/work
btrfs subvolume delete /media/work/vm-store
Snapshots
- Wenn ein (schreibbarer) Schnappschuss erstellt wurde, gibt es keinen Unterschied zwischen Orginal und Schnappschuss.
- Bei Snapshots sind verschachtelte Subvolumes nicht enthalten (keine rekursiven Snapshots)
- Zurücksetzen (Rollback):
- Orginal unmounten
- mv zum Verschieben des alten Subvolumes an einen anderen Platz benutzen
- mv zum Verschieben des Schnappschusses zum Orginal benutzen
- Neu mounten
btrfs subvolume snapshot -r /media/work/backup /media/snapshots/dayly/backup.mon
Balance
btrfs balance /media/work
# Verlauf testen
btrfs balance status /media/work
# Stoppen
btrfs balance pause /media/work
# Weitermachen
btrfs balance resume /media/work
# Info
btrfs balance status /media/work
Umbau / Fehlerfall
btrfs balance start -v -mconvert=single -dconvert=single /media/work --force
btrfs device delete /dev/sda /media/data
# Bei einer defekten Festplatte kann das Dateisystem mit folgenden Befehl gemountet werden:
mount -o degraded,rw /dev/sda /media/work
# folgender Befehl ersetzt eine defekte Platte:
btrfs replace start 6 /dev/sdf1 /media/work
# mount nicht möglich "inactive unit":
btrfs rescue zero-log /dev/sdc5
# Reaktivierung raid1:
btrfs balance start -v -mconvert=raid1 -dconvert=raid1 /media/work
Info
btrfs device scan
btrfs device scan /dev/sda
Send/Receive
- effiziente Möglichkeit, Subvolumes zu kopieren.
Komplette Kopie
btrfs send /home/BACKUP | btrfs receive /backup/home
Differenzielle Kopie
btrfs subvolume snapshot -r /home /home/BACKUP
btrfs send /home/BACKUP | btrfs receive /backup/home
btrfs subvolume snapshot -r /home /home/BACKUP-new
sync
btrfs send -p /home/BACKUP /home/BACKUP-new | btrfs receive /backup/home
btrfs subvolume delete /home/BACKUP
mv /home/BACKUP-new /home/BACKUP