GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erste Schritte mit btrfs für Linux

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.


Linux
  1. Erste Schritte mit Linux-Firewalls

  2. 5 Tipps für den Einstieg in die Linux-Serversicherheit

  3. Erste Schritte mit socat, einem Mehrzweck-Relay-Tool für Linux

  4. Erste Schritte mit PostgreSQL unter Linux

  5. Korruptionssicheres SD-Karten-Dateisystem für Embedded Linux?

Vagrant-Tutorial – Erste Schritte mit Vagrant unter Linux

Erste Schritte mit Docker Compose unter Linux

Erste Schritte mit VirtualBox unter Linux – Teil 1

Erste Schritte mit Flutter auf dem Linux-Desktop

Erste Schritte mit Buildah zum Verwalten von Linux-Containern

Erste Schritte mit und Installation von Slack für Linux