![为什么建议在 BTRFS 上的虚拟机映像中添加 nodatacow,但使用 QCOW2 磁盘就可以了?](https://linux22.com/image/224982/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%BB%BA%E8%AE%AE%E5%9C%A8%20BTRFS%20%E4%B8%8A%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%98%A0%E5%83%8F%E4%B8%AD%E6%B7%BB%E5%8A%A0%20nodatacow%EF%BC%8C%E4%BD%86%E4%BD%BF%E7%94%A8%20QCOW2%20%E7%A3%81%E7%9B%98%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%BA%86%EF%BC%9F.png)
据我所知,建议禁用 VM 映像的写入时复制,以避免 BTRFS 性能下降。然而,没有人建议不要使用qcow2
磁盘映像格式,尽管它是写磁盘上的副本。
这背后的原因是什么? BTRFS的CoW和qcow2
CoW在技术上有什么区别?
答案1
这是因为,由于 btrfs 的工作方式,文件内部的非顺序写入可能会导致大量碎片,而碎片通常会降低性能。这不仅适用于虚拟机映像,也适用于发生非顺序文件内写入的其他文件类型,例如数据库。
我不知道具体细节,但我想,由于 QCOW2 是专门为非顺序文件内写入而设计的,因此它专门为此目的进行了优化(“文件”在这里是虚拟磁盘;实际上是一样的)。