Btrfs 文件系统上具有 No_COW 文件属性的文件是否保留数据校验和?

Btrfs 文件系统上具有 No_COW 文件属性的文件是否保留数据校验和?

假设我们不调用额外的挂载选项,例如诺达塔牛节点数据集。仅在以下时间操作文件属性lsattr级别,由/控制chattr

  1. 是否设置没有_COW在一个文件上(chattr +C)意味着禁用数据校验和?与挂载选项的行为方式相同(诺达塔牛暗示节点数据集)。
  2. 它可以仅对新写入的范围禁用校验和并保留读取现有的范围吗?

答案1

1. 是的,设置没有_COW空的文件确实意味着禁用它的数据校验和。

这是因为您无法自动更新数据和校验和——在写入过程中的某个时刻,它们必须不一致。这被认为是一件坏事。

环境没有_COW非空当前无法创建文件(参见#2)。

结论是,在每个文件的基础上禁用 CoW 也会丢失此类文件的校验和正确性。这对于 Btrfs 的新用户来说不是很明显,我认为必须添加到Btrfs 维基

2. 不,没有_COW不能设置在非空文件,因此chattr +C无法触发范围的校验和。

您只能在没有范围的文件上有效地设置 +C。

因此根据定义,该文件中不会有任何预先存在的校验和范围。


这个答案是基于以下内容的总结Btrfs 邮件列表讨论

相关内容