btrfs 性能 并行访问

btrfs 性能 并行访问

我正在运行基于btrfs 3.12(Ubuntu 14.04 x64)的 Raid5(3x 500GB Sata2 HDD),VirutalBox VM 使用此卷。只要没有其他进程访问该卷,VM 就可以正常运行。但最近我也将一个较大的文件复制到该卷,我的 VM 几乎没有任何 iops。在 VM 中打开即使是小程序也需要几分钟。相比之下,复制过程的速度可以接受。此外,我曾经gzip将该大文件压缩到btrfs卷上,但虚拟盒似乎无法保持 VM 处于活动状态(虚拟机窗口变灰,没有响应)。

我发现使用 mount 选项noatime可以帮助提高性能,但由于我只访问卷上的两个文件(VM 的 VDI 和另一个文件),所以我认为这不会对情况产生太大的改善。

您能否向我解释一下这种行为并提出一些建议来提高虚拟机的吞吐量?

答案1

如果你在 BTRFS 卷上有磁盘映像,则可能需要关闭写时复制功能,至少对于您的 VM 磁盘映像而言。

奶牛在修改文件头数据之前,将更改的数据(连同其更改)复制到新空间。在虚拟机上,这意味着即使进行最基本的更改,也要移动一个巨大的文件。

如果将磁盘映像文件复制(而不是移动)到运行此命令的目录中,则可以关闭磁盘映像文件上的 CoW:

chattr +C directory

但这并不能保证沒有牛,因为您可以创建包含映像文件的 Btrfs 子卷快照(这将使其牛只一次)。

相关内容