我们使用带快照的虚拟机作为我们支持和发布testingstream程的一部分,这使得testing客户端系统的补丁方便(快照,应用更改,testing,恢复,起泡,漂洗,重复(并重新应用更新和提交快照当更新启用时更改)),我正在尝试改进的设置。
我们所遇到的问题之一是数据库性能,我知道在快照虚拟机上总是会出现问题,因为与物理机器上的相同写入相比,每次写入需要多less额外的工作,但是我想提高这尽可能多。
在物理机器上,当运行SQL Server时,我们倾向于将事物分成三个独立的驱动器(或者三个独立的arrays,因为RAID1或10是我们的生产箱上的标准),作为经验法则将数据文件保存在一个主数据库日志文件另一个是tempdb(&OS)。
这似乎不可能与VirtualBox的快照,因为我找不到任何方式来分裂每个驱动器的快照通过不同的位置。 我可以在物理主机上的三个独立的驱动器上保留这三个虚拟磁盘,这样就可以使快照不被使用,但是对于快照,所有的写入活动(以及后续的受影响区域的读取活动)将集中在一个像所有的差异文件一样去驱动。 我可以将差异文件保存为一个单独的驱动器,以保持包含已提交活动的基本虚拟磁盘,这无疑会有所帮助,但不能将每个虚拟磁盘的IO完全分离到不同的物理驱动器。
tl; dr:有没有办法问VirtualBox(或其他的虚拟化解决scheme,因为我可以考虑在这一点上的替代品),以保持与它们相关的基础虚拟磁盘文件的快照差异文件,而不是全部进入一个共同的目录? 快照位置选项仅在VM级别可用,而不是虚拟磁盘级别,似乎不接受相对path。 或者,我们会把虚拟机保存在一个4个驱动器的RAID0物理卷上(当然还有更安全的arrays备份)呢?
你不要说VBox的服务器操作系统是什么。 但是,如果您使用Linux,则可以将虚拟磁盘放到LVM上并对其进行快照。
VirtualBox的替代品(我只在个人计算机上使用VBox,而不是在服务器上): – XEN(非常适合在Linux虚拟机操作系统下使用para-virtual linux) – KVM(如果你想linux作为虚拟服务器) – Hyper- )
另一种方法是:在testing之前做一个完整的备份,在testing之后做一个完整的备份 – 完全不需要快照。
或者:使用快照创build一个完整的克隆,然后删除快照…
快照后,我看了一个DOS虚拟机的.vbox文件:
该XML文件的硬盘部分看起来很有希望:
<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>
我的猜测是,你可以修改在“位置”给你的意愿快照(暂停或关机虚拟机)给出的path。 尝试一下…