Fedora33在其各种桌面版本中引入了一个新的默认文件系统Btrfs。Fedora多年来一直在逻辑卷管理器(LVM)卷之上使用ext4,引入Brtfs对Fedora来说是一个很大的变化。更改默认文件系统需要一个令人信服的理由。Btrfs是令人兴奋的下一代文件系统,而LVM上的ext4则成熟且稳定。本指南旨在探索每个的高级功能,以便更轻松地在Btrfs和LVM-ext4之间进行选择。结论先行最简单的建议是坚持使用默认值。Fedora33环境的全新安装默认为Btrfs,升级前的Fedora版本将继续使用原始安装设置,通常是LVM-ext4。对于现有的Fedora用户,获取Btrfs的最简单方法是全新安装。但是,全新安装比简单升级更具破坏性。除非有特定需要,否则此类中断可能是不必要的。Fedora开发团队已经仔细考虑了这两种默认设置,因此对任何一种选择都充满信心。其他文件系统呢?Linux系统有很多文件系统。当您添加卷管理器、加密方法和存储机制的组合时,该数字会爆炸式增长。那么,为什么要关心btrfs和LVM-ext4?这两个设置可能是Fedora用户最常见的设置。在Fedora11中,在使用ext3之前,LVM之上的ext4成为默认磁盘布局。现在Btrfs是Fedora33的默认设置,绝大多数现有用户会想知道他们是应该原地踏步还是继续前进。面对Fedora33的全新安装,有经验的Linux用户可能想知道是使用这个新文件系统,还是回退到他们熟悉的文件系统。因此,在众多可能的存储选项中,许多Fedora用户会想知道如何在Btrfs和LVM-ext4之间做出选择。两者之间的共性尽管这两个文件系统之间存在核心差异,但Btrfs和LVM-ext4实际上有很多共同点。两者都是成熟且经过充分测试的存储技术。从早期的FedoraCore开始就使用LVM,ext4在2009年成为Fedora11的默认设置。Btrfs于2009年合并到Linux主线内核中,Facebook广泛使用该文件系统。SUSELinuxEnterprise12在2014年将其作为默认文件系统,因此在生产环境中也有着较长的运行时间。这两个系统都很好地防止了意外断电导致的文件系统损坏,尽管它们的做法不同。他们支持的配置包括使用单磁盘设置和跨越多个设备,这两者都能够创建近乎即时的快照。有多种工具可以帮助管理这两个系统,包括命令行和图形界面。这两种解决方案在家用台式机和高端服务器上同样运行良好。LVM-ext4的优点ext4相对于LVM的结构ext4文件系统侧重于高性能和可扩展性,没有太多额外的附加功能。随着时间的推移,它可以有效地防止碎片化,并在碎片化发生时提供很好的工具。ext4坚如磐石,因为它建立在其前身的ext3文件系统之上,并带来了多年的系统内测试和错误修复。LVM-ext4环境中的大部分高级功能都来自LVM本身。LVM位于文件系统的“下方”,这意味着它支持任何文件系统。逻辑卷逻辑卷(LV)是通用块设备,因此虚拟机可以直接使用它们。这种灵活性允许每个逻辑卷使用适当的文件系统,并为每种情况提供适当的选项。这种分层方法也遵循了“小工具协同工作”的Unix理念。从硬件中抽象出来的卷组(VG)允许LVM创建灵活的逻辑卷。每个逻辑卷都来自同一个存储池,但有自己的设置。调整卷的大小比调整物理分区的大小要容易得多,因为对数据的有序放置没有限制。一个LVM物理卷(PV)可以是任意数量的分区,甚至可以在系统运行时在设备之间移动。LVM支持只读和读写快照,这使得从活动系统创建一致的备份变得容易。每个快照都有一个定义的大小,对源卷或快照卷的更改将占用其中的空间。或者,逻辑卷也可以是精简配置池的一部分。这允许快照自动使用池中的数据,而不是使用创建卷时定义的固定大小的块。具有多个磁盘驱动器的LVM当您有多个设备时,LVM真正发挥作用。它本机支持大多数RAID级别,每个逻辑卷可以有不同的RAID级别。LVM会自动为RAID配置选择合适的物理设备,也可以由用户直接指定。基本RAID支持包括用于性能的数据条带化(RAID0)和用于冗余的镜像(RAID1)。逻辑卷也可以使用高级设置,例如RAID5、RAID6和RAID10。LVMRAID支持是成熟的,因为LVM使用与mdadm使用相同的设备映射器(dm)和多设备(md)内核支持。对于具有快速和慢速驱动器的系统,逻辑卷也可以是缓存卷。一个典型的例子是SSD和传统磁盘驱动器的组合。缓存卷使用更快的驱动器来存储更频繁访问的数据(或作为写缓存),使用更慢的驱动器来存储大量数据。LVM中大量稳定的特性和ext4的可靠性在之前的使用中早已得到验证。当然,功能越多,越复杂。在配置LVM时找到正确的功能选项可能具有挑战性。对于单驱动器桌面系统,RAID和缓存卷等LVM功能不适用。但是,逻辑卷比物理分区更灵活,快照也很有用。对于正常的桌面使用,LVM的复杂性可能会阻碍从典型用户可能遇到的问题中恢复。Btrfs的优势Btrfs架构从前几代文件系统中吸取的教训指导了Btrfs内置功能的设计。与ext4不同,它可以直接跨越多个设备,因此它具有通常只有卷管理器才有的功能。它还具有Linux文件系统空间独有的功能(ZFS具有类似的功能集,但不要指望它会出现在Linux内核中)。Btrfs的主要功能,也许是最重要的功能是所有数据的校验和。校验和以及写时复制(COW)提供了在意外断电后确保文件系统完整性的关键方法。更独特的是,校验和可以检测数据本身的错误。静默数据损坏(有时称为比特腐烂)比大多数人意识到的更为普遍。如果没有主动验证,损坏最终可能会传播到所有可用的备份。这使用户没有有效的副本。通过透明地验证所有数据,Btrfs能够立即检测到任何此类损坏。启用正确的dup或raid选项后,文件系统还可以透明地修复损坏。写时复制也是Btrfs的一项基本功能,因为它对于提供文件系统完整性和即时子卷快照至关重要。从公共子卷创建快照后,快照会自动共享基础数据。或者,事后重复数据删除使用相同的技术来消除相同的数据块。通过使用cp的reflink选项,单个文件可以使用COW功能。Reflink副本对于复制大文件特别有用,例如虚拟机映像,这些文件随着时间的推移往往具有大部分相同的数据。Btrfs支持跨越多个设备而无需卷管理器。多设备支持为冗余提供数据镜像,为性能提供条带化。此外,实验性地支持更高级的RAID级别,例如RAID5和RAID6。与标准RAID设置不同,Btrfs的RAID1实际上允许奇数个设备。例如,它可以使用3个设备,即使它们的大小不同。所有RAID和dup选项都在文件系统级别指定。因此,不同的选项不能用于单个子卷。请注意,使用多设备RAID1选项意味着即使一个设备发生故障,卷中的所有数据都可用,奇偶校验功能保持数据本身的完整性。这超出了当今典型RAID设置所能提供的范围。附加功能Btrfs还支持快速简便的远程备份。子卷快照可以发送到远程系统进行存储。通过利用文件系统中固有的COW元数据,这些传输非常高效,只需发送来自先前发送的快照的增量更改。snapper等用户应用程序可以轻松管理这些快照。此外,Btrfs卷可以进行透明压缩,chattr+c可以标记单个文件或目录进行压缩。压缩不仅可以减少数据占用的空间,还可以通过减少写入操作量来帮助延长SSD的使用寿命。压缩当然会带来额外的CPU开销,但是有很多选项可以权衡。Btrfs集成了文件系统和卷管理器功能,这意味着整体维护比LVM-ext4更简单。诚然,这种集成不太灵活,但对于大多数台式机甚至服务器来说,设置绰绰有余。在LVMBtrfs上使用Btrfs可以就地转换ext3/ext4文件系统。就地转换意味着不需要将数据复制出来和复制回来。数据块本身甚至不需要修改。因此,对于现有的LVM-ext4系统,一种选择是保留LVM并简单地将ext4转换为Btrfs。虽然可行且受支持,但有几个原因表明它不是最佳选择。Btrfs的吸引力之一是与卷管理器集成的文件系统带来的更轻松的管理。如果在LVM之上运行,仍然需要为系统维护设置额外的卷管理器。同样,LVM设置通常有多个固定大小的逻辑卷和独立的文件系统。虽然Btrfs支持给定计算机上的多个卷,但许多不错的功能需要单个卷具有多个子卷。如果每个LVM卷都有一个单独的Btrfs卷,用户仍然需要手动管理固定大小的LVM卷。尽管缩小已安装的Btrfs文件系统的能力确实使处理固定大小卷的工作变得更加容易。有了在线缩容,就不需要启动实时镜像了。使用Btrfs的多设备支持时,必须仔细考虑逻辑卷的物理位置。对于Btrfs,每个逻辑卷都是一个单独的物理设备,如果不是这样,一些数据可用性功能可能会做出错误的决定。例如,对数据使用RAID1通常可以在单个驱动器发生故障时提供保护。如果实际逻辑卷在同一个物理设备上,则没有冗余。如果强烈需要某些特定的LVM功能,例如原始块设备或缓存逻辑卷,那么在LVM之上运行Btrfs是有意义的。在此配置中,Btrfs仍然提供其大部分优势,例如校验和和易于发送的增量快照。尽管使用LVM会产生一些操作开销,但Btrfs的这种开销并不比任何其他文件系统大。总结当试图在Btrfs和LVM-ext4之间做出选择时,没有一个正确的答案。每个用户都有独特的需求,同一个用户可能有不同需求的不同系统。查看每种配置的功能集,并确定是否有吸引您的功能。如果没有,坚持默认设置没有错。选择这两种设置都有充分的理由。
