[[Vorlage(Getestet, bionic)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis()]] [[Bild(btrfs_logo.png, align=left)]] In diesem Artikel wurde alles Wissenswerte gesammelt, was den Autoren während der Erstellung und Revision der Artikelserie zum Btrfs aufgefallen war und beachtet werden sollte. Diese sind nicht direkt als Anweisung zu verstehen. Des Weiteren werden in diesem Artikel die von den Benutzern erkannten Probleme und Erkenntnisse zusammengefasst, sofern der Sachverhalt nicht in andere Artikel passt bzw. nicht entsprechende Korrekturen eingebracht werden konnten. =Hinweise und Erkenntnisse= Nachfolgend werden einige Hinweise der Autoren gegeben, die diese während der Erstellung des Artikels und in der Testphase danach gesammelt haben. ==Platzverbrauch== Unter Btrfs kann es passieren, dass für neue Daten kein Speicherblock mehr angelegt werden kann, obwohl die vorhanden Daten deutlich kleiner als der Plattenplatz sind. Mit dem Standard-df-Befehl ist das leider nicht sichtbar. Beispiel: {{{#!vorlage Befehl sudo btrfs filesystem df / }}} {{{ Data, single: total=37.00GiB, used=29.00GiB System, single: total=32.00MiB, used=16.00KiB Metadata, single: total=1.50GiB, used=795.77MiB GlobalReserve, single: total=512.00MiB, used=0.00B }}} Hier sind die Daten nur 29 GiB groß, aber auf der Platte sind 37 GiB belegt. Das kommt daher, dass die belegten Blöcke alle nur teileweise gefüllt sind. Um das zu beheben, benutzt man den balance-Befehl: {{{#!vorlage Befehl sudo btrfs balance start -dusage=50 / }}} Hierdurch werden alle Blöcke neu geschrieben, die weniger als 50% belegt sind. Die Zahl kann kontinuierlich gesteigert werden um den Platzverbrauch zu senken, 100% sind aber nicht zu empfehlen, weil dies nur dazu fuehrt, dass gleich danach wieder neue Blöcke mit geringer Nutzung angelegt werden müssen. ==Bootloader== Es ist zwar uneingeschränkt möglich, von einem Btrfs-Dateisystem zu booten, jedoch gibt es Probleme mit [:GRUB_2:]-Funktionen, die ein Schreiben auf den Datenträger erfordern. Siehe dazu u.a. die Hinweise unter * [:GRUB_2/Skripte#LVM-und-RAID:Schreiben auf GRUB_2] bei LVM, RAID und Btrfs * nach einer Btrfs-Installation Des Weiteren kann [:GRUB_2:] die '''…/grub.cfg''' beim Booten nicht auslesen, wenn bei der Mountoption `compress` für die Komprimierung anstelle der Standardeinstellung '''zlib''' eine Komprimierung mit '''lzo''' verwendet wird. ==RAID-Verbund== Die zur Zeit vom Btrfs-Dateisystem unterstützten Optionen für * die redundanten RAID-Level 1, 5, 6, 10, single oder dup und * das nicht-redundante RAID-Level 0 garantieren bei Ausfällen noch keinen ununterbrochenen Betrieb, wie es ein redundantes [:Software-RAID:] auf zwei oder mehr physikalisch vorhandenen Festplatten bietet. Bei einem Ausfall einer Festplatte bzw. Partition läuft das System möglicherweise nicht mehr weiter. Dennoch sind diese RAID-Level in Bezug auf die Daten und Metadaten sehr hilfreich für die Wiederherstellung nach einem Crash. Sie erlauben es, sofern wirklich zwei oder mehr physikalische Datenträger eingesetzt wurden, einen defekten Datenträger eingeschränkt (degraded) zu starten, zu mounten sowie ohne Datenverlust zu ersetzen. Die Installation auf einem [:Software-RAID:] (zwei oder mehr physikalische Festplatten) mit einer Btrfs-Dateisystem Formatierung zu versehen ist möglich und unterstützt die Datensicherheit in weiteren Ebenen. ==Prozessorbelastung== Einige [:Befehle_Btrfs-Dateisystem:Btrfs-Befehle] beanspruchen das System bis an die Grenzen, so dass ein vernünftiges paralleles Weiterarbeiten zwar (eingeschränkt) möglich ist, ohne dass es zu Konflikten mit den Daten kommt, jedoch kann es stören. Hier hilft der Einsatz des Zusatzbefehls [:Shell/nice:nice] bzw. [:cpulimit:]. * Ein Beispiel mit `nice`, das dem Btrfs-Befehl eine niedrigere Priorität gibt [1][2]: {{{#!vorlage Befehl sudo nice -n 15 btrfs filesystem balance / & }}} * Alternativ mit `cpulimit`, dass die Prozessorauslastung durch den Befehl beschränkt (hier: auf 20 %): {{{#!vorlage Befehl sudo btrfs filesystem balance / & sudo cpulimit -p $! -l 20 & }}} Mit dem `&`-Zeichen am Ende der Befehlszeile werden die Befehle als [:Shell/Prozesssteuerung#Prozess-im-Hintergrund-starten:Hintergrundprozesse] gestartet. ==Geschwindigkeiten== === Starten/Bootvorgang/lfd. Betrieb === Hier wurden keine fühlbaren Unterschiede festgestellt, reale Test fielen aber mal so oder so aus. === Einspielen von Updates === Hier muss man feststellen, dass ein Update/Upgrade bei gleichem Paketumfang auf einem Btrfs-Dateisystem erheblich mehr Zeit in Anspruch genommen hat. Selbst sogenannte Tricks und Insider-Maßnahmen helfen nicht darüber hinweg. Als hilfreich hat sich ein Eintrag in der '''[:fstab:/etc/fstab]''' erwiesen: {{{ tmpfs /var/cache/apt/archives tmpfs size=15%,defaults 0 0 }}} Dies ist natürlich stark davon abhängig, wieviel Arbeitsspeicher man zur Verfügung hat. Siehe auch [:RAM-Disk_erstellen#Methode-1-Mit-tmpfs-Dateisystem:]. === Festplattenprüfung === Eine Festplattenprüfung endet entweder mit der Meldung, dass das Dateisystem in Ordnung ist oder Fehler enthält. Eine Fehlerkorrektur findet grundsätzlich nur mit dem manuell installierten, aktuellen Paket '''btrfs-tools''' bzw. '''btrfs-progs''' (ab Ubuntu 19.10) statt! Siehe auch [#Empfohlene-Massnahmen Empfohlene Maßnahmen] am Ende des Artikels. Es wird deshalb empfohlen, eine obligatorische Überprüfung beim Hochfahren in der '''/etc/fstab''' abzuwählen und diese Überprüfung regelmäßig im Terminal manuell auszuführen. Insbesondere kann man eine Mehrfachprüfung vermeiden, indem man auf einer Partition bei gemeinsam abgelegten Unterlaufwerken (Subvolumes - '''@''' und '''@home''' und ggf. weitere) zumindest das zweite (und auch weitere) Unterlaufwerk abwählt. ==Backup und Replay== Dieses ist ein besonders positiv zu bewertender Punkt für das Btrfs-Dateisystem - vorausgesetzt, es werden bestimmte Grundregeln eingehalten und beachtet. Durch den regelmäßigen Einsatz von sogenannten Schnappschüssen kann man jederzeit auf einen Zustand zum Zeitpunkt der Erstellung des Schnappschusses zurücksetzen, falls man mal eine falsche Konfiguration gewählt hatte oder das System durch überflüssige Pakete nicht mehr optimal läuft. Nach der Prüfung, ob eingespielte Updates auch lauffähig sind, kann man dann einen vorhergehenden Schnappschuss löschen und durch einen neu erstellten ersetzen. Dafür kann man das folgende Skript als Anregung nehmen und seinen Bedürfnissen angepasst, z.B. als '''cron-snapshot''' lauffähig nach (alternativ) * '''/etc/cron.daily''' * '''/etc/cron.weekly''' ablegen - dieses Skript übernimmt dann im aktiven Rechner periodisch diese Aufgabe: {{{#!code bash #!/bin/sh -e snap_root () { [ -d /mnt/r$datum ] && return [ -d /mnt/r* ] && btrfs sub del /mnt/r* >/dev/null btrfs sub snap /mnt/@ /mnt/r$datum >/dev/null echo "snapshot r$datum angelegt" >> /home/.snapshot.log } snap_home () { [ -d /mnt/h$datum ] && return [ -d /mnt/h* ] && btrfs sub del /mnt/h* >/dev/null btrfs sub snap /mnt/@home /mnt/h$datum >/dev/null echo "snapshot h$datum angelegt" >> /home/.snapshot.log } file_system=btrfs root_device=$(sed -n "/\/ $file_system /s|^\(.*\) / $file_system .*|\1|p" /proc/mounts) root_uuid=$(blkid -t TYPE=$file_system -o value -s UUID "$root_device") >/dev/null [ "x$root_uuid" = "x" ] && exit # kein passendes Btrfs gefunden datum=$(date "+%Y-%W") # für wöchentlich, alternativ für monatlich -> "+%Y-%m" [ `tail -n 1 /home/.snapshot.log | cut -d ' ' -f 2` = "r$datum" ] && exit; # Eintrag ist schon aktuell echo "Überprüfung am `date +%d.%m.%Y`:" > /home/.snapshot.log mount -o compress "UUID=$root_uuid" /mnt >/dev/null [ -d /mnt/@ ] && snap_root [ -d /mnt/@home ] && snap_home umount /mnt }}} Alternativ kann man auch das Paket '''apt-btrfs-snapshot''' verwenden. Allerdings wurden dabei Probleme wie hohe CPU-Auslastung bis hin zum Einfrieren des Systems beobachtet, sodass die oben beschriebene Methode über ein geeignetes Skript vorzuziehen ist. ==Empfohlene Maßnahmen== Alle Beschreibungen basieren auf dem Paket '''btrfs-tools''' bzw. '''btrfs-progs''', das in einer Standardinstallation bereits enthalten sind. Mit diesem Paket ist u.a. eine Reparatur des Filesystemes mit dem Befehl [:Befehle_Btrfs-Dateisystem#btrfsck:btrfsck] sowie eine erweiterte Prüfung mittels des `scrub`-Befehls möglich. Um den aktuellen Befehlsumfang zu den einzelnen Befehlen zu erhalten (Optionen, Ergänzungen), sollte man den jeweiligen Befehl im Terminal[1] ohne Option (entspricht der Option `--help`) abfragen - die [:man:Manpages] waren in der Vergangenheit teilweise fehlerhaft bzw. es fehlen Hinweise ganz! =Problembehebung= Als wichtiges Werkzeug für die Bearbeitung und auch zur Datenrettung wird das Anlegen eines USB-Sticks mit der Architektur des Basissystems (32- oder 64-Bit) empfohlen. Dazu kann man z.B. auf ein [:Desktop-Live-Medium:Ubuntu Live-Medium ] oder [:GParted/#Parted-Magic:Parted Magic] zurückgreifen. Beide beinhalten das Paket '''btrfs-tools''' bzw. '''btrfs-progs''' in der Version 0.19 oder neuer als Standardausstattung. =Links= == Intern == * [:Btrfs-Dateisystem:Das Btrfs Dateisystem] {Übersicht} ## * [:Archiv/Installieren_auf_Btrfs-Dateisystem:Installieren auf Btrfs-Dateisystem] ## * [:Archiv/Konvertierung_nach_Btrfs:Konvertierung nach Btrfs] * [:Befehle_Btrfs-Dateisystem:Befehle Btrfs-Dateisystem] ## * [:Archiv/Btrfs-Mountoptionen:Btrfs-Mountoptionen] == Extern == * [wikipedia:Btrfs:Btrfs-Dateisystem] * [ubuntu_doc:community/btrfs: Ubuntu-Help Btrfs] * [https://btrfs.wiki.kernel.org/ btrfs.wiki.kernel.org] {en} * [http://www.admin-magazin.de/Das-Heft/2009/04/Das-neue-Linux-Dateisystem-Btrfs-im-Detail Btrfs im Detail] {de} - Admin-Magazin, 04/2009 * [http://www.funtoo.org/wiki/BTRFS_Fun funtoo.org Btrfs] {en} #tag: System, Btrfs, Dateisystem