在 BTRFS 文件系统上托管虚拟磁盘映像的原因

And*_*nda 15 linux filesystems btrfs

我一直在阅读有关 BTRFS 和 ZFS 的文章,虽然我很欣赏 CoW 在托管重要文件时的好处,但我目前对以下困境感到困惑:

鉴于在托管受随机写入影响的大文件(例如 QCOW2、VDI 等)时,ZFS 和 BTRFS 似乎都会出现性能下降,为什么有人会使用 BTRFS 作为托管 VM 的首选 FS?

我知道在 o BTRFS 的情况下,您可以使用 chattr 或 nodatacow 挂载选项有选择地关闭 CoW,从而减少碎片和 CoW 造成的降级...

然而,据Redhat 称,这也“禁用了数据和元数据的校验和验证,导致数据完整性降低”。(除了失去的压缩和自然如此理想的 CoW)。

基于这一点,我问:为什么有人会选择 BTRFS 而不是 XFS 而不是 LVM 而不是 MD RAID?

Qua*_*dom 14

如果主要用例是存储 VM 映像或数据库,并且您不想接受潜在的性能问题以获取 btrfs 的数据完整性优势,那么我想不出您为什么要选择 btrfs 的任何理由通过 xfs 或 ext4。

当存储 VM 映像只是文件系统的众多用途之一时,仅对 VM 映像目录禁用写时复制(使用 chattr +C)最重要。这样就可以非常方便地为该单个目录禁用写时复制,但仍保留 btrfs 的所有优点用于文件系统的其余部分。


Cla*_*rus 5

BTRFS 具有不同的磁盘格式,在某些写入模式上将优于其他文件系统。特别是在改进元数据写入磁盘的方式上花费了大量精力,它支持一些高级功能,例如数据校验和、压缩和快照。对于大文件,提高元数据性能通常并不重要。

与 ZFS 相比,BTRFS 是一种更简单的解决方案,并且在 Linux 上得到更好的支持。主要的缺点是它不能很好地扩展(当添加大量磁盘时)并且没有相同的功能集。

与 XFS 相比,它将是一个性能较低的解决方案。即,将数据块写入磁盘需要更多的处理器时间,并且最大吞吐量将受到限制。这可以通过禁用校验和验证等措施在一定程度上得到缓解,但随后你失去了 BTRFS 优于 XFS 的主要优势,即改进的元数据信息。即校验和和不同的日志(在某些情况下可能更好)。

就写时复制 (COW) 支持而言,XFS 更喜欢性能而不是严格的 COW。即 XFS 在可扩展性方面具有非常好的元数据和日志功能,并且通常不会在写入时覆盖文件数据,但如果应用程序特别请求覆盖该数据,它将允许覆盖现有的磁盘块. 这在 VM 的情况下可能很好,因为您的磁盘分配最初可以是连续的,并且在这种情况下将在 VM 的生命周期内保持连续。


Tho*_*ing 5

使用 BTRFS,即使有nodatacow类似的情况,您仍然可以手动创建带有CoW行为的数据快照,因此速度很快并且不会消耗太多内存。此外,这些快照比使用 LVM 更灵活,因为您不需要在文件系统下保留文件系统不知道的空间,如果根本不需要也不能使用。与 ZFS 一样,可以通过网络发送和接收快照,这可能有助于您改进备份策略。因此,即使使用nodatacowBTRFS 似乎也优于使用 LVM。