Btrfs
Linux内核原生支持的现代写时复制文件系统,支持快照、子卷、透明压缩和多设备管理,已被多个主流Linux发行版采用为默认文件系统
时间轴 (近 90 天)
PostgreSQL 的 MVCC 机制、ZFS/Btrfs 文件系统的快照,以及部分云数据库服务将写时复制或类似存储分层技术作为底层支撑
Btrfs 已合入 Linux 内核主线多年,无需额外模块即可使用,并支持写时复制、快照、子卷和透明压缩
openSUSE 和 Fedora 等发行版已将 Btrfs 作为默认文件系统
写时复制文件系统对数据库这类频繁随机写入的负载会带来写放大问题,ZFS 和 Btrfs 都需要针对性调优
在 Btrfs 上可对数据库文件使用 chattr +C 关闭 CoW,在 ZFS 上可将 recordsize 调小以与数据库页大小对齐(如 PostgreSQL 常用 8KB)来缓解写放大
文件系统选型建议:数据完整性要求极高且可接受额外开销选 ZFS,希望开箱即用与内核集成选 Btrfs,愿意押注前沿设计并承担风险则关注 bcachefs
Bartosz Fenski 发布了一篇关于 Btrfs、ZFS 与 bcachefs 三者在真实工作负载下表现的对比文章
写时复制(CoW)机制天然比就地更新策略更容易产生碎片,因为每次修改都会将数据块分散到新位置
Btrfs文档建议对数据库文件和虚拟机镜像使用nodatacow属性来禁用CoW以减少碎片
Btrfs提供内置碎片整理命令btrfs filesystem defragment,XFS提供xfs_fsr工具进行在线碎片整理
还有 1 条时间轴事件
全部知识事实 (10)
PostgreSQL 的 MVCC 机制、ZFS/Btrfs 文件系统的快照,以及部分云数据库服务将写时复制或类似存储分层技术作为底层支撑
50%待验证openSUSE 和 Fedora 等发行版已将 Btrfs 作为默认文件系统
50%待验证Btrfs 已合入 Linux 内核主线多年,无需额外模块即可使用,并支持写时复制、快照、子卷和透明压缩
50%待验证写时复制文件系统对数据库这类频繁随机写入的负载会带来写放大问题,ZFS 和 Btrfs 都需要针对性调优
50%待验证在 Btrfs 上可对数据库文件使用 chattr +C 关闭 CoW,在 ZFS 上可将 recordsize 调小以与数据库页大小对齐(如 PostgreSQL 常用 8KB)来缓解写放大
50%待验证文件系统选型建议:数据完整性要求极高且可接受额外开销选 ZFS,希望开箱即用与内核集成选 Btrfs,愿意押注前沿设计并承担风险则关注 bcachefs
50%待验证写时复制(CoW)机制天然比就地更新策略更容易产生碎片,因为每次修改都会将数据块分散到新位置
50%待验证Btrfs文档建议对数据库文件和虚拟机镜像使用nodatacow属性来禁用CoW以减少碎片
50%待验证Btrfs提供内置碎片整理命令btrfs filesystem defragment,XFS提供xfs_fsr工具进行在线碎片整理
50%待验证Btrfs采用写时复制(CoW)机制,数据修改时写入新位置而非覆盖原位置,这天然比就地更新策略更容易产生碎片
50%