拍摄安装有 nodatacow 的 BTRFS 卷的快照?

Mou*_*inX 9 filesystems btrfs snapshot

我计划在 BTRFS 格式的旋转磁盘上创建两个子卷。我计划使用 nodatacow 挂载这些子卷之一,以便我可以在那里有效地存储虚拟机映像和数据库文件。

使用 snapper 启用 nodatacow 挂载的子卷的快照有什么问题吗?

对不使用 COW 的卷进行快照时,我应该注意什么?

到目前为止,我发现的只是 BTRFS 常见问题中的一句话:

可以关闭数据块的写时复制吗?

是的,有几种方法可以做到这一点。

通过使用 nodatacow 挂载来禁用它。这也意味着无数据和。 如果拍摄快照,COW 仍可能发生。

Emm*_*osa 18

关于nodatacow选项,Ohad Rodeh 的题为BTRFS: The Linux B-tree Filesystem 的论文指出:

它取消数据块的写时复制,除非有快照。

创建使用nodatacow挂载的子卷的快照没有问题。但是由于需要 cow 来创建快照,因此当您在带有nodatacow的子卷上创建快照时,它基本上会忽略nodatacow;照常行事。

然而,这确实带来了一个有趣的问题:nodatacow是否被永久忽略?创建禁用 COW 的子卷的快照,是否重新启用 COW,直到再次手动禁用它?

幸运的是,没有。从 btrfs邮件列表...

在 NOCOW 文件中,快照后第一次写入文件块(4096 字节)必须仍然是 COW,因为快照将旧版本锁定到位,现在文件块已更改,因此它必须写入其他地方,尽管 NOCOW 是有序的保持快照原样。但是,该文件确实保留了 NOCOW 属性,并且对同一文件块的其他写入将就位......当然,直到下一个快照。

  • @Luciano 快照后对原始卷的第一次写入必须是 COWed。但是在同一卷上的后续写入将再次尊重 NOCOW。 (2认同)