Bearbeiten von „BtrFS“

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
= Links =
= Links =
* [[VmHost]]
* [[VmHost]]
* Scrub-Script: http://marc.merlins.org/perso/btrfs/post_2014-03-19_Btrfs-Tips_-Btrfs-Scrub-and-Btrfs-Filesystem-Repair.html
* Position einer Datei im Image: https://blogs.oracle.com/wim/btrfs-scrub-go-fix-corruptions-with-mirror-copies-please


= Erstellen =
= Erstellen =
* Paket: btrfs-progs
* '''Achtung''': Immer Partitionsschema anlegen (fdisk...). Ohne geht auch, aber mit Einschränkungen (grub...)
* '''Achtung''': Immer Partitionsschema anlegen (fdisk...). Ohne geht auch, aber mit Einschränkungen (grub...)
<pre>mkfs.btrfs -L debian10 /dev/sdb1
<pre>mkfs.btrfs -L debian10 /dev/sdb1
btrfs filesystem label /dev/sdb1 debian10
btrfs filesystem label /dev/sdb1 debian10
# oder RAID1 für Daten (-d) und Metadaten (-m):
# oder RAID1 für Daten (-d) und Metadaten (-m):
mkfs.btrfs -m raid1 -d raid1 /dev/sdb1 /dev/sdc1 -f
mkfs.btfs -m raid1 -d raid1 /dev/sdb1 /dev/sdc1 -f
# Anzeigen:
# Anzeigen:
btrfs filesystem usage /media/work
btrfs filesystem usage /media/work
# Späteres Hinzufügen:
# Späteres Hinzufügen:
# btrfs device NEWDEVICE OLDDEVICE
btrfs device add -f /dev/sdd1 /media/work
btrfs device add -f /dev/sdd1 /media/work
# Balance notwendig!
# Balance notwendig!
Zeile 20: Zeile 16:
btrfs balance start -dconvert=raid1 -mconvert=raid1 /media/work
btrfs balance start -dconvert=raid1 -mconvert=raid1 /media/work
</pre>
</pre>
== /etc/fstab ==
<pre>
LABEL=fs.bullseye / btrfs  defaults,noatime,nodiratime,compress=zstd,autodefrag,subvol=@rootfs 0 0
LABEL=fs.bullseye /media/fs.sys btrfs defaults,noatime,nodiratime,compress=zstd,autodefrag,subvolid=5 0 0
</pre>
= Kommandos =
= Kommandos =
<pre>
<pre>
Zeile 35: Zeile 25:
btrfs subvol set-default 5 /media/work
btrfs subvol set-default 5 /media/work
btrfs subvol get-default
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
</pre>
== Info ==
<pre>
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
</pre>
* sehr selten:
<pre>
# Extend-Status für Subvol 258 anzeigen:
btrfs check --readonly -E 258 --force /dev/sda6
</pre>
</pre>


Zeile 90: Zeile 32:
btrfs subvolume list /media/work | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /media/work
btrfs subvolume list /media/work | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /media/work
btrfs quota rescan /media/work
btrfs quota rescan /media/work
btrfs quota limit <group> <size>G path
btrfs qgroup limit 0/256 32G path
# option -e: unshared limit -c: compressed limit
btrfs btrfs qgroup show -reF path
</pre>
</pre>
* qgroups sind Nummern <level>/<id>
* qgroups sind Nummern <level>/<id>
Zeile 102: Zeile 40:
* Erklärung: https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-quota
* Erklärung: https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-quota
* Scripte, die Belegungen auflisten: https://btrfs.wiki.kernel.org/index.php/Quota_support
* Scripte, die Belegungen auflisten: https://btrfs.wiki.kernel.org/index.php/Quota_support
<pre>btrfs qgroup limit 21G 0/270 /media/work
<pre>btrfs quota limit 20G /media/work/home
# Gruppe einrichten und nutzen (für 2 Subvolumes)
# Gruppe einrichten und nutzen (für 2 Subvolumes)
btrfs qgroup create 1/100 /media/work
btrfs qgroup create 1/100 /media/work
Zeile 108: Zeile 46:
btrfs qgroup assign 0/966 1/100 /media/work # subvolume b hat id 966
btrfs qgroup assign 0/966 1/100 /media/work # subvolume b hat id 966
btrfs qgroup show -reF /media/work
btrfs qgroup show -reF /media/work
</pre>
<pre># qgroup total owned
0/5 4698025984 8192
0/257 52432896 4096
0/263 4405821440 12288
0/264 4698025984 8192
</pre>
</pre>


Zeile 127: Zeile 59:
* Gesamtes FS wird gemountet
* Gesamtes FS wird gemountet
* Alle Subvolumes sind dann automatisch vorhanden. Nicht extra mounten!
* Alle Subvolumes sind dann automatisch vorhanden. Nicht extra mounten!
* Aber nur Mounten gestattet Optionen wie Komprimieren oder nodatacow
* Aber nur Mounten gestattet Optionen wie Komprimieren oder NoCopy


== Gemischtes Design ==
== Gemischtes Design ==
Zeile 154: Zeile 86:
<pre>
<pre>
btrfs subvolume snapshot -r /media/work/backup /media/snapshots/dayly/backup.mon
btrfs subvolume snapshot -r /media/work/backup /media/snapshots/dayly/backup.mon
# Löschen:
btrfs subvol delete /media/fs.sys/snapshots/@rootfs/monthly/02
</pre>
</pre>


Zeile 166: Zeile 96:
# Weitermachen
# Weitermachen
btrfs balance resume  /media/work
btrfs balance resume  /media/work
# Info
btrfs balance status /media/work
</pre>
</pre>
== Balance bei "vollem" Laufwerk" ==
<source lang=bash>
btrfs balance start -v -dusage=0 /mnt/btrfs
# wenn das durch ist:
btrfs balance start -v -dusage=10 /mnt/btrfs
</source>
== Balance mit zusätzlicher Partition ==
<source lang=bash>
#hier: die "volle" btrfs-Partition ist /dev/sdx1
mount /dev/sdx1 /media/trg
# Platz auf /dev/sdy2 dazufügen:
btrfs device add /dev/sdy2 /media/trg
btrfs balance start /media/trg
# Zusatzspeicher wieder entfernen:
btrfs device delete /dev/sdy2 /media/trg
</source>
== Balance mit Image als Zusatzspeicher ==
<source lang=bash>
#Anlegen eines Mountpoints
#mounten des "vollen" btrfs-Dateisystems
mount /dev/sdx2 /media/trg
mount /dev/sdy5 /media/tmp
#4GB-Image-Datei erstellen
dd if=/dev/zero of=externalfs/extend.img bs=1M count=4096
#Loop-Device loop10 über die Image-Datei erstellen
losetup /dev/loop10 /media/tmp/big_data.img
#Hinzufügen der Image-Datei zum "vollen" btrfs-Dateisystem
btrfs device add /dev/loop0 /media/trg
btrfs balance start /media/trg
#Image-Datei vom btrfs-Dateisystem wieder entfernen
btrfs device delete /dev/loop0 /media/trg
</source>


= Umbau / Fehlerfall =
= Umbau / Fehlerfall =
<pre>btrfs balance start -v -mconvert=single -dconvert=single /media/work --force
<pre>btrfs device delete /dev/sda /media/data
btrfs device delete /dev/sda /media/data
# Bei einer defekten Festplatte kann das Dateisystem mit folgenden Befehl gemountet werden:
# Bei einer defekten Festplatte kann das Dateisystem mit folgenden Befehl gemountet werden:
mount -o degraded,rw /dev/sda /media/work
mount -o degraded,rw /dev/sda /media/work
# folgender Befehl ersetzt eine defekte Platte:
# folgender Befehl ersetzt eine defekte Platte:
btrfs replace start 6 /dev/sdf1 /media/work
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
</pre>
</pre>


Zeile 218: Zeile 109:
<pre>btrfs device scan
<pre>btrfs device scan
btrfs device scan /dev/sda
btrfs device scan /dev/sda
</pre>
= Send/Receive =
* effiziente Möglichkeit, Subvolumes zu kopieren.
== Komplette Kopie ==
<pre>
btrfs send /home/BACKUP | btrfs receive /backup/home
</pre>
== Differenzielle Kopie ==
* Initialisierung:
<pre>btrfs subvolume snapshot -r /home /home/BACKUP
btrfs send /home/BACKUP | btrfs receive /backup/home
# Es entsteht dann ein Subvolume /backup/home/BACKUP
</pre>
* Update:
<pre>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
btrfs subvolume delete /backup/home/BACKUP
mv /backup/home/BACKUP-new /backup/home/BACKUP
</pre>
= Notfall =
* [https://btrfs.wiki.kernel.org/index.php/Problem_FAQ btrfs-wiki-FAQ]
<pre>btrfs device scan
btrfs rescue
btrfs rescue super-recover -v
btrfs  check --init-extent-tree
# sichern von Daten nach <directory>:
btrfs restore -i <device> <directory>
</pre>
= chattr und lsattr =
<pre>chattr OPTION MODE FILE
</pre>
Options:
* -R rekursiv
* -V verbose
* -f Fehler werden unterdrückt
* -v VERSION Setzt für Datei Version/Generationsnummer
* -p PROJ Setzt Projektnummer
Hat ein Verzeichnis das Attribut c (compressed), dann auch alle Unterverzeichnisse
Modes:
* a: append only (a)
* A: no atime updates (A)
* c: compressed (c)
* C: no  copy on write (C)
* d: no dump (d)
* D: synchronous directory updates (D)
* e: extent format (e)
* i: immutable (i)
* j: data journalling (j)
* P: project hierarchy (P)
* s: secure deletion (s)
* S: synchronous updates (S)
* t: no tail-merging (t)
* T: top of directory hierarchy (T)
* u: undeletable (u)
<pre>lsattr OPT FILES
</pre>
Optionen:
* -R Rekursiv
* -V Verbose
* -a auch verborgene (Beginn mit .)
* -l Lang Namen ausgeben
* -p Projektnummer ausgeben
* -v Versionsnummer ausgeben
= Konvertierung zu RAID1 =
<pre>
mount /dev/sdb1 /mnt
btrfs device add /dev/sdc1 /mnt
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
</pre>
</pre>

Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Info-Theke-Beiträge automatisch unter der „Gemeinfreiheit“ stehen (siehe Info-Theke:Urheberrechte für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)