Czy sensowne jest umieszczenie btrfs na lvm?

12

To jest OpenSUSE Leap 42. Mam komputer z 2x 500 GB dyskami SATA HDD i aby go przyspieszyć, włożyłem do systemu mały dysk SSD 30 GB dla systemu. Podczas instalacji dyski twarde zostały odłączone, ponieważ dezorientowały one instalatora (i mnie). Po uruchomieniu systemu dość łatwo wymieniłem katalog / home na wolumin logiczny XFS (używam LVM przede wszystkim do łatwego dodawania miejsca). Następnie / opt wypełnione (chrom i botanicula) i chciałem umieścić to na woluminie na HDD. Więc utworzyłem wolumin i sformatowałem go za pomocą BTRFS. Po @ subvolumesdrapaniu głowy - w fstab przeczytałem na BTRFS, zrobiłem to, czego potrzebowałem - / opt ma teraz rozmiar 100 GB.

Ale pytanie brzmi: czy ma sens formatowanie woluminu LVM za pomocą btrfs? Zasadniczo oba są systemami obsługi woluminów.

Dla ilustracji wklejam mój plik fstab (# komentarze pokazują moje zmiany) i dane wyjściowe vgscan + lvscan:

~> 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

Po odpowiedzi: dzięki, rozumiem teraz najważniejsze różnice. Dla mnie LVM jest rzeczywiście lepszy do zarządzania przestrzenią z dowolnym systemem plików na nim, ale BTRFS powinien być używany do specyficznych dla niego funkcji - głównie migawek. W prostym użyciu sieci domowej prawdopodobnie lepiej trzymać się od niego z daleka. Miałem zbyt dużo żalu, zajmując miejsce na małym dysku, ale wyobrażam sobie, że miejsce zostanie zjedzone także na dużych dyskach.

r0berts
źródło

Odpowiedzi:

11

Może to wyjaśnia (nawiasem mówiąc, z wiki btrfs)

Podobjętość w btrfs nie jest tym samym co wolumin logiczny LVM lub podobjętość ZFS. W przypadku LVM wolumin logiczny sam w sobie jest urządzeniem blokowym (który może na przykład zawierać dowolny inny system plików lub kontener, taki jak dm-crypt, MD RAID itp.) - tak nie jest w przypadku btrfs. Podwolumna btrfs nie jest urządzeniem blokowym (i nie może być traktowana jako jedno), podwolumna btrfs może być traktowana jako przestrzeń nazw plików POSIX. Do tej przestrzeni nazw można uzyskać dostęp za pomocą podobjętości najwyższego poziomu systemu plików lub można ją zamontować osobno.

patrz także https://btrfs.wiki.kernel.org/index.php/FAQ

Interakcja z partycjami, menedżerami urządzeń i woluminami logicznymi

Btrfs ma podwoluminy, czy to oznacza, że ​​nie potrzebuję menedżera woluminów logicznych i mogę utworzyć duży system plików Btrfs na surowej partycji?

Nie ma jednej odpowiedzi na to pytanie. Oto kwestie do przemyślenia przy wyborze surowych partycji lub LVM:

  • Występ
    • surowe partycje są nieco szybsze niż woluminy logiczne
    • btrfs robi optymalizację zapisu (zapisy sekwencyjne) w całym systemie plików, zapisywanie objętości podrzędnych skorzysta z tego algorytmu, tworząc wiele systemów plików btrfs, każdy na innym LV, oznacza, że ​​algorytm może być nieskuteczny (chociaż jądro nadal będzie przeprowadzało pewną optymalizację na urządzeniu blokowym poziom)
  • Zmiana rozmiaru i relokacji systemu plików online na urządzenia: komenda pvmove z LVM umożliwia systemom plików przemieszczanie się między urządzeniami w trybie online
    • surowe partycje można przenieść tylko do innego cylindra początkowego w trybie offline
    • surowe partycje można powiększyć tylko wtedy, gdy po partycji jest wolne miejsce, podczas gdy LVM może rozszerzyć LV na wolne miejsce w dowolnym miejscu w grupie woluminów - i może dokonać zmiany rozmiaru online
  • ograniczenia objętościowe / objętości woluminu logicznego
    • LVM jest wygodny do tworzenia woluminów logicznych o stałym rozmiarze (np. 10 MB dla każdego użytkownika, 20 GB dla każdego obrazu maszyny wirtualnej itp.)
    • podwoluminy nie egzekwują obecnie takich sztywnych ograniczeń rozmiaru, chociaż nadchodząca funkcja qgroups rozwiąże ten problem

.... FAQ w dalszym ciągu wyjaśnia scenariusze, w których LVM + BTRFS ma sens

Saint Crusty
źródło
Dzięki, rozumiem teraz najważniejsze różnice. LVM jest rzeczywiście lepszy do zarządzania przestrzenią z dowolnym systemem plików na nim, ale BTRFS powinien być używany do specyficznych dla niego funkcji - głównie migawek. W prostym użyciu sieci domowej prawdopodobnie lepiej trzymać się od niego z daleka.
r0berts