btrfs 不支持哪些 ext4 功能?

btrfs 不支持哪些 ext4 功能?

btrfs(通常发音为“更好的fs”)有很多 ext4 所缺乏的功能。

然而,比较btrfs与ext4的功能,btrfs缺少什么?1

换句话说,我能用 ext4 做什么而不能用 btrfs 做什么?

1 鉴于 ext4 的使用如此广泛,忽略 btrfs 的较少战场测试

答案1

btrfs 与 ext4 相比的缺点:

  1. btrfs 不支持坏块

    这意味着,如果您用完了 HDD 固件在有限数量的故障中保留的备用不可寻址扇区,则无法将块标记为坏块并在文件系统级别避免它们。

  2. 交换文件仅通过环回设备支持,这使事情变得复杂,因为使用这种方法似乎不可能从挂起状态恢复

  3. 计算可用空间非常棘手, 以至于...

  4. 即使 btrfs 自己的工具说有空间,您也可能会收到“设备上没有剩余空间”错误

答案2

正如评论中指出的,从内核 5.0 开始支持交换文件。尽管有一些限制,如所列https://btrfs.readthedocs.io/en/latest/btrfs-man5.html

交换文件支持

交换文件是文件支持的内存,系统使用它来临时卸载 RAM。从内核 5.0 开始就支持它。用于swapon(8)激活交换文件。 BTRFS 和 Linux 交换子系统的实现存在一些限制:

  • 文件系统 - 必须只是单个设备
  • 文件系统 - 必须只有单个数据配置文件
  • 交换文件 - 无法对包含的子卷进行快照
  • 交换文件 - 必须预先分配
  • 交换文件 - 必须是 nodatacow (即也是 nodatasum)
  • 交换文件 - 不得压缩

之前的回答:

一个主要缺点(特别是在 Ubuntu 在新安装上切换到交换文件时)是 butter FS(我喜欢这样发音)不支持交换文件,请参阅常见问题解答 - btrfs 支持交换文件吗? |维基百科

btrfs 支持交换文件吗?

目前没有。仅仅创建一个文件 NOCOW 并没有帮助,交换文件支持依赖于 btrfs 由于潜在损坏而故意不实现的一项功能。交换实现过去依赖于一些在 btrfs 中可能不成立的假设,例如交换文件中的块编号,而 btrfs 在多个设备的情况下具有不同的块编号映射。有一个新的 API 可用于将 swap 移植到 btrfs;欲了解更多详细信息,请查看项目思路#交换文件支持。

一种解决方法是通过循环设备挂载交换文件,尽管性能较差。

相关内容