Btrfs ist seit einigen Jahren für Linux verfügbar, sodass Sie vielleicht bereits damit vertraut sind. Wenn nicht, haben Sie möglicherweise Fragen dazu, insbesondere wenn Sie Fedora Workstation verwenden (Btrfs ist jetzt das Standarddateisystem). Dieser Artikel soll Ihnen dabei helfen, sich mit ihm und seinen erweiterten Funktionen wie Copy-on-Write und Prüfsummen vertraut zu machen.
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Btrfs, kurz für B-Tree Filesystem, ist eigentlich ein Dateisystem und ein Volume-Manager in einem. Es wird oft als Antwort auf ZFS gesehen, das 2005 in Solaris OS von Sun Microsystem eingeführt wurde und jetzt weitgehend durch eine Open-Source-Implementierung namens OpenZFS ersetzt wurde. Ubuntu Linux und FreeBSD verfügen oft über OpenZFS. Andere Beispiele mit ähnlichen Funktionen sind Stratis von Red Hat und der Linux Logical Volume Manager (LVM).
Einrichtung
Um Btrfs auszuprobieren, habe ich die Fedora 33 Workstation ISO-Datei heruntergeladen und in einer neuen virtuellen Maschine (VM) installiert. Der Installationsprozess hat sich gegenüber früheren Versionen nicht geändert. Ich habe keine Einstellungen angepasst, einschließlich der Laufwerkspartitionierung und -formatierung, um ein genaues „out of the box“-Setup für dieses Tutorial beizubehalten. Sobald die VM betriebsbereit war, habe ich den GNOME-Partitionseditor (GParted) installiert und ausgeführt, um eine schöne, fabrikneue Ansicht des Laufwerkslayouts zu erhalten.
Von diesem Punkt an unterscheidet es sich nicht wesentlich von dem, was Sie gewohnt sind. Tatsächlich können Sie das System normal verwenden und bemerken möglicherweise nicht einmal, dass das Dateisystem Btrfs ist. Mit dieser neuen Standardeinstellung können Sie jedoch mehrere coole Funktionen nutzen.
Untersuchen Sie das Btrfs-Dateisystem
Mir sind keine Btrfs-spezifischen grafischen Tools bekannt, obwohl einige seiner Funktionen in existierende Disk-Management-Tools integriert wurden.
Von der Kommandozeile aus können Sie sich das Btrfs-Format genauer ansehen:
# btrfs filesystem show
Label: 'fedora_localhost-live' uuid: f2bb02f9-5c41-4c91-8eae-827a801ee58a
Total devices 1 FS bytes used 6.36GiB
devid 1 size 10.41GiB used 8.02GiB path /dev/vda3
Btrfs-Labels ändern
Das erste, was mir auffiel, war das vom Installer gesetzte Dateisystem-Label:fedora_localhost-live
. Dies ist ungenau, da es sich jetzt um ein installiertes System und nicht mehr um eine Live-CD handelt. Also habe ich es mit dem btrfs filesystem label
geändert Befehl.
Das Ändern eines Btrfs-Dateisystemlabels ist einfach:
# btrfs filesystem label /
fedora_localhost-live
# btrfs filesystem label / fedora33workstation
# btrfs filesystem label /
fedora33workstation
Btrfs-Subvolumes verwalten
Ein Subvolume scheint ein Standardverzeichnis zu sein, das von Btrfs verwaltet werden kann. Auf meiner neuen Fedora 33 Workstation gibt es mehrere Subvolumes:
# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
Erstellen Sie ein neues Subvolume mit btrfs subvolume create
Befehl oder löschen Sie ein Subvolume mit btrfs subvolume delete
:
# btrfs subvolume create /opt/foo
Create subvolume '/opt/foo'
# btrfs subvolume list /
ID 256 gen 2884 top level 5 path home
ID 258 gen 2888 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 276 gen 2888 top level 258 path opt/foo
# btrfs subvolume delete /opt/foo
Delete subvolume (no-commit): '/opt/foo'
Subvolumes ermöglichen Aktionen wie das Festlegen eines Kontingents, das Erstellen eines Snapshots und das Replizieren auf andere Standorte und Hosts. Wie können Systemadministratoren diese Funktionen nutzen? Wie wäre es mit Benutzer-Home-Verzeichnissen?
Benutzer hinzufügen
Wie es seit alten Zeiten der Fall ist, erstellt das Hinzufügen eines neuen Benutzerkontos ein Home-Verzeichnis für das zu verwendende Konto:
# useradd student1
# getent passwd student1
student1:x:1006:1006::/home/student1:/bin/bash
# ls -l /home
drwx------. 1 student1 student1 80 Oct 29 00:21 student1
Traditionell ist das Home-Verzeichnis eines Benutzers ein Unterverzeichnis von /home
. Eigentum und Privilegien sind auf den Eigentümer zugeschnitten, es gibt jedoch keine speziellen Funktionen, um sie zu verwalten. Die Unternehmensserverumgebung ist ein weiteres Szenario. Häufig ist ein Verzeichnis für die Verwendung durch eine bestimmte Anwendung und ihren Benutzer reserviert. Sie können Btrfs nutzen, um diese Verzeichnisse zu verwalten und Einschränkungen darauf anzuwenden.
Um Btrfs-Subvolumes als Benutzerhomes unterzubringen, gibt es eine neue Option für useradd
Befehl:--btrfs-subvolume-home
. Obwohl die Manpages nicht aktualisiert wurden (zum jetzigen Zeitpunkt), können Sie die Option sehen, indem Sie useradd --help
ausführen . Durch Übergeben dieser Option beim Hinzufügen eines neuen Benutzers wird ein neues Btrfs-Subvolume erstellt. Es funktioniert genauso wie das -d
Option zum Erstellen eines regulären Verzeichnisses:
# useradd --btrfs-subvolume-home student2
Create subvolume '/home/student2'
Verifizieren Sie den Benutzer mit getent passwd student2
, und es wird normal erscheinen. Führen Sie jedoch das btrfs subvolume
aus Befehl, Subvolumes aufzulisten, und Sie werden etwas Interessantes sehen:das Home-Verzeichnis des neuen Benutzers!
# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 272 gen 2459 top level 256 path home/student2
Untersuchen Sie das zweite Szenario einer Unternehmensserverumgebung. Angenommen, Sie müssen einen WildFly-Server in /opt
installieren und stellen Sie eine Java-Webanwendung bereit. Oft besteht Ihr erster Schritt darin, eine wildfly
zu erstellen Benutzer. Verwenden Sie dazu den neuen --btrfs-subvolume-home
Option zusammen mit dem -b
Option zum Angeben von /opt
als Basisverzeichnis:
# useradd -b /opt --btrfs-subvolume-home wildfly
Create subvolume '/opt/wildfly'
Nun, die wildfly
Benutzer können sich in /opt/wildfly
anmelden und die Installation abschließen .
Einen Benutzer löschen
Wenn Sie einen Benutzer löschen, möchten Sie manchmal die Dateien dieses Benutzers und das Home-Verzeichnis gleichzeitig löschen. Der userdel
Befehl hat den -r
Option dafür, und es löscht auch Btrfs-Subvolumes:
# userdel -r student2
Delete subvolume (commit): '/home/student2'
Festplattennutzungsquoten festlegen
In einem meiner Informatikkurse führte ein Student ein C-Programm aus, das außer Kontrolle geriet und bis zum vollständigen /home
auf die Festplatte schrieb wurde auf dem Unix-System des Fachbereichs ausgefüllt! Der Server wurde nicht verfügbar, bis der Administrator den außer Kontrolle geratenen Prozess beendete und etwas Speicherplatz freigab. Dasselbe gilt für das obige Szenario; dass die Wildfly-Unternehmensanwendung eine wachsende Anzahl von Protokolldateien und Inhaltsspeichern für ihre Nutzer haben wird. Wie können Sie verhindern, dass ein Server stillsteht, weil die Festplatte voll ist? Das Festlegen von Beschränkungen für die Festplattennutzung ist eine gute Idee. Glücklicherweise unterstützt Btrfs dies durch Quoten.
Zum Konfigurieren von Kontingenten sind mehrere Schritte erforderlich. Der erste Schritt besteht darin, quota
zu aktivieren auf dem Btrfs-Dateisystem:
# btrfs quota enable /
Stellen Sie sicher, dass Sie die ID-Nummer der Quotengruppe (qgroup) jedes Subvolumes kennen, die in der btrfs subvolume list
angezeigt wird Befehl. Jedes Subvolume benötigt basierend auf seiner ID-Nummer eine zugeordnete qgroup. Dies kann individuell mit btrfs qgroup create
erfolgen , aber praktischerweise stellt das Btrfs-Wiki den folgenden Befehl bereit, um das Erstellen von qgroups für Subvolumes auf einem Dateisystem zu beschleunigen:
>btrfs subvolume list \<path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \<path>
In einem frisch installierten Fedora 33-Workstation-System arbeiten Sie auf dem Root-Dateisystempfad, /
. Ersetzen Sie \<path>
mit dem Root-Pfad:
# btrfs subvolume list / | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /
Führen Sie dann btrfs quota rescan
aus und werfen Sie einen Blick auf die neuen qgroups:
# btrfs quota rescan /
quota rescan started
# btrfs qgroup show /
qgroupid rfer excl
-------- ---- ----
0/5 16.00KiB 16.00KiB
0/256 272.04MiB 272.04MiB
0/258 6.08GiB 6.08GiB
0/265 16.00KiB 16.00KiB
0/271 16.00KiB 16.00KiB
0/273 16.00KiB 16.00KiB
Jetzt können Sie einer der qgroups ein Kontingent zuweisen, das wiederum auf das zugehörige Subvolume angewendet wird. Wenn Sie also die Nutzung des Home-Verzeichnisses von student3 auf 1 GB begrenzen möchten, verwenden Sie das btrfs qgroup limit
Befehl:
# btrfs qgroup limit 1G /home/student3
Bestätigen Sie das Kontingent für das spezifische Subvolume:
# btrfs qgroup show -reF /home/student3
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/271 16.00KiB 16.00KiB 1.00GiB none
Etwas andere Optionen zeigen alle qgroups und alle gesetzten Kontingente:
# btrfs qgroup show -re /
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/5 16.00KiB 16.00KiB none none
0/256 272.04MiB 272.04MiB none none
0/258 6.08GiB 6.08GiB none none
0/265 16.00KiB 16.00KiB none none
0/271 16.00KiB 16.00KiB 1.00GiB none
0/273 16.00KiB 16.00KiB none none
Weitere Funktionen
Diese Beispiele vermitteln eine Vorstellung von den Funktionen von Btrfs. Führen Sie btrfs --help
aus um die vollständige Liste der Befehle anzuzeigen. Es gibt viele andere bemerkenswerte Fähigkeiten; Snapshots und Senden/Empfangen sind beispielsweise zwei Dinge, die es wert sind, gelernt zu werden.
Abschließende Gedanken
Btrfs bietet viel Versprechen für die Bereitstellung eines erweiterten Dateisystem-Feature-Sets für Linux. Es war nicht das erste; Ich schreibe ZFS meine Einführung in diese Art von Dateisystem vor etwa 15 Jahren zu, aber Btrfs ist vollständig Open Source und nicht durch Patente belastet.
Ich empfehle, mit einer virtuellen Maschine oder einem Ersatzsystem zu beginnen, wenn Sie dieses Dateisystem erkunden möchten.
Ich würde gerne einige grafische Verwaltungsprogramme sehen, die für Systemadministratoren entwickelt wurden, die gerne in der GUI-Welt arbeiten. Glücklicherweise hat Btrfs eine starke Entwicklungsaktivität, wie die Entscheidung des Fedora-Projekts zeigt, es auf Workstation 33 zum Standard zu machen.