[[Vorlage(archiviert)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Vorlage(Warnung,"Die nachfolgende Beschreibung basiert auf einer Kernelversion ab '''3.0.0-xx''', mit älteren Kernelversionen führen einige Mountoptionen zu Fehlern bis hin zum Einfrieren des Systems!")]] [[Inhaltsverzeichnis ()]] =Hinweise zur Anwendung= [[Bild(btrfs_logo.png, align=left)]] Nach einer regulären Installation sind die erforderlichen Optionen zum Einhängen der Datenträger in der Regel schon an den relevanten Stellen richtig eingebracht und es bedarf (vorerst) keiner weiteren Beachtung / Nachbereitung. Will man sein System optimieren oder muss man andere Maßnahmen im Fehlerfalle einleiten, dann sind die folgenden Mountoptionen wichtig und hilfreich - insbesondere die Kenntnis über die Anwendung und Auswirkung. In einer Standard-Installation sind bereits folgende Mountoptionen eingebracht: * In der '''/boot/grub/grub.cfg'''\\ Ein regulärer Menüeintrag unter einem Btrfs-Dateisystem enthält die beispielhafte Kernelzeile mit dem hervorgehobenen Zusatz:\\ {{{linux /@/boot/vmlinuz-3.2.0-18-generic root=UUID=4b033b5f-b1ec-4f9d-9cd0-8fdb700f0d89 ro [mark]rootflags=subvol=@[/mark] quiet splash vt.handoff=7}}}\\ Muss man hier weitere Optionen einbringen, so kann man diese durch Kommas getrennt hinter `subvol=@` vor dem eigentlichen Bootvorgang eintragen (siehe hierzu [:GRUB_2/Shell:GRUB 2 Shell]). * In der '''/etc/fstab''' Standardeintrag\\ Ein Standardeintrag unter einem Btrfs-Dateisystem sieht zur Zeit ([:Precise Pangolin:Ubuntu 12.04]) beispielhaft so aus:\\ {{{UUID=4b033b5f-b1ec-4f9d-9cd0-8fdb700f0d89 / btrfs [mark]defaults,subvol=@[/mark] 0 1}}}\\ Weitere Optionen können durch Kommas getrennt hinter oder zwischen dem markierten Teil eingebracht werden, wie im folgenden Beispiel: * In einer nachbearteiten '''/etc/fstab'''\\ aufgezeigt, die dann beispielhaft so aussehen könnte:\\ {{{UUID=4b033b5f-b1ec-4f9d-9cd0-8fdb700f0d89 / btrfs defaults,subvol=@[mark],compress,autodefrag,inode_cache[/mark] 0 1}}}\\ Ob diese Einträge nach einem Neustart auch in das System übernommen wurden, kann man im Terminal [1] abfragen mit:\\ [[Vorlage(Befehl,"dmesg | grep BTRFS")]]Als Ergebnis zu obigen beispielhaften Einträgen in der '''/etc/fstab''' ergibt sich:\\ {{{[ 6.676720] btrfs: use zlib compression [ 6.676728] btrfs: enabling auto defrag [ 6.676733] btrfs: enabling inode map caching}}}wobei für __jeden__ weiteren Eintrag einer Option (z.B. bei '''@home''') auch eine entsprechende Information ausgegeben wird. * Mounten im Terminal [1]\\ Muss man ein Laufwerk bzw. Unterlaufwerk in sein System einbinden, so kann eine bespielhafte Eingabe wie folgt aussehen:\\ [[Vorlage(Befehl,"sudo mount -o subvolid=256,compress /dev/sda5 /mnt")]]Damit wird von der Partition '''/dev/sda5''' das Unterlaufwerk (Subvolume) mit der SubvolumeID=256 direkt in das Verzeichnis '''/mnt''' eingebunden. =Mountoptionen= Für ein Btrfs-Dateisystem stehen die folgenden zusätzlichen Optionen zur Verfügung. Da diese Optionen noch in der Entwicklung sind, ist äußerste Vorsicht bei der Verwendung, insbesondere bei einer Kernelversion älter als '''3.0.0-xx''' angeraten. Die Verwendung der Standard-Optionen (siehe hierzu [:mount:]) kann weiter erfolgen - jedoch sind die Ausführungen unter [#Verbotene-Mountoptionen verbotene Optionen] zu beachten. {{{#!vorlage Tabelle <-2 rowclass="titel">Mountoptionen für ein Btrfs-Dateisystem +++ Option <:>Beschreibung +++ <^>`subvol=BEZEICHNUNG` Bindet dieses Unterlaufwerk anstelle des dazu gehörigen Basis-Laufwerkes direkt ein. +++ <^>`subvolid=ID` Ein mit dem Befehl [:Befehle_Btrfs-Dateisystem#btrfs-subvolume-list:btrfs subvolume list] ermittelte Laufwerks-ID sollte man anstelle der Bezeichnug für das Unterlaufwerk (Subvolume) eintragen, wenn dieses Unterlaufwerk nicht Bestandteil des Root-Verzeichnisses ist. +++ <^|2>`device=BEZEICHNUNG` Weist das System an, vor dem Mounten zu untersuchen, ob der angebene Datenträger auch wirklich ein mit Btrfs formatiertes Dateisystem enthält - anderenfalls wird das Laufwerk nicht mit eingebunden. +++ Als Bezeichnung kann sowohl eine [:UUID:], ein [:Labels:LABEL] als auch eine Partition mit seiner '''/dev'''-Bezeichnung angegeben werden. +++ <^|4 cellstyle="width: 160px; border-style: none;">`degraded` Diese Option wird benutzt, wenn in einem Btrfs-Dateisystem mehrere Partitionen / Laufwerke vereinigt wurden (typischerweise in einem RAID-Verbund) und eines dieser Laufwerke als fehlerhaft erkannt wurde. Mit dieser Option kann man +++ - sowohl das Booten mit ergänzender Kerneloption ermöglichen +++ - als auch am Desktop zur Korrektur benutzen +++ - und auftretende Fehlermeldungen ignorieren bzw. abstellen +++ <^>`user_subvol_rm_allowed` Diese Option ist erst ab Kernel 3.0.0-xx enthalten und legt fest, dass ein nicht privelegierter Benutzer das mit dieser Option verbundene Unterlaufwerk (Subvolume) löschen darf. Dieses sollte man nur mit Bedacht verwenden! +++ <-2 rowclass="trennzeile"> +++ <^>`compress` Aktiviert eine Kompression der Daten beim Speichern. Dieses erfolgt als Standard (kernelseitig) mit "zlib", solange keine andere Kompression vorgegeben wurde. +++ <^>`compress=zlib` "zlib" hat ein gutes Verhältnis der Komprimierung und ist die Standardeinstellung (auch) für ältere Kernel und ist sicher in der Anwendung in Kombination mit den '''btrfs-progs''' der Version 0.19. +++ <^>`compress=lzo` "lzo" weist ein schnelleres Verhalten bei der Komprimierung auf. Diese Komprimierung ist erst ab Kernel 2.6.39+ enthalten und muss gezielt als Option aufgerufen werden. [[Vorlage(Warnung,"[:GRUB_2:] kann bei dieser Art der Komprimierung die '''grub.cfg''' nicht auslesen und es führt zu einem nicht startfähigen System! Der Aufruf über einen Menüeintrag (aus einem anderen Betriebssystem - Multiboot) bzw. durch eine Eingabe in der [:GRUB_2/Shell#Kommandozeile:GRUB_2 Kommandozeile] erlaubt diese Art der Komprimierung. Die Anwendung mit älteren Kerneln als 3.0.0-xx oder eine ältere Version (0.19) der '''btrfs-progs''' führen zum Einfrieren des Systemes!")]] +++ <^>`compress-force` Aktiviert eine Komprimierung auch für Dateien, bei denen es (eigentlich) nichts zu komprimieren gibt (z.B Video-Dateien, ISO-Images). Es wird dabei vom Kernel her als Standard "zlib" verwendet. +++ <^>`compress-force=zlib` Diese gezielte Vorgabe ist erst mit Kernel ab 2.6.38+ möglich. +++ <^>`compress-force=lzo` Diese gezielte Vorgabe ist erst mit Kernel ab 2.6.38+ möglich, jedoch gelten auch hier die obigen Einschränkungen zu "lzo". +++ <-2 rowclass="trennzeile"> +++ <-2 > Die folgenden Optionen dürfen bei einem [:SSD:]-Laufwerk nicht verwendet werden. `inode_cache` und `space_cache` sind nur sinnvoll als Ergänzung der Optionen in der '''/etc/fstab''' bzw. beim Mounten im Terminal [1]. Die Maßnahme ist erst (fehlerfrei) ab Kernel 3.0.0-xx anwendbar. [[Vorlage(Hinweis,"Bei der Erstanwendung erfordert die Umstrukturierung, je nach vorhandener Datenmenge, eine erhebliche Zeit.")]] +++ <^>`inode_cache` Regelt die Verwendung des "Inode Cache". +++ <^>`space_cache` Btrfs speichert die Informationen zu den unbelegten Bereichen auf dem Datenträger ab, um die Zwischenspeicherung der Blöcke zu beschleunigen. Die Einrichtung erfolgt beim ersten Aufruf dieser Option und wird dauerhaft eingebracht. +++ <^>`clear_cache` Bereinigt alle Informationen vom `space_cache` beim nächsten Booten. +++ <^>`nospace_cache` Beendet die Maßnahme der Option `space_cache` und löscht beim nächsten Booten alle Einstellungen. +++ <-2 rowclass="trennzeile"> +++ <-2>[wikipedia:Copy-On-Write:Copy On Write] Dateisysteme (COW) haben viele Vorteile, aber auch Nachteile - z.B. [wikipedia:Fragmentierung:]. Btrfs legt die Daten beim ersten Schreiben einer Datei sequentiell ab, aber COW erfordert, dass geänderte Daten nicht einfach überschrieben werden, sondern in freie Speicherbereiche abgelegt werden. Dieses Verhalten ist für [:SSD:]-Laufwerke jedoch von Vorteil. Damit sind dann die Dateien nicht mehr zusammenhängend - also fragmentiert. Das hat dann ggf. auch noch Einfluss auf das Speichern anderer Dateien. Btrfs bietet die manuelle [:Befehle_Btrfs-Dateisystem#btrfs-filesystem-defragment:Defragmentierung] an, um diesem Problem zu begegnen. Auch kann man die Option `nodatacow` einsetzen, die das COW für Daten abschaltet (siehe weiter unten) oder man benutzt die Option `autodefrag`. +++ <^>`autodefrag` Diese Option, die bei [:SSD:]-Laufwerken nicht gesetzt werden darf, erfasst kleinere Schreibzugriffe für vorhandene Daten und sammelt diese online für eine automatische Defragmentierung, so dass diese im laufenden Betrieb erfolgen kann. Verwendet werden kann es ab Kernel 3.0.0-xx und wirkt nur auf eingehängte Unterlaufwerke (Subvolumes) - also als zusätzliche Option bei z.B. subvol=@. [[Vorlage(Hinweis,"Zur Zeit ist die automatische Defragmentierung nur für kleinere Dateien und Datenbanken geeignet bzw. sinnvoll (man arbeitet noch daran). Man sollte der aktuellen Arbeitsgeschwindigkeit, insbesondere bei \"Single-Core\" CPU's entsprechende Beachtung schenken und diese Option ggf. wieder abwählen!")]] +++ <^>`nodatacow` Diese Option, die bei [:SSD:]-Laufwerken nicht gesetzt werden darf, weist das System an, das COW auszusetzen und schließt dem Benutzer von der Möglichkeit aus, entweder die alte (noch nicht überschriebene) oder die schon korrigierte Datei zu benutzen. `datacow` sorgt dafür, dass jeweils nur partiell überarbeitete Dateien vorliegen. `nodatacow` beschleunigt das System minimal - mit der Gefahr, dass partiell überbeschriebene Dateien __auch__ nicht reparable Fehler enthalten können. Der Einsatz dieser Option ist erst, wenn überhaupt, bei sehr großen Dateien sinnvoll. +++ <-2 rowclass="trennzeile"> +++ <^|3>`ssd` Diese Option wird in der Regel für das Wurzelverzeichnis schon bei der Installation aktiviert - man sollte aber nach einer Installation überprüfen, ob das auch erfolgte (es gibt Ausnahmen). Auch die anderen Unterlaufwerke (Subvolumes), die auf einer SSD angelegt wurden, sollten entsprechend ergänzt werden. `ssd` optimiert einige für den Betrieb von Solid State Devices ([:SSD:]) unter Btrfs notwendige Einstellungen. Zu berücksichtigen ist, dass die `ssd`-Mountoption ''kein'' integriertes TRIM besitzt! Nach wie vor muss TRIM per [:SSD/TRIM#TRIM-per-Batched-Discard:fstrim] ausgeführt werden. [[Vorlage (Warnung, "Die Option `ssd` scheint in neueren Versionen (12.10+) nicht mehr zu existieren. Fügt man sie trotzdem ein, erhält man ein nicht-bootfähiges System, weil die Festplatten nicht gemountet werden können!")]] +++ Dies ist u.a. die Option `ssd_spread`, die veranlasst, dass die Daten __zusammenhängend__ in noch überwiegend freie Bereich auf der SSD geschrieben werden. Andererseits werden die Option `autodefrag` sowie `space_cache` abgeschaltet (dafür `nospace_cache` gesetzt). +++ Die [wikipedia:Defragmentierung:] spielt bei einer [:SSD:] ohnehin keine Rolle, da die Adressen auf dem Speichermedium direkt angesprochen werden. +++ <^>`noacl` Keine [:ACL:ACL's] benutzen. ACL ist die Abkürzung für '''A'''ccess '''C'''ontrol '''List''' und steht für einen Datensatz (als ein einheitliches Sicherheitsmerkmal), mit dem der Rechner darüber informiert wird, welche Ausnahmen bzw. Zugriffsrechte einzelne Benutzer oder Gruppen zu den spezifischen Systemobjekten wie Dateien und Verzeichnisse haben (welcher Benutzer lesen, schreiben oder ausführen darf). Siehe die vergleichbaren Hinweise zu [:Windows-Partitionen_einbinden/NTFS-3G#acl:ACL] in Verbindung mit Windows. [[Vorlage(Warnung,"Das Abschalten der ACL's mit der Option `noacl` sollte nur in begründeten Fällen benutzt werden, da dieses ein Sicherheitsrisiko darstellt.")]] +++ <-2 rowclass="trennzeile"> +++ <-2> Nachfolgend noch einige Optionen, die zur Zeit noch in der Entwicklung sind - deshalb wurde auch der Originaltext der Entwickler (vorerst) beibehalten. Es bedarf noch weiterer, intensiver Versuche bzw. qualifizierter Hinweise, wie sich diese Optionen auswirken! +++ <^>`nodatasum` Do not checksum data. Means bit flips and bit rot might go undetected, but allows for slightly faster operation since data checksum does not have to be calculated. On most modern CPUs this option does not result in any reasonable performance improvement. +++ <^>`nobarrier` Do not use device barriers. NOTE: Using this option greatly increases the chances of you experiencing data corruption during a power failure situation. This means full file-system corruption, and not just losing or corrupting data that was being written during a power cut or kernel panic +++ <^>`max_inline=` Set this maximum amount of space that can be used to inline data within a btree leaf. +++ <^>`alloc_start=` Set where in the disk we start allocations. +++ <^>`thread_pool=` The number of worker threads to allocate. +++ <^>`notreelog` This disables the tree logging used for fsync. +++ <^>`flushoncommit` Turns on '''ext3''' like behaviour, where all outstanding delayed allocations are flushed to disk when we commit the transaction. The `flushoncommit` mount option forces any data dirtied by a write in a prior transaction to commit as part of the current commit. This makes the committed state a fully consistent view of the file system from the application's perspective (i.e., it includes all completed file system operations). This was previously the behavior only when a snapshot is created. This is used by Ceph to ensure that completed writes make it to the platter along with the metadata operations they are bound to (by `BTRFS_IOC_TRANS_{START,END}`). +++ <^>`metadata_ratio=` Sets the number of data chunks that need to be allocated to force a metadata chunk allocation. By default this is set to 8. }}} ## ********************************************** =Verbotene Mountoptionen= {{{#!vorlage Tabelle <-2 rowclass="titel">Verbotene Mountoptionen für ein Btrfs-Dateisystem +++ Option <:>Beschreibung +++ <^|3>`discard` Das Setzen dieser Option bei einem Btrfs-Dateisystem führt zu einem Einfrieren des System - zumindest aber zu einem unkontrolliertem Verhalten. +++ Ein [:SSD:]-Laufwerk ist vom Konzept her schneller als ein normales Festplatten-Laufwerk. Es kann die Daten sehr schnell zur Verfügung stellen (Lesen) und auch sehr schnell die Daten ablegen - vorausgesetzt, es sind ausreichend freie Blöcke vorhanden. Ein Schreiben in einmal durch das Löschen freigegebene Speicherbereiche ist erst nach einer Rückstellung der Speicherzellen möglich. Hier kommt jetzt die Option `discard` ins Spiel, indem die Kernelroutine dem SSD-internem Controller zeitnah mitteilt, welche Blöcke gelöscht wurden und somit wieder auf den Nullzustand gebracht werden sollen. +++ Moderne SSD-Laufwerk-Controller sind so ausgelegt, dass diese auch ohne gezieltes Ansprechen seitens der Kernel diese Rückstellung sehr schnell abarbeiten und damit immer ausreichend Speicherplatz bereit stellen. So kann es sogar zu Verzögerungen kommen, wenn die Option `discard` von der Kernelroutine generiert wird. Man sollte also ausprobieren, ob diese Option das erwünschte Ergebnis liefert. +++ <^>`errors=remount-ro` Diese Option führt zu einem sofortigen Einfrieren des System - es ist danach nicht einmal das Starten im [:Recovery_Modus:] möglich. Eine Reparatur ist dann nur noch über ein externes System (Live-CD) durch editieren der '''/etc/fstab''' möglich, Schäden am Btrfs-Dateisystem wurden beim Setzen dieser Option nicht beobachtet. }}} =Links= * [:Btrfs-Dateisystem:Das Btrfs Dateisystem] {Übersicht} * [:FAQ_Btrfs-Dateisystem:Allgemeine Hinweise zum Btrfs Dateisystem] ## * [:Installieren_auf_Btrfs-Dateisystem:Installieren auf Btrfs-Dateisystem] ## * [:Konvertierung_nach_Btrfs:Konvertierung nach Btrfs] * [:Befehle_Btrfs-Dateisystem:Befehle Btrfs-Dateisystem] ## * [:Btrfs-Mountoptionen:Btrfs-Mountoptionen] ==Informationen== * [wikipedia:Btrfs:Btrfs-Dateisystem] * [ubuntu_doc:community/btrfs: Ubuntu-Help Btrfs] * [https://btrfs.wiki.kernel.org/ btrfs.wiki.kernel.org] {us} * [http://www.admin-magazin.de/Das-Heft/2009/04/Das-neue-Linux-Dateisystem-Btrfs-im-Detail Btrfs im Detail] {de} * [http://www.funtoo.org/wiki/BTRFS_Fun funtoo.org Btrfs] {en} ==Downloads== * [http://sourceforge.net/projects/partedmagic/ PartedMagic] {en} {dl} #tag: System, Btrfs, Dateisystem