Ist es sinnvoll, btrfs auf lvm zu setzen?

11

Dies ist OpenSUSE Leap 42. Ich habe einen Computer mit 2x 500 GB SATA- Festplattenlaufwerken und um dies zu beschleunigen, habe ich ein kleines 30 GB SSD- Laufwerk für das System eingesetzt. Während der Installation wurden die Festplatten getrennt, da sie den Installer (und mich) verwirrten. Sobald das System hochgefahren war, tauschte ich das Verzeichnis / home ganz einfach gegen ein logisches XFS-Volume aus (ich verwende LVM hauptsächlich, um einfach Speicherplatz hinzuzufügen). Dann füllte sich / opt (Chrom und Botanicula) und ich wollte das auf eine Lautstärke auf der Festplatte stellen. Also habe ich ein Volume erstellt und es mit BTRFS formatiert. Nach einigem @ subvolumesKopfkratzen - das in fstab hat mich dazu gebracht, mich über BTRFS zu informieren, habe ich getan, was ich brauchte - / opt ist jetzt 100 GB groß.

Die Frage ist jedoch: Ist es sinnvoll, ein LVM-Volume mit btrfs zu formatieren? Im Wesentlichen handelt es sich bei beiden um Volumenhandhabungssysteme.

Zur Veranschaulichung füge ich meine fstab (# Kommentare zeigen meine Änderungen an) und vgscan + lvscan Ausgabe ein:

~> cat /etc/fstab

UUID=1b511986-9c20-4885-8385-1cc03663201b swap swap defaults 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af / btrfs defaults 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /boot/grub2/i386-pc btrfs subvol=@/boot/grub2/i386-pc 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /boot/grub2/x86_64-efi bt

rfs subvol=@/boot/grub2/x86_64-efi 0 0
UUID=3e103686-52e9-44ac-963f-5a76177af56b /opt                 btrfs      defaults              0 0
#UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /opt btrfs subvol=@/opt 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /srv btrfs subvol=@/srv 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /tmp btrfs subvol=@/tmp 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /usr/local btrfs subvol=@/usr/local 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/crash btrfs subvol=@/var/crash 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/lib/libvirt/images btrfs subvol=@/var/lib/libvirt/images 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/lib/mailman btrfs subvol=@/var/lib/mailman 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/lib/mariadb btrfs subvol=@/var/lib/mariadb 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/lib/mysql btrfs subvol=@/var/lib/mysql 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/lib/named btrfs subvol=@/var/lib/named 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/lib/pgsql btrfs subvol=@/var/lib/pgsql 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/log btrfs subvol=@/var/log 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/opt btrfs subvol=@/var/opt 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/spool btrfs subvol=@/var/spool 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /var/tmp btrfs subvol=@/var/tmp 0 0
UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /.snapshots btrfs subvol=@/.snapshots 0 0
UUID=c4c4f819-a548-4881-b854-a0ed62e7952e /home     xfs defaults 1 2
#UUID=e14edbfa-ddc2-4f6d-9cba-245d828ba8aa /home                xfs        defaults              1 2

~>

# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "r0data" using metadata type lvm2
  Found volume group "r0sys" using metadata type lvm2

# lvscan
  ACTIVE            '/dev/r0data/homer' [699.53 GiB] inherit
  ACTIVE            '/dev/r0sys/optr' [100.00 GiB] inherit

Nach der Antwort: Danke, ich verstehe jetzt die wichtigsten Unterschiede. Für mich ist LVM in der Tat besser für die Verwaltung des Speicherplatzes mit allen darüber liegenden Dateisystemen, aber BTRFS sollte für spezifische Funktionen verwendet werden - hauptsächlich für Snapshots. Bei der Verwendung eines einfachen Heimnetzwerks ist es wahrscheinlich besser, sich davon fernzuhalten. Ich hatte zu viel Trauer damit, Speicherplatz auf einem kleinen Laufwerk zu verwalten, aber ich würde mir vorstellen, dass Speicherplatz auch auf großen Laufwerken weggefressen wird.

r0berts
quelle

Antworten:

11

Vielleicht erklärt dies (übrigens aus dem btrfs-Wiki)

Ein Subvolume in btrfs ist nicht dasselbe wie ein logisches LVM-Volume oder ein ZFS-Subvolume. Bei LVM ist ein logisches Volume ein eigenständiges Blockgerät (das beispielsweise ein anderes Dateisystem oder einen anderen Container wie dm-crypt, MD RAID usw. enthalten kann). Dies ist bei btrfs nicht der Fall. Ein btrfs-Subvolume ist kein Blockgerät (und kann nicht als eines behandelt werden). Ein btrfs-Subvolume kann als POSIX-Dateinamensraum betrachtet werden. Auf diesen Namespace kann über das Subvolume der obersten Ebene des Dateisystems zugegriffen werden, oder er kann eigenständig gemountet werden.

Siehe auch https://btrfs.wiki.kernel.org/index.php/FAQ

Interaktion mit Partitionen, Geräte-Managern und logischen Volumes

Btrfs hat Subvolumes. Bedeutet dies, dass ich keinen logischen Volume-Manager benötige und ein großes Btrfs-Dateisystem auf einer unformatierten Partition erstellen kann?

Es gibt keine einzige Antwort auf diese Frage. Hier sind die Punkte, über die Sie nachdenken sollten, wenn Sie Raw-Partitionen oder LVM auswählen:

  • Performance
    • Raw-Partitionen sind etwas schneller als logische Volumes
    • btrfs führt eine Schreiboptimierung (sequentielle Schreibvorgänge) über ein Dateisystem aus. Die Schreibleistung profitiert von diesem Algorithmus, der mehrere btrfs-Dateisysteme auf einem anderen LV erstellt. Dies bedeutet, dass der Algorithmus ineffektiv sein kann (obwohl der Kernel auf dem Blockgerät noch einige Optimierungen durchführt Niveau)
  • Online-Größenänderung und Verschiebung des Dateisystems zwischen Geräten: Mit dem Befehl pvmove von LVM können Dateisysteme zwischen Geräten wechseln, während sie online sind
    • Rohpartitionen können nur offline in einen anderen Startzylinder verschoben werden
    • Raw-Partitionen können nur vergrößert werden, wenn nach der Partition freier Speicherplatz vorhanden ist, während LVM einen LV auf freien Speicherplatz an einer beliebigen Stelle in der Datenträgergruppe erweitern kann - und die Größenänderung online vornehmen kann
  • Größenbeschränkungen für Subvolumes / logische Volumes
    • LVM eignet sich zum Erstellen logischer Volumes mit fester Größe (z. B. 10 MB für jeden Benutzer, 20 GB für jedes Image einer virtuellen Maschine usw.).
    • Subvolumes erzwingen derzeit keine derart strengen Größenbeschränkungen, obwohl die bevorstehende Funktion qgroups dieses Problem beheben wird

.... in den FAQ werden weiterhin die Szenarien erläutert, in denen LVM + BTRFS sinnvoll sind

Saint Crusty
quelle
Danke, ich verstehe jetzt die wichtigsten Unterschiede. LVM ist in der Tat besser für die Verwaltung des Speicherplatzes mit den darüber liegenden Dateisystemen geeignet. BTRFS sollte jedoch für spezifische Funktionen verwendet werden - hauptsächlich für Snapshots. Bei der Verwendung eines einfachen Heimnetzwerks ist es wahrscheinlich besser, sich davon fernzuhalten.
r0berts