将btrfs放在lvm上有意义吗?


11

这是OpenSUSE Leap42。我有一台装有2个500 GB SATA HDD驱动器的计算机,为了加快速度,我在系统中放入了一个30 GB小型SSD驱动器。在安装过程中,HDD断开了连接,因为它们混淆了安装程序(和我)。一旦系统启动,我就很容易地将/ home目录交换为XFS逻辑卷(我主要使用LVM来轻松添加空间)。然后/ opt填满(chrome和botanicula),我想将其放在HDD上。因此,我创建了一个卷并使用BTRFS对其进行了格式化。经过一番@ subvolumes摸索后-fstab中的内容使我在BTRFS上阅读了我所需的内容-/ opt现在的大小为100 GB。

但是问题是:用btrfs格式化LVM卷有意义吗?本质上,它们都是体积处理系统。

为了说明起见,我粘贴了fstab(#注释显示了我的编辑)和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

答案之后: 谢谢,我现在了解主要区别。对我来说,LVM确实更适合于管理带有其上任何文件系统的空间,但是BTRFS应该用于特定于它的功能-主要是快照。在简单的家庭网络中使用,最好远离它。我在管理小型驱动器上的空间时遇到了太多麻烦,但我想大型驱动器上的空间也会被吞噬。

Answers:


11

也许这可以解释(顺便从btrfs Wiki)

btrfs中的子卷与LVM逻辑卷或ZFS子卷不同。对于LVM,逻辑卷本身就是一个块设备(例如,可以包含任何其他文件系统或容器,例如dm-crypt,MD RAID等)-btrfs并非如此。btrfs子卷不是块设备(不能将其视为一个块设备),可以将btrfs子卷视为POSIX文件命名空间。可以通过文件系统的顶级子卷访问此名称空间,也可以单独安装该名称空间。

另请参阅https://btrfs.wiki.kernel.org/index.php/FAQ

与分区,设备管理器和逻辑卷的交互

Btrfs有子卷,这是否意味着我不需要逻辑卷管理器,并且可以在原始分区上创建大型Btrfs文件系统?

这个问题没有一个答案。选择原始分区或LVM时,需要考虑以下问题:

  • 性能
    • 原始分区比逻辑卷快一点
    • btrfs确实在整个文件系统子卷上进行了写入优化(顺序写入),该算法将受益于该算法在多个LV上创建多个btrfs文件系统的效果,这意味着该算法可能无效(尽管内核仍会在块设备上进行一些优化)水平)
  • 在线调整设备上文件系统的大小和位置:LVM的pvmove命令允许文件系统在线时在设备之间移动
    • 脱机时只能将原始分区移动到其他启动柱面
    • 只有在分区后有可用空间的情况下,才能使原始分区变大,而LVM可以将LV扩展到卷组中任意位置的可用空间-并且它可以在线调整大小
  • 子卷/逻辑卷大小约束
    • LVM可方便地创建固定大小的逻辑卷(例如,每个用户10MB,每个虚拟机映像20GB,等等)
    • 尽管即将推出的qgroups功能将解决此问题,但子卷目前不强制执行此类严格的大小限制

....常见问题解答继续说明使用LVM + BTRFS有意义的情况


谢谢,我现在了解主要区别。LVM的确可以更好地管理具有顶部任何文件系统的空间,但是BTRFS应该用于特定于其的功能-主要是快照。在简单的家庭网络中使用,最好远离它。
r0berts
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.