在 VirtualBox VM 中的物理驱动器/阵列上分散 IO 负载

在 VirtualBox VM 中的物理驱动器/阵列上分散 IO 负载

我们将带有快照的虚拟机作为支持和发布测试流程的一部分,这使得测试客户端系统补丁变得非常方便(拍摄快照、应用更改、测试、恢复、起泡、冲洗、重复(并重新应用更新并在更新上线时提交快照的更改)),我正在尝试改进这种设置。

我们遇到的一个问题是数据库性能,我知道快照虚拟机上的数据库性能总是很差,因为与物理机器上的相同写入相比,每次写入都需要做大量额外的工作,但我希望尽可能地改善这一点。

在物理机器上,运行 SQL Server 时我们倾向于将内容分成三个独立的驱动器(或三个独立的阵列,因为 RAID1 或 10 是我们生产设备上的标准),根据经验法则,数据文件放在一个驱动器上,主数据库日志文件放在另一个驱动器上,tempdb(和操作系统)放在第三个驱动器上。

这似乎无法通过带有快照的 VirtualBox 实现,因为我找不到任何方法将每个驱动器的快照拆分到不同的位置。我可以在物理主机上的不同驱动器上保留三个虚拟磁盘,这会产生与未使用快照时相同的差异,但使用快照时,所有写入活动(以及受影响区域的后续读取活动)都将集中在一个驱动器上,因为所有差异文件都位于同一位置。我可以将差异文件保存在与包含已提交活动的基本虚拟磁盘的驱动器不同的驱动器上,这无疑会有所帮助,但不如能够将每个虚拟磁盘的 IO 完全分离到不同的物理驱动器上。

总结:有没有办法让 VirtualBox(或其他虚拟化解决方案,因为我此时可能会考虑替代方案)将快照的差异文件与它们相关的基本 vdisk 文件保存在一起,而不是将它们全部放入一个公共目录中?快照位置选项仅在 VM 级别可用,而不是 vdisk 级别,似乎不接受相对路径。或者我们最好将 VM 放在 4 驱动器 RAID0 物理卷上(当然,备份放在更安全的阵列上!)?

答案1

您没有说明 VBox 的服务器操作系统是什么。但如果您使用 Linux,则可以将虚拟磁盘放到 LVM 上并对其进行快照。

VirtualBox 的替代品(我只在 PC 上使用 VBox,不在服务器上使用): - XEN(非常适合使用带有 Linux 虚拟服务器操作系统的半虚拟 Linux) - KVM(如果您希望使用 Linux 作为虚拟服务器) - Hyper-V(Microsoft/Microsoft)

另一种选择:在测试之前进行完整备份,并在测试之后进行完整恢复 - 根本不进行快照。

或者:使用快照创建完整克隆,然后删除该快照...

答案2

我拍摄了 DOS VM 快照后查看了其 .vbox 文件:

该 XML 文件的 HardDisk-Section 看起来很有希望:

<HardDisks>
  <HardDisk uuid="{e3f3bbd7-1a6d-45b1-9c3b-1a22c12e97d7}"
            location="DOS.vdi"
            format="VDI"
            type="Normal">
  <HardDisk uuid="{b299df93-905b-4030-b66d-04828a194d7c}"
            location="Snapshots/{b299df93-905b-4030-b66d-04828a194d7c}.vdi"
            format="VDI"/>
  </HardDisk>
</HardDisks>

我的猜测是,您可以随意修改“位置”中给出的快照路径(使用暂停或关闭的虚拟机)。试试看...

相关内容