假设我们不调用额外的挂载选项,例如诺达塔牛和节点数据集。仅在以下时间操作文件属性lsattr
级别,由/控制chattr
。
- 是否设置没有_COW在一个文件上(
chattr +C
)意味着禁用数据校验和?与挂载选项的行为方式相同(诺达塔牛暗示节点数据集)。 - 它可以仅对新写入的范围禁用校验和并保留读取现有的范围吗?
答案1
1. 是的,设置没有_COW在空的文件确实意味着禁用它的数据校验和。
这是因为您无法自动更新数据和校验和——在写入过程中的某个时刻,它们必须不一致。这被认为是一件坏事。
环境没有_COW在非空当前无法创建文件(参见#2)。
结论是,在每个文件的基础上禁用 CoW 也会丢失此类文件的校验和正确性。这对于 Btrfs 的新用户来说不是很明显,我认为必须添加到Btrfs 维基。
2. 不,没有_COW不能设置在非空文件,因此chattr +C
无法触发范围的校验和。
您只能在没有范围的文件上有效地设置 +C。
因此根据定义,该文件中不会有任何预先存在的校验和范围。
这个答案是基于以下内容的总结Btrfs 邮件列表讨论。