Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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!
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 rootflags=subvol=@ 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).
In der /etc/fstab Standardeintrag
Ein Standardeintrag unter einem Btrfs-Dateisystem sieht zur Zeit (Ubuntu 12.04) beispielhaft so aus:
UUID=4b033b5f-b1ec-4f9d-9cd0-8fdb700f0d89 / btrfs defaults,subvol=@ 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=@,compress,autodefrag,inode_cache 0 1
Ob diese Einträge nach einem Neustart auch in das System übernommen wurden, kann man im Terminal [1] abfragen mit:
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:
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.
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 Optionen zu beachten.
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 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. |
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 LABEL als auch eine Partition mit seiner /dev-Bezeichnung angegeben werden. | |
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! |
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. Achtung!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 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". |
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. 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. |
Copy On Write Dateisysteme (COW) haben viele Vorteile, aber auch Nachteile - z.B. 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 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=@. 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. |
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 fstrim ausgeführt werden. Achtung!Die Option |
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 Defragmentierung spielt bei einer SSD ohnehin keine Rolle, da die Adressen auf dem Speichermedium direkt angesprochen werden. | |
noacl | Keine ACL's benutzen. ACL ist die Abkürzung für Access Control 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 ACL in Verbindung mit Windows. Achtung!Das Abschalten der ACL's mit der Option |
Ausbaufähige AnleitungDieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern. Anmerkung: 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=<number> | Set this maximum amount of space that can be used to inline data within a btree leaf. |
alloc_start=<number> | Set where in the disk we start allocations. |
thread_pool=<number> | 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=<number> | 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 für ein Btrfs-Dateisystem | |
Option | Beschreibung |
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. |
Diese Revision wurde am 2. September 2016 10:08 von mal-zeit erstellt.