我计划在 BTRFS 格式的旋转磁盘上创建两个子卷。我计划使用 nodatacow 挂载其中一个子卷,以便我可以在那里高效地存储虚拟机映像和数据库文件。
使用snapper启用nodatacow挂载的子卷的快照有什么问题吗?
为不使用 COW 的卷拍摄快照时应该注意什么?
到目前为止我找到的只是 BTRFS FAQ 中的一句话:
可以关闭数据块的写时复制吗?
是的,有几种方法可以做到这一点。
通过使用 nodatacow 安装来禁用它。这也意味着 nodatasum。 如果拍摄快照,COW 仍可能发生。
答案1
关于诺达塔牛选项,Ohad Rodeh 的论文标题为BTRFS:Linux B 树文件系统状态:
它取消数据块的写时复制,除非有快照。
创建挂载的子卷的快照没有问题诺达塔牛。但是由于需要cow来创建快照,因此当您使用以下命令在子卷上创建快照时诺达塔牛它基本上会忽略诺达塔牛;像平常一样行事。
然而,这确实提出了一个有趣的问题:诺达塔牛永久被忽视?在禁用 COW 的情况下创建子卷的快照是否会重新启用 COW,直到再次手动禁用它?
幸运的是,没有。来自 btrfs邮件列表...
在 NOCOW 文件上,快照后对文件块(4096 字节)的第一次写入必须仍然是 COW,因为快照将旧版本锁定到位,现在文件块已更改,因此必须将其写入其他地方,尽管 NOCOW 是有序的保持快照原样。但是,该文件确实保留了 NOCOW 属性,并且对同一文件块的其他写入将就地......当然,直到下一个快照。